master #17

Merged
asmeron merged 25 commits from YanTheKaller/ubl-settings-keyboard:master into master 6 months ago

@ -0,0 +1,377 @@
FONT;DESCRIPTION
Agafari-12;
Agafari-14;
Agafari-16;
aply16;
cp850-8x8;
cp850-8x14;
cp850-8x16;
cp865-8x8;
cp865-8x14;
cp865-8x16;
cp866-8x8;
cp866-8x14;
cp866-8x16;
cp1250;
cyr-sun16;Fonts that support Cyrillic characters
Cyr_a8x8;Fonts that support Cyrillic characters
Cyr_a8x14;Fonts that support Cyrillic characters
Cyr_a8x16;Fonts that support Cyrillic characters
default8x9;
default8x16;
drdos8x6;
drdos8x8;
drdos8x14;
drdos8x16;
eurlatgr;
GohaClassic-12;
GohaClassic-14;
GohaClassic-16;
Goha-12;
Goha-14;
Goha-16;
gr737a-8x8;
gr737a-9x14;
gr737a-9x16;
gr737b-8x11;
gr737b-9x16-medieval;
gr737c-8x6;
gr737c-8x7;
gr737c-8x8;
gr737c-8x14;
gr737c-8x16;
gr737d-8x16;
gr928a-8x14;
gr928a-8x16;
gr928b-8x14;
gr928b-8x16;
gr928-8x16-thin;
gr928-9x14;
gr928-9x16;
greek-polytonic;
iso01-12x22;
iso02-12x22;
iso07u-16;
koi8r.8x8;Fonts that support Cyrillic characters
koi8u_8x8;Fonts that support Cyrillic characters
koi8u_8x14;Fonts that support Cyrillic characters
koi8u_8x16;Fonts that support Cyrillic characters
koi8-14;Fonts that support Cyrillic characters
lat0-08;
lat0-10;
lat0-12;
lat0-14;
lat0-16;
lat0-sun16;
lat1-08;
lat1-10;
lat1-12;
lat1-14;
lat1-16;
lat2a-16;
lat2-08;
lat2-10;
lat2-12;
lat2-14;
lat2-16;
lat2-sun16;
Lat2-Terminus16;
lat4a-08;
lat4a-10;
lat4a-12;
lat4a-14;
lat4a-16+;
lat4a-16;
lat4a-19;
lat4-08;
lat4-10;
lat4-12;
lat4-14;
lat4-16+;
lat4-16;
lat4-19;
lat5-12;
lat5-14;
lat5-16;
lat7a-14;
lat7a-16;
lat7-14;
lat9u-08;
lat9u-10;
lat9u-12;
lat9u-14;
lat9u-16;
lat9v-08;
lat9v-10;
lat9v-12;
lat9v-14;
lat9v-16;
lat9w-08;
lat9w-10;
lat9w-12;
lat9w-14;
lat9w-16;
lat9-08;
lat9-10;
lat9-12;
lat9-14;
lat9-16;
LatArCyrHeb-08;Fonts that support Latin Arabic Cyrillic Hebrew characters
LatArCyrHeb-14;Fonts that support Latin Arabic Cyrillic Hebrew characters
LatArCyrHeb-16+;Fonts that support Latin Arabic Cyrillic Hebrew characters
LatArCyrHeb-16;Fonts that support Latin Arabic Cyrillic Hebrew characters
LatArCyrHeb-19;Fonts that support Latin Arabic Cyrillic Hebrew characters
latarcyrheb-sun16;Fonts that support Latin Arabic Cyrillic Hebrew characters
latarcyrheb-sun32;Fonts that support Latin Arabic Cyrillic Hebrew characters
LatGrkCyr-8x16;Fonts that support Latin Greek Cyrillic characters
LatGrkCyr-12x22;Fonts that support Latin Greek Cyrillic characters
LatKaCyrHeb-14;
pancyrillic.f16;
ruscii_8x8;Fonts that support Cyrillic characters
ruscii_8x16;Fonts that support Cyrillic characters
solar24x32;
sun12x22;
tcvn8x16;
ter-112n;Terminus fonts that support Cyrillic characters
ter-114b;
ter-114n;
ter-116b;
ter-116n;
ter-118b;
ter-118n;
ter-120b;
ter-120n;
ter-122b;
ter-122n;
ter-124b;
ter-124n;
ter-128b;
ter-128n;
ter-132b;
ter-132n;
ter-212n;
ter-214b;
ter-214n;
ter-216b;
ter-216n;
ter-218b;
ter-218n;
ter-220b;
ter-220n;
ter-222b;
ter-222n;
ter-224b;
ter-224n;
ter-228b;
ter-228n;
ter-232b;
ter-232n;
ter-712n;
ter-714b;
ter-714n;
ter-716b;
ter-716n;
ter-718b;
ter-718n;
ter-720b;
ter-720n;
ter-722b;
ter-722n;
ter-724b;
ter-724n;
ter-728b;
ter-728n;
ter-732b;
ter-732n;
ter-912n;
ter-914b;
ter-914n;
ter-916b;
ter-916n;
ter-918b;
ter-918n;
ter-920b;
ter-920n;
ter-922b;
ter-922n;
ter-924b;
ter-924n;
ter-928b;
ter-928n;
ter-932b;
ter-932n;
ter-c12n;
ter-c14b;
ter-c14n;
ter-c16b;
ter-c16n;
ter-c18b;
ter-c18n;
ter-c20b;
ter-c20n;
ter-c22b;
ter-c22n;
ter-c24b;
ter-c24n;
ter-c28b;
ter-c28n;
ter-c32b;
ter-c32n;
ter-d12n;
ter-d14b;
ter-d14n;
ter-d16b;
ter-d16n;
ter-d18b;
ter-d18n;
ter-d20b;
ter-d20n;
ter-d22b;
ter-d22n;
ter-d24b;
ter-d24n;
ter-d28b;
ter-d28n;
ter-d32b;
ter-d32n;
ter-g12n;
ter-g14b;
ter-g14n;
ter-g16b;
ter-g16n;
ter-g18b;
ter-g18n;
ter-g20b;
ter-g20n;
ter-g22b;
ter-g22n;
ter-g24b;
ter-g24n;
ter-g28b;
ter-g28n;
ter-g32b;
ter-g32n;
ter-h12n;
ter-h14b;
ter-h14n;
ter-h16b;
ter-h16n;
ter-h18b;
ter-h18n;
ter-h20b;
ter-h20n;
ter-h22b;
ter-h22n;
ter-h24b;
ter-h24n;
ter-h28b;
ter-h28n;
ter-h32b;
ter-h32n;
ter-i12n;
ter-i14b;
ter-i14n;
ter-i16b;
ter-i16n;
ter-i18b;
ter-i18n;
ter-i20b;
ter-i20n;
ter-i22b;
ter-i22n;
ter-i24b;
ter-i24n;
ter-i28b;
ter-i28n;
ter-i32b;
ter-i32n;
ter-k12n;
ter-k14b;
ter-k14n;
ter-k16b;
ter-k16n;
ter-k18b;
ter-k18n;
ter-k20b;
ter-k20n;
ter-k22b;
ter-k22n;
ter-k24b;
ter-k24n;
ter-k28b;
ter-k28n;
ter-k32b;
ter-k32n;
ter-m12n;
ter-m14b;
ter-m14n;
ter-m16b;
ter-m16n;
ter-m18b;
ter-m18n;
ter-m20b;
ter-m20n;
ter-m22b;
ter-m22n;
ter-m24b;
ter-m24n;
ter-m28b;
ter-m28n;
ter-m32b;
ter-m32n;
ter-p12n;
ter-p14b;
ter-p14n;
ter-p16b;
ter-p16n;
ter-p18b;
ter-p18n;
ter-p20b;
ter-p20n;
ter-p22b;
ter-p22n;
ter-p24b;
ter-p24n;
ter-p28b;
ter-p28n;
ter-p32b;
ter-p32n;
ter-u12n;
ter-u14b;
ter-u14n;
ter-u16b;
ter-u16n;
ter-u18b;
ter-u18n;
ter-u20b;
ter-u20n;
ter-u22b;
ter-u22n;
ter-u24b;
ter-u24n;
ter-u28b;
ter-u28n;
ter-u32b;
ter-u32n;
ter-v12n;
ter-v14b;
ter-v14n;
ter-v16b;
ter-v16n;
ter-v18b;
ter-v18n;
ter-v20b;
ter-v20n;
ter-v22b;
ter-v22n;
ter-v24b;
ter-v24n;
ter-v28b;
ter-v28n;
ter-v32b;
ter-v32n;
UniCyrExt_8x16;
UniCyr_8x8;
UniCyr_8x14;
UniCyr_8x16;
viscii10-8x16;
1 FONT DESCRIPTION
2 Agafari-12
3 Agafari-14
4 Agafari-16
5 aply16
6 cp850-8x8
7 cp850-8x14
8 cp850-8x16
9 cp865-8x8
10 cp865-8x14
11 cp865-8x16
12 cp866-8x8
13 cp866-8x14
14 cp866-8x16
15 cp1250
16 cyr-sun16 Fonts that support Cyrillic characters
17 Cyr_a8x8 Fonts that support Cyrillic characters
18 Cyr_a8x14 Fonts that support Cyrillic characters
19 Cyr_a8x16 Fonts that support Cyrillic characters
20 default8x9
21 default8x16
22 drdos8x6
23 drdos8x8
24 drdos8x14
25 drdos8x16
26 eurlatgr
27 GohaClassic-12
28 GohaClassic-14
29 GohaClassic-16
30 Goha-12
31 Goha-14
32 Goha-16
33 gr737a-8x8
34 gr737a-9x14
35 gr737a-9x16
36 gr737b-8x11
37 gr737b-9x16-medieval
38 gr737c-8x6
39 gr737c-8x7
40 gr737c-8x8
41 gr737c-8x14
42 gr737c-8x16
43 gr737d-8x16
44 gr928a-8x14
45 gr928a-8x16
46 gr928b-8x14
47 gr928b-8x16
48 gr928-8x16-thin
49 gr928-9x14
50 gr928-9x16
51 greek-polytonic
52 iso01-12x22
53 iso02-12x22
54 iso07u-16
55 koi8r.8x8 Fonts that support Cyrillic characters
56 koi8u_8x8 Fonts that support Cyrillic characters
57 koi8u_8x14 Fonts that support Cyrillic characters
58 koi8u_8x16 Fonts that support Cyrillic characters
59 koi8-14 Fonts that support Cyrillic characters
60 lat0-08
61 lat0-10
62 lat0-12
63 lat0-14
64 lat0-16
65 lat0-sun16
66 lat1-08
67 lat1-10
68 lat1-12
69 lat1-14
70 lat1-16
71 lat2a-16
72 lat2-08
73 lat2-10
74 lat2-12
75 lat2-14
76 lat2-16
77 lat2-sun16
78 Lat2-Terminus16
79 lat4a-08
80 lat4a-10
81 lat4a-12
82 lat4a-14
83 lat4a-16+
84 lat4a-16
85 lat4a-19
86 lat4-08
87 lat4-10
88 lat4-12
89 lat4-14
90 lat4-16+
91 lat4-16
92 lat4-19
93 lat5-12
94 lat5-14
95 lat5-16
96 lat7a-14
97 lat7a-16
98 lat7-14
99 lat9u-08
100 lat9u-10
101 lat9u-12
102 lat9u-14
103 lat9u-16
104 lat9v-08
105 lat9v-10
106 lat9v-12
107 lat9v-14
108 lat9v-16
109 lat9w-08
110 lat9w-10
111 lat9w-12
112 lat9w-14
113 lat9w-16
114 lat9-08
115 lat9-10
116 lat9-12
117 lat9-14
118 lat9-16
119 LatArCyrHeb-08 Fonts that support Latin Arabic Cyrillic Hebrew characters
120 LatArCyrHeb-14 Fonts that support Latin Arabic Cyrillic Hebrew characters
121 LatArCyrHeb-16+ Fonts that support Latin Arabic Cyrillic Hebrew characters
122 LatArCyrHeb-16 Fonts that support Latin Arabic Cyrillic Hebrew characters
123 LatArCyrHeb-19 Fonts that support Latin Arabic Cyrillic Hebrew characters
124 latarcyrheb-sun16 Fonts that support Latin Arabic Cyrillic Hebrew characters
125 latarcyrheb-sun32 Fonts that support Latin Arabic Cyrillic Hebrew characters
126 LatGrkCyr-8x16 Fonts that support Latin Greek Cyrillic characters
127 LatGrkCyr-12x22 Fonts that support Latin Greek Cyrillic characters
128 LatKaCyrHeb-14
129 pancyrillic.f16
130 ruscii_8x8 Fonts that support Cyrillic characters
131 ruscii_8x16 Fonts that support Cyrillic characters
132 solar24x32
133 sun12x22
134 tcvn8x16
135 ter-112n Terminus fonts that support Cyrillic characters
136 ter-114b
137 ter-114n
138 ter-116b
139 ter-116n
140 ter-118b
141 ter-118n
142 ter-120b
143 ter-120n
144 ter-122b
145 ter-122n
146 ter-124b
147 ter-124n
148 ter-128b
149 ter-128n
150 ter-132b
151 ter-132n
152 ter-212n
153 ter-214b
154 ter-214n
155 ter-216b
156 ter-216n
157 ter-218b
158 ter-218n
159 ter-220b
160 ter-220n
161 ter-222b
162 ter-222n
163 ter-224b
164 ter-224n
165 ter-228b
166 ter-228n
167 ter-232b
168 ter-232n
169 ter-712n
170 ter-714b
171 ter-714n
172 ter-716b
173 ter-716n
174 ter-718b
175 ter-718n
176 ter-720b
177 ter-720n
178 ter-722b
179 ter-722n
180 ter-724b
181 ter-724n
182 ter-728b
183 ter-728n
184 ter-732b
185 ter-732n
186 ter-912n
187 ter-914b
188 ter-914n
189 ter-916b
190 ter-916n
191 ter-918b
192 ter-918n
193 ter-920b
194 ter-920n
195 ter-922b
196 ter-922n
197 ter-924b
198 ter-924n
199 ter-928b
200 ter-928n
201 ter-932b
202 ter-932n
203 ter-c12n
204 ter-c14b
205 ter-c14n
206 ter-c16b
207 ter-c16n
208 ter-c18b
209 ter-c18n
210 ter-c20b
211 ter-c20n
212 ter-c22b
213 ter-c22n
214 ter-c24b
215 ter-c24n
216 ter-c28b
217 ter-c28n
218 ter-c32b
219 ter-c32n
220 ter-d12n
221 ter-d14b
222 ter-d14n
223 ter-d16b
224 ter-d16n
225 ter-d18b
226 ter-d18n
227 ter-d20b
228 ter-d20n
229 ter-d22b
230 ter-d22n
231 ter-d24b
232 ter-d24n
233 ter-d28b
234 ter-d28n
235 ter-d32b
236 ter-d32n
237 ter-g12n
238 ter-g14b
239 ter-g14n
240 ter-g16b
241 ter-g16n
242 ter-g18b
243 ter-g18n
244 ter-g20b
245 ter-g20n
246 ter-g22b
247 ter-g22n
248 ter-g24b
249 ter-g24n
250 ter-g28b
251 ter-g28n
252 ter-g32b
253 ter-g32n
254 ter-h12n
255 ter-h14b
256 ter-h14n
257 ter-h16b
258 ter-h16n
259 ter-h18b
260 ter-h18n
261 ter-h20b
262 ter-h20n
263 ter-h22b
264 ter-h22n
265 ter-h24b
266 ter-h24n
267 ter-h28b
268 ter-h28n
269 ter-h32b
270 ter-h32n
271 ter-i12n
272 ter-i14b
273 ter-i14n
274 ter-i16b
275 ter-i16n
276 ter-i18b
277 ter-i18n
278 ter-i20b
279 ter-i20n
280 ter-i22b
281 ter-i22n
282 ter-i24b
283 ter-i24n
284 ter-i28b
285 ter-i28n
286 ter-i32b
287 ter-i32n
288 ter-k12n
289 ter-k14b
290 ter-k14n
291 ter-k16b
292 ter-k16n
293 ter-k18b
294 ter-k18n
295 ter-k20b
296 ter-k20n
297 ter-k22b
298 ter-k22n
299 ter-k24b
300 ter-k24n
301 ter-k28b
302 ter-k28n
303 ter-k32b
304 ter-k32n
305 ter-m12n
306 ter-m14b
307 ter-m14n
308 ter-m16b
309 ter-m16n
310 ter-m18b
311 ter-m18n
312 ter-m20b
313 ter-m20n
314 ter-m22b
315 ter-m22n
316 ter-m24b
317 ter-m24n
318 ter-m28b
319 ter-m28n
320 ter-m32b
321 ter-m32n
322 ter-p12n
323 ter-p14b
324 ter-p14n
325 ter-p16b
326 ter-p16n
327 ter-p18b
328 ter-p18n
329 ter-p20b
330 ter-p20n
331 ter-p22b
332 ter-p22n
333 ter-p24b
334 ter-p24n
335 ter-p28b
336 ter-p28n
337 ter-p32b
338 ter-p32n
339 ter-u12n
340 ter-u14b
341 ter-u14n
342 ter-u16b
343 ter-u16n
344 ter-u18b
345 ter-u18n
346 ter-u20b
347 ter-u20n
348 ter-u22b
349 ter-u22n
350 ter-u24b
351 ter-u24n
352 ter-u28b
353 ter-u28n
354 ter-u32b
355 ter-u32n
356 ter-v12n
357 ter-v14b
358 ter-v14n
359 ter-v16b
360 ter-v16n
361 ter-v18b
362 ter-v18n
363 ter-v20b
364 ter-v20n
365 ter-v22b
366 ter-v22n
367 ter-v24b
368 ter-v24n
369 ter-v28b
370 ter-v28n
371 ter-v32b
372 ter-v32n
373 UniCyrExt_8x16
374 UniCyr_8x8
375 UniCyr_8x14
376 UniCyr_8x16
377 viscii10-8x16

@ -4,11 +4,14 @@
<file>ubl-settings-keyboard.glade</file>
<file>ubl-settings-keyboard-layouts.glade</file>
<file>ubl-settings-keyboard-options.glade</file>
<file>ubl-settings-keyboard-keymaps.glade</file>
<file>ubl-settings-keyboard-font.glade</file>
</gresource>
<gresource prefix="/com/ublinux/css">
<file>ubl-settings-keyboard.css</file>
</gresource>
<gresource prefix="/com/ublinux/csv">
<file>layouts.csv</file>
<file>keymap-list.csv</file>
<file>font-list.csv</file>
</gresource>
</gresources>

@ -0,0 +1,248 @@
KEYMAP;GROUP;DESCRIPTION
3l;;
adnw;;
amiga-de;amiga;
amiga-us;amiga;
ANSI-dvorak;;
apple-a1048-sv;mac;
apple-a1243-sv-fn-reverse;mac;
apple-a1243-sv;mac;
apple-internal-0x0253-sv-fn-reverse;mac;
apple-internal-0x0253-sv;mac;
applkey;;
atari-de;atari;
atari-se;atari;
atari-uk-falcon;atari;
atari-us;atari;
azerty;;
backspace;;
bashkir;;
be-latin1;;
bg-cp855;;
bg-cp1251;;
bg_bds-cp1251;;
bg_bds-utf8;;
bg_pho-cp1251;;
bg_pho-utf8;;
bone;;
br-abnt2;;
br-abnt;;
br-latin1-abnt2;;
br-latin1-us;;
bywin-cp1251;;
by-cp1251;;
by;;
carpalx-full;;
carpalx;;
ca;;
cf;;
colemak;;
croat;;
ctrl;;
cz-cp1250;;
cz-lat2-prog;;
cz-lat2;;
cz-qwertz;;
cz-us-qwertz;;
cz;;
defkeymap;;
defkeymap_V1.0;;
de-latin1-nodeadkeys;;
de-latin1;;
de-mobii;;
de;;
de_alt_UTF-8;;
de_CH-latin1;;
dk-latin1;;
dk;;
dvorak-ca-fr;;
dvorak-de;;
dvorak-es;;
dvorak-fr;;
dvorak-la;;
dvorak-l;;
dvorak-no;;
dvorak-programmer;;
dvorak-ru;;
dvorak-r;;
dvorak-sv-a1;;
dvorak-sv-a5;;
dvorak-ukp;;
dvorak-uk;;
dvorak;;
emacs2;;
emacs;;
en;pine;
es-cp850;;
es-olpc;;
es;;
et-nodeadkeys;;
et;;
euro1;;
euro2;;
euro;;
fa;qwerty;Persian ISIRI-2901 Unicode console. Toggled by Shift+AltGr key.
fi;;
fr-bepo-latin9;;
fr-bepo;;
fr-latin1;;
fr-latin9;;
fr-pc;;
fr;;
fr_CH-latin1;;
fr_CH;;
gr-pc;;
gr;;
hu101;;
hu;;
ie;;
il-heb;;
il-phonetic;;
il;;
is-latin1-us;;
is-latin1;;
it2;;
it-ibm;;
it;;
jp106;;
kazakh;;
keypad;;
koy;;
kyrgyz;;
ky_alt_sh-UTF-8;;
la-latin1;;
lt.baltic;;
lt.l4;;
lt;;
lv-tilde;;
lv;;
mac-be;mac;
mac-de-latin1-nodeadkeys;mac;
mac-de-latin1;mac;
mac-de_CH;mac;
mac-dk-latin1;mac;
mac-dvorak;mac;
mac-es;mac;
mac-euro2;mac;
mac-euro;mac;
mac-fi-latin1;mac;
mac-fr-legacy;mac;
mac-fr;mac;
mac-fr_CH-latin1;mac;
mac-it;mac;
mac-no-latin1;mac;
mac-pl;mac;
mac-pt-latin1;mac;
mac-se;mac;
mac-template;mac;
mac-uk;mac;
mac-us;mac;
mk0;;
mk-cp1251;;
mk-utf;;
mk;;
mod-dh-ansi-us-awing;;
mod-dh-ansi-us-fatz-wide;;
mod-dh-ansi-us-fatz;;
mod-dh-ansi-us-wide;;
mod-dh-ansi-us;;
mod-dh-iso-uk-wide;;
mod-dh-iso-uk;;
mod-dh-iso-us-wide;;
mod-dh-iso-us;;
mod-dh-matrix-us;;
neoqwertz;;
neo;;
nl2;;
nl;;
no-latin1;;
no;;
pc110;;
pl1;;
pl2;;
pl3;;
pl4;;
pl;;
pt-latin1;;
pt-latin9;;
pt-olpc;;
ro;;
ro_std;;
ro_win;;
ru1;qwerty;
ru2;qwerty;
ru3;qwerty;
ru4;qwerty;
ruwin_alt-CP1251;qwerty;
ruwin_alt-KOI8-R;qwerty;
ruwin_alt-UTF-8;qwerty;
ruwin_alt_sh-UTF-8;qwerty;
ruwin_cplk-CP1251;qwerty;
ruwin_cplk-KOI8-R;qwerty;
ruwin_cplk-UTF-8;qwerty;
ruwin_ctrl-CP1251;qwerty;
ruwin_ctrl-KOI8-R;qwerty;
ruwin_ctrl-UTF-8;qwerty;
ruwin_ct_sh-CP1251;qwerty;
ruwin_ct_sh-KOI8-R;qwerty;
ruwin_ct_sh-UTF-8;qwerty;
ru-cp1251;qwerty;Russian CP1251 Cyrillic keyboard.map. "Cyrillic" mode is toggled by Right_Ctrl key and shifted by AltGr key.
ru-ms;qwerty;
ru-yawerty;qwerty;
ru;qwerty;Only Russian UTF-8 keymap (GOST 19768-74) for a 102 key keyboard. Both Ctrl+Shift is used to change rus/lat.
ru_win;qwerty;
se-fi-ir209;;
se-fi-lat6;;
se-ir209;;
se-lat6;;
sg-latin1-lk450;;
sg-latin1;;
sg;;
sk-prog-qwerty;;
sk-prog-qwertz;;
sk-qwerty;;
sk-qwertz;;
slovene;;
sr-cy;;
sr-latin;;
sundvorak;sun;
sunkeymap;sun;
sunt4-es;sun;
sunt4-fi-latin1;sun;
sunt4-no-latin1;sun;
sunt5-cz-us;sun;
sunt5-de-latin1;sun;
sunt5-es;sun;
sunt5-fi-latin1;sun;
sunt5-fr-latin1;sun;
sunt5-ru;sun;
sunt5-uk;sun;
sunt5-us-cz;sun;
sunt6-uk;sun;
sun-pl-altgraph;sun;
sun-pl;sun;
sv-latin1;;
tj_alt-UTF8;;
tralt;;
trf-fgGIod;;
trf;;
trq;;
tr_f-latin5;;
tr_q-latin5;;
ttwin_alt-UTF-8;;
ttwin_cplk-UTF-8;;
ttwin_ctrl-UTF-8;;
ttwin_ct_sh-UTF-8;;
ua-cp1251;;
ua-utf-ws;;
ua-utf;;
ua-ws;;
ua;;
uk;;
unicode;;
us1;;
us-acentos;;
us;;
wangbe2;;
wangbe;;
windowkeys;;
Can't render this file because it contains an unexpected character in line 189 and column 56.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,578 @@
# Language translations for ubl-settings-keyboard package.
# Copyright (C) 2022, UBTech LLC
# This file is distributed under the same license as the ubl-settings-keyboard package.
# UBLinux Team <info@ublinux.com>, 2022
#
#, fuzzy
msgid ""
msgstr """Project-Id-Version: ubl-settings-keyboard 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-22 16:12+0600\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Generic 86-key PC"
msgstr ""
msgid "Generic 101-key PC"
msgstr ""
msgid "Generic 102-key PC"
msgstr ""
msgid "Generic 104-key PC"
msgstr ""
msgid "Generic 104-key PC with L-shaped Enter key"
msgstr ""
msgid "Generic 105-key PC"
msgstr ""
msgid "A4Tech KB-21"
msgstr ""
msgid "A4Tech KBS-8"
msgstr ""
msgid "A4Tech Wireless Desktop RFKB-23"
msgstr ""
msgid "Acer AirKey V"
msgstr ""
msgid "Acer C300"
msgstr ""
msgid "Acer Ferrari 4000"
msgstr ""
msgid "Acer laptop"
msgstr ""
msgid "Advance Scorpius KI"
msgstr ""
msgid "Apple"
msgstr ""
msgid "Apple Aluminium (ANSI)"
msgstr ""
msgid "Apple Aluminium (ISO)"
msgstr ""
msgid "Apple Aluminium (JIS)"
msgstr ""
msgid "Asus laptop"
msgstr ""
msgid "Azona RF2300 Wireless Internet"
msgstr ""
msgid "BenQ X-Touch"
msgstr ""
msgid "BenQ X-Touch 730"
msgstr ""
msgid "BenQ X-Touch 800"
msgstr ""
msgid "Brother Internet"
msgstr ""
msgid "BTC 5090"
msgstr ""
msgid "BTC 5113RF Multimedia"
msgstr ""
msgid "BTC 5126T"
msgstr ""
msgid "BTC 6301URF"
msgstr ""
msgid "BTC 9000"
msgstr ""
msgid "BTC 9000A"
msgstr ""
msgid "BTC 9001AH"
msgstr ""
msgid "BTC 9019U"
msgstr ""
msgid "BTC 9116U Mini Wireless Internet and Gaming"
msgstr ""
msgid "Cherry Blue Line CyBo@rd"
msgstr ""
msgid "Cherry Blue Line CyBo@rd (alt.)"
msgstr ""
msgid "Cherry B.UNLIMITED"
msgstr ""
msgid "Cherry CyBo@rd USB-Hub"
msgstr ""
msgid "Cherry CyMotion Expert"
msgstr ""
msgid "Cherry CyMotion Master Linux"
msgstr ""
msgid "Cherry CyMotion Master XPress"
msgstr ""
msgid "Chicony Internet"
msgstr ""
msgid "Chicony KB-9885"
msgstr ""
msgid "Chicony KU-0108"
msgstr ""
msgid "Chicony KU-0420"
msgstr ""
msgid "Chromebook"
msgstr ""
msgid "Classmate PC"
msgstr ""
msgid "Compal FL90"
msgstr ""
msgid "Compaq Armada laptop"
msgstr ""
msgid "Compaq Easy Access"
msgstr ""
msgid "Compaq Internet (7 keys)"
msgstr ""
msgid "Compaq Internet (13 keys)"
msgstr ""
msgid "Compaq Internet (18 keys)"
msgstr ""
msgid "Compaq iPaq"
msgstr ""
msgid "Compaq Presario laptop"
msgstr ""
msgid "Creative Desktop Wireless 7000"
msgstr ""
msgid "Dell"
msgstr ""
msgid "Dell 101-key PC"
msgstr ""
msgid "Dell Latitude laptop"
msgstr ""
msgid "Dell Inspiron 6000/8000 laptop"
msgstr ""
msgid "Dell Precision M laptop"
msgstr ""
msgid "Dell Precision M65 laptop"
msgstr ""
msgid "Dell SK-8125"
msgstr ""
msgid "Dell SK-8135"
msgstr ""
msgid "Dell USB Multimedia"
msgstr ""
msgid "Dexxa Wireless Desktop"
msgstr ""
msgid "Diamond 9801/9802"
msgstr ""
msgid "DTK2000"
msgstr ""
msgid "eMachines m6800 laptop"
msgstr ""
msgid "Ennyah DKB-1008"
msgstr ""
msgid "Everex STEPnote"
msgstr ""
msgid "Fujitsu-Siemens Amilo laptop"
msgstr ""
msgid "Genius Comfy KB-16M/Multimedia KWD-910"
msgstr ""
msgid "Genius Comfy KB-12e"
msgstr ""
msgid "Genius Comfy KB-21e-Scroll"
msgstr ""
msgid "Genius KB-19e NB"
msgstr ""
msgid "Genius KKB-2050HS"
msgstr ""
msgid "Gyration"
msgstr ""
msgid "Happy Hacking"
msgstr ""
msgid "Happy Hacking for Mac"
msgstr ""
msgid "Hewlett-Packard Internet"
msgstr ""
msgid "Hewlett-Packard Mini 110 laptop"
msgstr ""
msgid "Hewlett-Packard nx9020"
msgstr ""
msgid "Hewlett-Packard Omnibook 500"
msgstr ""
msgid "Hewlett-Packard Omnibook 500 FA"
msgstr ""
msgid "Hewlett-Packard Omnibook 6000/6100"
msgstr ""
msgid "Hewlett-Packard Omnibook XE3 GC"
msgstr ""
msgid "Hewlett-Packard Omnibook XE3 GF"
msgstr ""
msgid "Hewlett-Packard Omnibook XT1000"
msgstr ""
msgid "Hewlett-Packard Pavilion dv5"
msgstr ""
msgid "Hewlett-Packard Pavilion ZT1100"
msgstr ""
msgid "Hewlett-Packard SK-2501 Multimedia"
msgstr ""
msgid "Honeywell Euroboard"
msgstr ""
msgid "IBM Rapid Access"
msgstr ""
msgid "IBM Rapid Access II"
msgstr ""
msgid "IBM Space Saver"
msgstr ""
msgid "IBM ThinkPad 560Z/600/600E/A22E"
msgstr ""
msgid "IBM ThinkPad R60/T60/R61/T61"
msgstr ""
msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
msgstr ""
msgid "Keytronic FlexPro"
msgstr ""
msgid "Kinesis"
msgstr ""
msgid "Logitech"
msgstr ""
msgid "Logitech Access"
msgstr ""
msgid "Logitech Cordless Desktop"
msgstr ""
msgid "Logitech Cordless Desktop (alt.)"
msgstr ""
msgid "Logitech Cordless Desktop EX110"
msgstr ""
msgid "Logitech Cordless Desktop iTouch"
msgstr ""
msgid "Logitech Cordless Desktop LX-300"
msgstr ""
msgid "Logitech Cordless Desktop Navigator"
msgstr ""
msgid "Logitech Cordless Desktop Optical"
msgstr ""
msgid "Logitech diNovo"
msgstr ""
msgid "Logitech diNovo Edge"
msgstr ""
msgid "Logitech G15 extra keys via G15daemon"
msgstr ""
msgid "Logitech Internet"
msgstr ""
msgid "Logitech Internet 350"
msgstr ""
msgid "Logitech Internet 350"
msgstr ""
msgid "Logitech Internet Navigator"
msgstr ""
msgid "Logitech iTouch"
msgstr ""
msgid "Logitech iTouch Cordless Y-RB6"
msgstr ""
msgid "Logitech iTouch Internet Navigator SE"
msgstr ""
msgid "Logitech iTouch Internet Navigator SE USB"
msgstr ""
msgid "Logitech Ultra-X"
msgstr ""
msgid "Logitech Ultra-X Cordless Media Desktop"
msgstr ""
msgid "MacBook/MacBook Pro"
msgstr ""
msgid "MacBook/MacBook Pro (intl.)"
msgstr ""
msgid "Macintosh"
msgstr ""
msgid "Macintosh Old"
msgstr ""
msgid "Memorex MX1998"
msgstr ""
msgid "Memorex MX2500 EZ-Access"
msgstr ""
msgid "Memorex MX2750"
msgstr ""
msgid "Microsoft Comfort Curve 2000"
msgstr ""
msgid "Microsoft Internet"
msgstr ""
msgid "Microsoft Internet Pro (Swedish)"
msgstr ""
msgid "Microsoft Natural"
msgstr ""
msgid "Microsoft Natural Elite"
msgstr ""
msgid "Microsoft Natural Ergonomic 4000"
msgstr ""
msgid "Microsoft Natural Wireless Ergonomic 7000"
msgstr ""
msgid "Microsoft Natural Pro/Internet Pro"
msgstr ""
msgid "Microsoft Natural Pro USB/Internet Pro"
msgstr ""
msgid "Microsoft Natural Pro OEM"
msgstr ""
msgid "Microsoft Office Keyboard"
msgstr ""
msgid "Microsoft Surface"
msgstr ""
msgid "Microsoft Wireless Multimedia 1.0A"
msgstr ""
msgid "NEC SK-1300"
msgstr ""
msgid "NEC SK-2500"
msgstr ""
msgid "NEC SK-6200"
msgstr ""
msgid "NEC SK-7100"
msgstr ""
msgid "Northgate OmniKey 101"
msgstr ""
msgid "OLPC"
msgstr ""
msgid "Ortek Multimedia/Internet MCK-800"
msgstr ""
msgid "PC-98"
msgstr ""
msgid "PinePhone Keyboard"
msgstr ""
msgid "Propeller Voyager KTEZ-1000"
msgstr ""
msgid "QTronix Scorpius 98N+"
msgstr ""
msgid "Samsung SDM 4500P"
msgstr ""
msgid "Samsung SDM 4510P"
msgstr ""
msgid "Sanwa Supply SKB-KG3"
msgstr ""
msgid "Silvercrest Multimedia Wireless"
msgstr ""
msgid "SteelSeries Apex 300 (Apex RAW)"
msgstr ""
msgid "Sun Type 6 (Japanese)"
msgstr ""
msgid "Sun Type 6 USB (Japanese)"
msgstr ""
msgid "Sun Type 6 USB (Unix)"
msgstr ""
msgid "Sun Type 6/7 USB"
msgstr ""
msgid "Sun Type 6/7 USB (European)"
msgstr ""
msgid "Sun Type 7 USB"
msgstr ""
msgid "Sun Type 7 USB (European)"
msgstr ""
msgid "Sun Type 7 USB (Japanese)/Japanese 106-key"
msgstr ""
msgid "Sun Type 7 USB (Unix)"
msgstr ""
msgid "Super Power Multimedia"
msgstr ""
msgid "SVEN Ergonomic 2500"
msgstr ""
msgid "SVEN Slim 303"
msgstr ""
msgid "Symplon PaceBook tablet"
msgstr ""
msgid "Targa Visionary 811"
msgstr ""
msgid "Toshiba Satellite S3000"
msgstr ""
msgid "Truly Ergonomic 227"
msgstr ""
msgid "Truly Ergonomic 229"
msgstr ""
msgid "Trust Direct Access"
msgstr ""
msgid "Trust Slimline"
msgstr ""
msgid "Trust Wireless Classic"
msgstr ""
msgid "TypeMatrix EZ-Reach 2020"
msgstr ""
msgid "TypeMatrix EZ-Reach 2030 PS2"
msgstr ""
msgid "TypeMatrix EZ-Reach 2030 USB"
msgstr ""
msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
msgstr ""
msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
msgstr ""
msgid "Unitek KB-1925"
msgstr ""
msgid "ViewSonic KU-306 Internet"
msgstr ""
msgid "Winbook Model XP5"
msgstr ""
msgid "Yahoo! Internet"
msgstr ""

@ -0,0 +1,576 @@
# Russian translations for ubl-settings-keyboard package.
# Copyright (C) 2022, UBTech LLC
# This file is distributed under the same license as the ubl-settings-keyboard package.
# UBLinux Team <info@ublinux.com>, 2022
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: ubl-settings-keyboard 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-22 16:12+0600\n"
"PO-Revision-Date: 2023-01-01 00:00+0600\n"
"Last-Translator: UBLinux Team <info@ublinux.com>\n"
"Language-Team: Russian - UBLinux Team <info@ublinux.com>\n"
"Language: Russian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Generic 86-key PC"
msgstr "Универсальный ПК с 86 клавишами"
msgid "Generic 101-key PC"
msgstr "Универсальный ПК с 101 клавишами"
msgid "Generic 102-key PC"
msgstr "Универсальный ПК с 102 клавишами"
msgid "Generic 104-key PC"
msgstr "Универсальный ПК с 104 клавишами"
msgid "Generic 104-key PC with L-shaped Enter key"
msgstr "Универсальный ПК с 104 клавишами и Г-образной клавишей Enter"
msgid "Generic 105-key PC"
msgstr "Универсальный ПК с 105 клавишами"
msgid "A4Tech KB-21"
msgstr "A4Tech KB-21"
msgid "A4Tech KBS-8"
msgstr "A4Tech KBS-8"
msgid "A4Tech Wireless Desktop RFKB-23"
msgstr "Беспроводной настольный компьютер A4Tech RFKB-23"
msgid "Acer AirKey V"
msgstr "Acer AirKey V"
msgid "Acer C300"
msgstr "Acer C300"
msgid "Acer Ferrari 4000"
msgstr "Acer Ferrari 4000"
msgid "Acer laptop"
msgstr "Ноутбук Acer"
msgid "Advance Scorpius KI"
msgstr "Advance Scorpius KI"
msgid "Apple"
msgstr "Apple"
msgid "Apple Aluminium (ANSI)"
msgstr "Apple Aluminium (ANSI)"
msgid "Apple Aluminium (ISO)"
msgstr "Apple Aluminium (ISO)"
msgid "Apple Aluminium (JIS)"
msgstr "Apple Aluminium (JIS)"
msgid "Asus laptop"
msgstr "Ноутбук Asus"
msgid "Azona RF2300 Wireless Internet"
msgstr "Azona RF2300 Wireless Internet"
msgid "BenQ X-Touch"
msgstr "BenQ X-Touch"
msgid "BenQ X-Touch 730"
msgstr "BenQ X-Touch 730"
msgid "BenQ X-Touch 800"
msgstr "BenQ X-Touch 800"
msgid "Brother Internet"
msgstr "Brother Internet"
msgid "BTC 5090"
msgstr "BTC 5090"
msgid "BTC 5113RF Multimedia"
msgstr "BTC 5113RF Multimedia"
msgid "BTC 5126T"
msgstr "BTC 5126T"
msgid "BTC 6301URF"
msgstr "BTC 6301URF"
msgid "BTC 9000"
msgstr "BTC 9000"
msgid "BTC 9000A"
msgstr "BTC 9000A"
msgid "BTC 9001AH"
msgstr "BTC 9001AH"
msgid "BTC 9019U"
msgstr "BTC 9019U"
msgid "BTC 9116U Mini Wireless Internet and Gaming"
msgstr "BTC 9116U Mini Wireless Internet and Gaming"
msgid "Cherry Blue Line CyBo@rd"
msgstr "Cherry Blue Line CyBo@rd"
msgid "Cherry Blue Line CyBo@rd (alt.)"
msgstr "Cherry Blue Line CyBo@rd (альт.)"
msgid "Cherry B.UNLIMITED"
msgstr "Cherry B.UNLIMITED"
msgid "Cherry CyBo@rd USB-Hub"
msgstr "USB-концентратор Cherry CyBo@rd"
msgid "Cherry CyMotion Expert"
msgstr "Cherry CyMotion Expert"
msgid "Cherry CyMotion Master Linux"
msgstr "Cherry CyMotion Master Linux"
msgid "Cherry CyMotion Master XPress"
msgstr "Cherry CyMotion Master XPress"
msgid "Chicony Internet"
msgstr "Chicony Internet"
msgid "Chicony KB-9885"
msgstr "Chicony KB-9885"
msgid "Chicony KU-0108"
msgstr "Chicony KU-0108"
msgid "Chicony KU-0420"
msgstr "Chicony KU-0420"
msgid "Chromebook"
msgstr "Chromebook"
msgid "Classmate PC"
msgstr "ПК Classmate"
msgid "Compal FL90"
msgstr "Compal FL90"
msgid "Compaq Armada laptop"
msgstr "Ноутбук Compaq Armada"
msgid "Compaq Easy Access"
msgstr "Compaq Easy Access"
msgid "Compaq Internet (7 keys)"
msgstr "Compaq Internet (7 клавиш)"
msgid "Compaq Internet (13 keys)"
msgstr "Compaq Internet (13 клавиш)"
msgid "Compaq Internet (18 keys)"
msgstr "Compaq Internet (18 клавиш)"
msgid "Compaq iPaq"
msgstr "Compaq iPaq"
msgid "Compaq Presario laptop"
msgstr "Ноутбук Compaq Presario"
msgid "Creative Desktop Wireless 7000"
msgstr "Беспроводной настольный компьютер Creative Desktop Wireless 7000"
msgid "Dell"
msgstr "Dell"
msgid "Dell 101-key PC"
msgstr "Компьютер Dell с 101 клавишей"
msgid "Dell Latitude laptop"
msgstr "Ноутбук Dell Latitude"
msgid "Dell Inspiron 6000/8000 laptop"
msgstr "Ноутбук Dell Inspiron 6000/8000"
msgid "Dell Precision M laptop"
msgstr "Ноутбук Dell Precision M"
msgid "Dell Precision M65 laptop"
msgstr "Ноутбук Dell Precision M65"
msgid "Dell SK-8125"
msgstr "Dell SK-8125"
msgid "Dell SK-8135"
msgstr "Dell SK-8135"
msgid "Dell USB Multimedia"
msgstr "Мультимедиа Dell USB"
msgid "Dexxa Wireless Desktop"
msgstr "Беспроводной настольный компьютер Dexxa"
msgid "Diamond 9801/9802"
msgstr "Diamond 9801/9802"
msgid "DTK2000"
msgstr "DTK2000"
msgid "eMachines m6800 laptop"
msgstr "Ноутбук eMachines m6800"
msgid "Ennyah DKB-1008"
msgstr "Ennyah DKB-1008"
msgid "Everex STEPnote"
msgstr "Everex STEPnote"
msgid "Fujitsu-Siemens Amilo laptop"
msgstr "Ноутбук Fujitsu-Siemens Amilo"
msgid "Genius Comfy KB-16M/Multimedia KWD-910"
msgstr "Ноутбук Genius Comfy KB-16M/Multimedia KWD-910"
msgid "Genius Comfy KB-12e"
msgstr "Genius Comfy KB-12e"
msgid "Genius Comfy KB-21e-Scroll"
msgstr "Genius Comfy KB-21e-Scroll"
msgid "Genius KB-19e NB"
msgstr "Ноутбук Genius KB-19e"
msgid "Genius KKB-2050HS"
msgstr "Genius KKB-2050HS"
msgid "Gyration"
msgstr "Гирация"
msgid "Happy Hacking"
msgstr "Счастливый взлом"
msgid "Happy Hacking for Mac"
msgstr "Счастливый взлом для Mac"
msgid "Hewlett-Packard Internet"
msgstr "Интернет Hewlett-Packard"
msgid "Hewlett-Packard Mini 110 laptop"
msgstr "Ноутбук Hewlett-Packard Mini 110"
msgid "Hewlett-Packard nx9020"
msgstr "Hewlett-Packard nx9020"
msgid "Hewlett-Packard Omnibook 500"
msgstr "Hewlett-Packard Omnibook 500"
msgid "Hewlett-Packard Omnibook 500 FA"
msgstr "Hewlett-Packard Omnibook 500 FA"
msgid "Hewlett-Packard Omnibook 6000/6100"
msgstr "Hewlett-Packard Omnibook 6000/6100"
msgid "Hewlett-Packard Omnibook XE3 GC"
msgstr "Hewlett-Packard Omnibook XE3 GC"
msgid "Hewlett-Packard Omnibook XE3 GF"
msgstr "Hewlett-Packard Omnibook XE3 GF"
msgid "Hewlett-Packard Omnibook XT1000"
msgstr "Hewlett-Packard Omnibook XT1000"
msgid "Hewlett-Packard Pavilion dv5"
msgstr "Hewlett-Packard Pavilion dv5"
msgid "Hewlett-Packard Pavilion ZT1100"
msgstr "Hewlett-Packard Pavilion ZT1100"
msgid "Hewlett-Packard SK-2501 Multimedia"
msgstr "Hewlett-Packard SK-2501 Multimedia"
msgid "Honeywell Euroboard"
msgstr "Honeywell Euroboard"
msgid "IBM Rapid Access"
msgstr "IBM Rapid Access"
msgid "IBM Rapid Access II"
msgstr "IBM Rapid Access II"
msgid "IBM Space Saver"
msgstr "IBM Space Saver"
msgid "IBM ThinkPad 560Z/600/600E/A22E"
msgstr "IBM ThinkPad 560Z/600/600E/A22E"
msgid "IBM ThinkPad R60/T60/R61/T61"
msgstr "IBM ThinkPad R60/T60/R61/T61"
msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
msgid "Keytronic FlexPro"
msgstr "Keytronic FlexPro"
msgid "Kinesis"
msgstr "Kinesis"
msgid "Logitech"
msgstr "Logitech"
msgid "Logitech Access"
msgstr "Logitech Access"
msgid "Logitech Cordless Desktop"
msgstr "Logitech Cordless Desktop"
msgid "Logitech Cordless Desktop (alt.)"
msgstr "Logitech Cordless Desktop (альтернативный)"
msgid "Logitech Cordless Desktop EX110"
msgstr "Logitech Cordless Desktop EX110"
msgid "Logitech Cordless Desktop iTouch"
msgstr "Logitech Cordless Desktop iTouch"
msgid "Logitech Cordless Desktop LX-300"
msgstr "Logitech Cordless Desktop LX-300"
msgid "Logitech Cordless Desktop Navigator"
msgstr "Logitech Cordless Desktop Navigator"
msgid "Logitech Cordless Desktop Optical"
msgstr "Logitech Cordless Desktop Optical"
msgid "Logitech diNovo"
msgstr "Logitech diNovo"
msgid "Logitech diNovo Edge"
msgstr "Logitech diNovo Edge"
msgid "Logitech G15 extra keys via G15daemon"
msgstr "Дополнительные клавиши Logitech G15 через G15daemon"
msgid "Logitech Internet"
msgstr "Logitech Internet"
msgid "Logitech Internet 350"
msgstr "Logitech Internet 350"
msgid "Logitech Internet Navigator"
msgstr "Logitech Internet Navigator"
msgid "Logitech iTouch"
msgstr "Logitech iTouch"
msgid "Logitech iTouch Cordless Y-RB6"
msgstr "Logitech iTouch Cordless Y-RB6"
msgid "Logitech iTouch Internet Navigator SE"
msgstr "Logitech iTouch Internet Navigator SE"
msgid "Logitech iTouch Internet Navigator SE USB"
msgstr "Logitech iTouch Internet Navigator SE USB"
msgid "Logitech Ultra-X"
msgstr "Logitech Ultra-X"
msgid "Logitech Ultra-X Cordless Media Desktop"
msgstr "Logitech Ultra-X Cordless Media Desktop"
msgid "MacBook/MacBook Pro"
msgstr "MacBook/MacBook Pro"
msgid "MacBook/MacBook Pro (intl.)"
msgstr "MacBook/MacBook Pro (международный)"
msgid "Macintosh"
msgstr "Macintosh"
msgid "Macintosh Old"
msgstr "Macintosh Old"
msgid "Memorex MX1998"
msgstr "Memorex MX1998"
msgid "Memorex MX2500 EZ-Access"
msgstr "Memorex MX2500 EZ-Access"
msgid "Memorex MX2750"
msgstr "Memorex MX2750"
msgid "Microsoft Comfort Curve 2000"
msgstr "Microsoft Comfort Curve 2000"
msgid "Microsoft Internet"
msgstr "Microsoft Internet"
msgid "Microsoft Internet Pro (Swedish)"
msgstr "Microsoft Internet Pro (шведский)"
msgid "Microsoft Natural"
msgstr "Microsoft Natural"
msgid "Microsoft Natural Elite"
msgstr "Microsoft Natural Elite"
msgid "Microsoft Natural Ergonomic 4000"
msgstr "Microsoft Natural Ergonomic 4000"
msgid "Microsoft Natural Wireless Ergonomic 7000"
msgstr "Microsoft Natural Wireless Ergonomic 7000"
msgid "Microsoft Natural Pro/Internet Pro"
msgstr "Microsoft Natural Pro/Internet Pro"
msgid "Microsoft Natural Pro USB/Internet Pro"
msgstr "Microsoft Natural Pro USB/Internet Pro"
msgid "Microsoft Natural Pro OEM"
msgstr "Microsoft Natural Pro OEM"
msgid "Microsoft Office Keyboard"
msgstr "Клавиатура Microsoft Office"
msgid "Microsoft Surface"
msgstr "Microsoft Surface"
msgid "Microsoft Wireless Multimedia 1.0A"
msgstr "Беспроводная мультимедийная клавиатура Microsoft 1,0 А"
msgid "NEC SK-1300"
msgstr "NEC SK-1300"
msgid "NEC SK-2500"
msgstr "NEC SK-2500"
msgid "NEC SK-6200"
msgstr "NEC SK-6200"
msgid "NEC SK-7100"
msgstr "NEC SK-7100"
msgid "Northgate OmniKey 101"
msgstr "Northgate OmniKey 101"
msgid "OLPC"
msgstr "OLPC"
msgid "Ortek Multimedia/Internet MCK-800"
msgstr "Ortek Multimedia/Internet MCK-800"
msgid "PC-98"
msgstr "PC-98"
msgid "PinePhone Keyboard"
msgstr "Клавиатура PinePhone"
msgid "Propeller Voyager KTEZ-1000"
msgstr "Propeller Voyager KTEZ-1000"
msgid "QTronix Scorpius 98N+"
msgstr "QTronix Scorpius 98N+"
msgid "Samsung SDM 4500P"
msgstr "Samsung SDM 4500P"
msgid "Samsung SDM 4510P"
msgstr "Samsung SDM 4510P"
msgid "Sanwa Supply SKB-KG3"
msgstr "Sanwa Supply SKB-KG3"
msgid "Silvercrest Multimedia Wireless"
msgstr "Беспроводная мультимедийная клавиатура Silvercrest"
msgid "SteelSeries Apex 300 (Apex RAW)"
msgstr "SteelSeries Apex 300 (Apex RAW)"
msgid "Sun Type 6 (Japanese)"
msgstr "Sun Type 6 (японский)"
msgid "Sun Type 6 USB (Japanese)"
msgstr "Sun Type 6 USB (японский)"
msgid "Sun Type 6 USB (Unix)"
msgstr "Sun Type 6 USB (Unix)"
msgid "Sun Type 6/7 USB"
msgstr "Sun Type 6/7 USB"
msgid "Sun Type 6/7 USB (European)"
msgstr "Sun Type 6/7 USB (европейский)"
msgid "Sun Type 7 USB"
msgstr "Sun Type 7 USB"
msgid "Sun Type 7 USB (European)"
msgstr "Sun Type 7 USB (европейский)"
msgid "Sun Type 7 USB (Japanese)/Japanese 106-key"
msgstr "Sun Type 7 USB (японский)/японская 106-клавишная клавиатура"
msgid "Sun Type 7 USB (Unix)"
msgstr "Sun Type 7 USB (Unix)"
msgid "Super Power Multimedia"
msgstr "Сверхмощная мультимедийная клавиатура"
msgid "SVEN Ergonomic 2500"
msgstr "SVEN Ergonomic 2500"
msgid "SVEN Slim 303"
msgstr "SVEN Slim 303"
msgid "Symplon PaceBook tablet"
msgstr "Планшет Symplon PaceBook"
msgid "Targa Visionary 811"
msgstr "Targa Visionary 811"
msgid "Toshiba Satellite S3000"
msgstr "Toshiba Satellite S3000"
msgid "Truly Ergonomic 227"
msgstr "Truly Ergonomic 227"
msgid "Truly Ergonomic 229"
msgstr "Truly Ergonomic 229"
msgid "Trust Direct Access"
msgstr "Trust Direct Access"
msgid "Trust Slimline"
msgstr "Trust Slimline"
msgid "Trust Wireless Classic"
msgstr "Trust Wireless Classic"
msgid "TypeMatrix EZ-Reach 2020"
msgstr "TypeMatrix EZ-Reach 2020"
msgid "TypeMatrix EZ-Reach 2030 PS2"
msgstr "TypeMatrix EZ-Reach 2030 PS2"
msgid "TypeMatrix EZ-Reach 2030 USB"
msgstr "TypeMatrix EZ-Reach 2030 USB"
msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
msgstr "TypeMatrix EZ-Reach 2030 USB (102/105: режим ЕС)"
msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
msgstr "TypeMatrix EZ-Reach 2030 USB (106: японский режим)"
msgid "Unitek KB-1925"
msgstr "Unitek KB-1925"
msgid "ViewSonic KU-306 Internet"
msgstr "Интернет ViewSonic KU-306"
msgid "Winbook Model XP5"
msgstr "Winbook Модель XP5"
msgid "Yahoo! Internet"
msgstr "Интернет Yahoo!"

@ -0,0 +1,545 @@
# Language translations for ubl-settings-keyboard package.
# Copyright (C) 2022, UBTech LLC
# This file is distributed under the same license as the ubl-settings-keyboard package.
# UBLinux Team <info@ublinux.com>, 2022
#
#, fuzzy
msgid ""
msgstr """Project-Id-Version: ubl-settings-keyboard 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-22 16:12+0600\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "The \"&lt; &gt;\" key"
msgstr ""
msgid "Right Ctrl"
msgstr ""
msgid "Menu"
msgstr ""
msgid "Any Win"
msgstr ""
msgid "Left Win"
msgstr ""
msgid "Right Win"
msgstr ""
msgid "Any Alt"
msgstr ""
msgid "Left Alt"
msgstr ""
msgid "Right Alt"
msgstr ""
msgid "Right Alt; Shift+Right Alt as Compose"
msgstr ""
msgid "Right Alt never chooses 3rd level"
msgstr ""
msgid "Enter on keypad"
msgstr ""
msgid "Caps Lock"
msgstr ""
msgid "Backslash"
msgstr ""
msgid "Caps Lock; acts as onetime lock when pressed together with another 3rd-level chooser"
msgstr ""
msgid "Backslash; acts as onetime lock when pressed together with another 3rd level chooser"
msgstr ""
msgid "The "&lt; &gt;" key; acts as onetime lock when pressed together with another 3rd level chooser"
msgstr ""
msgid "Caps Lock as Ctrl"
msgstr ""
msgid "Left Ctrl as Meta"
msgstr ""
msgid "Swap Ctrl and Caps Lock"
msgstr ""
msgid "Caps Lock as Ctrl, Ctrl as Hyper"
msgstr ""
msgid "To the left of \"A\""
msgstr ""
msgid "At the bottom left"
msgstr ""
msgid "Right Ctrl as Right Alt"
msgstr ""
msgid "Menu as Right Ctrl"
msgstr ""
msgid "Swap Left Alt with Left Ctrl"
msgstr ""
msgid "Swap Right Alt with Right Ctrl"
msgstr ""
msgid "Swap Left Win with Left Ctrl"
msgstr ""
msgid "Swap Right Win with Right Ctrl"
msgstr ""
msgid "Left Alt as Ctrl, Left Ctrl as Win, Left Win as Left Alt"
msgstr ""
msgid "Num Lock"
msgstr ""
msgid "Scroll Lock"
msgstr ""
msgid "Compose"
msgstr ""
msgid "Legacy"
msgstr ""
msgid "Unicode arrows and math operators"
msgstr ""
msgid "Unicode arrows and math operators on default level"
msgstr ""
msgid "Legacy Wang 724"
msgstr ""
msgid "Wang 724 keypad with Unicode arrows and math operators"
msgstr ""
msgid "Wang 724 keypad with Unicode arrows and math operators on default level"
msgstr ""
msgid "Hexadecimal"
msgstr ""
msgid "Phone and ATM style"
msgstr ""
msgid "Shift + Num Lock enables PointerKeys"
msgstr ""
msgid "Legacy key with dot"
msgstr ""
msgid "Legacy key with comma"
msgstr ""
msgid "Four-level key with dot"
msgstr ""
msgid "Four-level key with dot, Latin-9 only"
msgstr ""
msgid "Four-level key with comma"
msgstr ""
msgid "Four-level key with momayyez"
msgstr ""
msgid "Four-level key with abstract separators"
msgstr ""
msgid "Semicolon on third level"
msgstr ""
msgid "Caps Lock uses internal capitalization; Shift "pauses" Caps Lock"
msgstr ""
msgid "Caps Lock uses internal capitalization; Shift does not affect Caps Lock"
msgstr ""
msgid "Caps Lock acts as Shift with locking; Shift "pauses" Caps Lock"
msgstr ""
msgid "Caps Lock acts as Shift with locking; Shift does not affect Caps Lock"
msgstr ""
msgid "Caps Lock toggles normal capitalization of alphabetic characters"
msgstr ""
msgid "Caps Lock toggles Shift Lock (affects all keys)"
msgstr ""
msgid "Swap Esc and Caps Lock"
msgstr ""
msgid "Make Caps Lock an additional Esc"
msgstr ""
msgid "Make Caps Lock an additional Esc, but Shift + Caps Lock is the regular Caps Lock"
msgstr ""
msgid "Make Caps Lock an additional Backspace"
msgstr ""
msgid "Make Caps Lock an additional Super"
msgstr ""
msgid "Make Caps Lock an additional Hyper"
msgstr ""
msgid "Make Caps Lock an additional Menu key"
msgstr ""
msgid "Make Caps Lock an additional Num Lock"
msgstr ""
msgid "Make Caps Lock an additional Ctrl"
msgstr ""
msgid "Caps Lock is disabled"
msgstr ""
msgid "Add the standard behavior to Menu key"
msgstr ""
msgid "Menu is mapped to Win"
msgstr ""
msgid "Alt and Meta are on Alt"
msgstr ""
msgid "Alt is mapped to Win and the usual Alt"
msgstr ""
msgid "Ctrl is mapped to Win and the usual Ctrl"
msgstr ""
msgid "Ctrl is mapped to Right Win and the usual Ctrl"
msgstr ""
msgid "Ctrl is mapped to Alt, Alt to Win"
msgstr ""
msgid "Meta is mapped to Win"
msgstr ""
msgid "Meta is mapped to Left Win"
msgstr ""
msgid "Hyper is mapped to Win"
msgstr ""
msgid "Alt is mapped to Right Win, Super to Menu"
msgstr ""
msgid "Left Alt is swapped with Left Win"
msgstr ""
msgid "Alt is swapped with Win"
msgstr ""
msgid "Win is mapped to PrtSc and the usual Win"
msgstr ""
msgid "3rd level of Left Win"
msgstr ""
msgid "3rd level of Right Win"
msgstr ""
msgid "3rd level of Menu"
msgstr ""
msgid "Left Ctrl"
msgstr ""
msgid "3rd level of Left Ctrl"
msgstr ""
msgid "3rd level of Right Ctrl"
msgstr ""
msgid "3rd level of Caps Lock"
msgstr ""
msgid "3rd level of the "&lt; &gt;" key"
msgstr ""
msgid "Pause"
msgstr ""
msgid "Insert"
msgstr ""
msgid "PrtSc"
msgstr ""
msgid "keypad"
msgstr ""
msgid "numpad"
msgstr ""
msgid "srvrkeys"
msgstr ""
msgid "apple"
msgstr ""
msgid "shift"
msgstr ""
msgid "misc"
msgstr ""
msgid "grab"
msgstr ""
msgid "eurosign"
msgstr ""
msgid "rupeesign"
msgstr ""
msgid "Caps Lock chooses 5th level"
msgstr ""
msgid "The "&lt; &gt;" key chooses 5th level"
msgstr ""
msgid "Right Alt chooses 5th level"
msgstr ""
msgid "Menu chooses 5th level"
msgstr ""
msgid "Right Ctrl chooses 5th level"
msgstr ""
msgid "The \"&lt; &gt;\" key chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser"
msgstr ""
msgid "Right Alt chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser"
msgstr ""
msgid "Left Win chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser"
msgstr ""
msgid "Right Win chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser"
msgstr ""
msgid "The \"&lt; &gt;\" key chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser"
msgstr ""
msgid "Usual space at any level"
msgstr ""
msgid "Non-breaking space at the 2nd level"
msgstr ""
msgid "Non-breaking space at the 3rd level"
msgstr ""
msgid "Non-breaking space at the 3rd level, thin non-breaking space at the 4th level"
msgstr ""
msgid "Non-breaking space at the 4th level"
msgstr ""
msgid "Non-breaking space at the 4th level, thin non-breaking space at the 6th level"
msgstr ""
msgid "Non-breaking space at the 4th level, thin non-breaking space at the 6th level (via Ctrl+Shift)"
msgstr ""
msgid "Zero-width non-joiner at the 2nd level"
msgstr ""
msgid "Zero-width non-joiner at the 2nd level, zero-width joiner at the 3rd level"
msgstr ""
msgid "Zero-width non-joiner at the 2nd level, zero-width joiner at the 3rd level, non-breaking space at the 4th level"
msgstr ""
msgid "Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level"
msgstr ""
msgid "Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, zero-width joiner at the 4th level"
msgstr ""
msgid "Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, thin non-breaking space at the 4th level"
msgstr ""
msgid "Zero-width non-joiner at the 3rd level, zero-width joiner at the 4th level"
msgstr ""
msgid "Kana Lock key is locking"
msgstr ""
msgid "NICOLA-F style Backspace"
msgstr ""
msgid "Make Zenkaku Hankaku an additional Esc"
msgstr ""
msgid "Make right Alt a Hangul key"
msgstr ""
msgid "Make right Ctrl a Hangul key"
msgstr ""
msgid "Make right Alt a Hanja key"
msgstr ""
msgid "Make right Ctrl a Hanja key"
msgstr ""
msgid "At the corresponding key in a QWERTY layout"
msgstr ""
msgid "At the corresponding key in a Dvorak layout"
msgstr ""
msgid "At the corresponding key in a Colemak layout"
msgstr ""
msgid "Sun key compatibility"
msgstr ""
msgid "Ctrl+Alt+Backspace"
msgstr ""
msgid "Right Alt (while pressed)"
msgstr ""
msgid "Left Alt (while pressed)"
msgstr ""
msgid "Left Win (while pressed)"
msgstr ""
msgid "Right Win (while pressed)"
msgstr ""
msgid "Any Win (while pressed)"
msgstr ""
msgid "Menu (while pressed), Shift+Menu for Menu"
msgstr ""
msgid "Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action"
msgstr ""
msgid "Right Ctrl (while pressed)"
msgstr ""
msgid "Right Alt"
msgstr ""
msgid "Left Alt"
msgstr ""
msgid "Caps Lock"
msgstr ""
msgid "Shift+Caps Lock"
msgstr ""
msgid "Caps Lock to first layout; Shift+Caps Lock to second layout"
msgstr ""
msgid "Left Win to first layout; Right Win/Menu to second layout"
msgstr ""
msgid "Left Ctrl to first layout; Right Ctrl to second layout"
msgstr ""
msgid "Alt+Caps Lock"
msgstr ""
msgid "Both Shifts together"
msgstr ""
msgid "Both Alts together"
msgstr ""
msgid "Both Alts together; AltGr alone chooses third level"
msgstr ""
msgid "Both Ctrls together"
msgstr ""
msgid "Ctrl+Shift"
msgstr ""
msgid "Left Ctrl+Left Shift"
msgstr ""
msgid "Right Ctrl+Right Shift"
msgstr ""
msgid "Alt+Ctrl"
msgstr ""
msgid "Alt+Shift"
msgstr ""
msgid "Left Alt+Left Shift"
msgstr ""
msgid "Right Alt+Right Shift"
msgstr ""
msgid "Menu"
msgstr ""
msgid "Left Win"
msgstr ""
msgid "Alt+Space"
msgstr ""
msgid "Win+Space"
msgstr ""
msgid "Ctrl+Space"
msgstr ""
msgid "Right Win"
msgstr ""
msgid "Left Shift"
msgstr ""
msgid "Right Shift"
msgstr ""
msgid "Left Ctrl"
msgstr ""
msgid "Right Ctrl"
msgstr ""
msgid "Scroll Lock"
msgstr ""
msgid "Ctrl+Left Win to first layout; Ctrl+Menu to second layout"
msgstr ""
msgid "Left Ctrl+Left Win"
msgstr ""

@ -0,0 +1,517 @@
# Russian translations for ubl-settings-keyboard package.
# Copyright (C) 2022, UBTech LLC
# This file is distributed under the same license as the ubl-settings-keyboard package.
# UBLinux Team <info@ublinux.com>, 2022
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: ubl-settings-keyboard 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-22 16:12+0600\n"
"PO-Revision-Date: 2023-01-01 00:00+0600\n"
"Last-Translator: UBLinux Team <info@ublinux.com>\n"
"Language-Team: Russian - UBLinux Team <info@ublinux.com>\n"
"Language: Russian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "The \"&#38;lt; &#38;gt;\" key"
msgstr "Клавиша \"&#38;lt; &#38;gt;\""
msgid "Right Ctrl"
msgstr "Правый Ctrl"
msgid "Menu"
msgstr "Меню"
msgid "Any Win"
msgstr "Любая клавиша Win"
msgid "Left Win"
msgstr "Левая клавиша Win"
msgid "Right Win"
msgstr "Правая клавиша Win"
msgid "Any Alt"
msgstr "Любая клавиша Alt"
msgid "Left Alt"
msgstr "Левая клавиша Alt"
msgid "Right Alt"
msgstr "Правый Alt"
msgid "Right Alt; Shift+Right Alt as Compose"
msgstr "Правый Alt; Shift+Правый Alt для ввода текста"
msgid "Right Alt never chooses 3rd level"
msgstr "Правый Alt никогда не выбирает 3-й уровень"
msgid "Enter on keypad"
msgstr "Enter на цифровой клавиатуре"
msgid "Caps Lock"
msgstr "Caps Lock"
msgid "Backslash"
msgstr "Обратная косая черта"
msgid "Caps Lock; acts as onetime lock when pressed together with another 3rd-level chooser"
msgstr "Caps Lock; действует как однократная блокировка при одновременном нажатии с другим переключателем 3-го уровня"
msgid "Backslash; acts as onetime lock when pressed together with another 3rd level chooser"
msgstr "Обратная косая черта; действует как однократная блокировка при одновременном нажатии с другим переключателем 3-го уровня"
msgid "The \"&#38;lt; &#38;gt;\" key; acts as onetime lock when pressed together with another 3rd level chooser"
msgstr "Клавиша \"&#38;lt; &#38;gt;\"; Действует как однократная блокировка при одновременном нажатии с другим селектором 3-го уровня."
msgid "Caps Lock as Ctrl"
msgstr "Caps Lock как Ctrl"
msgid "Left Ctrl as Meta"
msgstr "Left Ctrl как Meta"
msgid "Swap Ctrl and Caps Lock"
msgstr "Поменять местами Ctrl и Caps Lock"
msgid "Caps Lock as Ctrl, Ctrl as Hyper"
msgstr "Caps Lock как Ctrl, Ctrl как Hyper"
msgid "To the left of \"A\""
msgstr "Слева от \"A\""
msgid "At the bottom left"
msgstr "В левом нижнем углу"
msgid "Right Ctrl as Right Alt"
msgstr "Right Ctrl как Right Alt"
msgid "Menu as Right Ctrl"
msgstr "Menu как Right Ctrl"
msgid "Swap Left Alt with Left Ctrl"
msgstr "Поменять местами Left Alt и Left Ctrl"
msgid "Swap Right Alt with Right Ctrl"
msgstr "Поменять местами Right Alt и Right Ctrl"
msgid "Swap Left Win with Left Ctrl"
msgstr "Поменять местами Left Win и Left Ctrl"
msgid "Swap Right Win with Right Ctrl"
msgstr "Поменять местами Right Win и Right Ctrl"
msgid "Left Alt as Ctrl, Left Ctrl as Win, Left Win as Left Alt"
msgstr "Left Alt как Ctrl, Left Ctrl как Win, Left Win как Left Alt"
msgid "Num Lock"
msgstr "Num Lock"
msgid "Scroll Lock"
msgstr "Scroll Lock"
msgid "Compose"
msgstr "Compose"
msgid "Legacy"
msgstr "Legacy"
msgid "Unicode arrows and math operators"
msgstr "Стрелки Unicode и математические операторы"
msgid "Unicode arrows and math operators on default level"
msgstr "Стрелки Unicode и математические операторы по умолчанию"
msgid "Legacy Wang 724"
msgstr "Legacy Wang 724"
msgid "Wang 724 keypad with Unicode arrows and math operators"
msgstr "Клавиатура Wang 724 со стрелками Unicode и математическими операторами"
msgid "Wang 724 keypad with Unicode arrows and math operators on default level"
msgstr "Клавиатура Wang 724 со стрелками Unicode и математическими операторами по умолчанию уровень"
msgid "Hexadecimal"
msgstr "Шестнадцатеричный"
msgid "Phone and ATM style"
msgstr "Стиль телефона и банкомата"
msgid "Shift + Num Lock enables PointerKeys"
msgstr "Shift + Num Lock включает клавиши указателя"
msgid "Legacy key with dot"
msgstr "Устаревшая клавиша с точкой"
msgid "Legacy key with comma"
msgstr "Устаревшая клавиша с запятой"
msgid "Four-level key with dot"
msgstr "Четырехуровневая клавиша с точкой"
msgid "Four-level key with dot, Latin-9 only"
msgstr "Четырехуровневая клавиша с точкой, только Latin-9"
msgid "Four-level key with comma"
msgstr "Четырехуровневая клавиша с запятой"
msgid "Four-level key with momayyez"
msgstr "Четырехуровневая клавиша с momayyez"
msgid "Four-level key with abstract separators"
msgstr "Четырехуровневая клавиша с абстрактными разделителями"
msgid "Semicolon on third level"
msgstr "Точка с запятой на третьем уровне"
msgid "Caps Lock uses internal capitalization; Shift \"pauses\" Caps Lock"
msgstr "Caps Lock использует внутреннюю заглавную клавишу; Shift «приостанавливает» Caps Lock"
msgid "Caps Lock uses internal capitalization; Shift does not affect Caps Lock"
msgstr "Caps Lock использует внутреннюю заглавную клавишу; Shift не влияет на Caps Lock"
msgid "Caps Lock acts as Shift with locking; Shift \"pauses\" Caps Lock"
msgstr "Caps Lock действует как Shift с блокировкой; Shift «приостанавливает» Caps Lock"
msgid "Caps Lock acts as Shift with locking; Shift does not affect Caps Lock"
msgstr "Caps Lock действует как Shift с блокировкой; Shift не влияет на Caps Lock"
msgid "Caps Lock toggles normal capitalization of alphabetic characters"
msgstr "Caps Lock переключает обычный режим заглавных букв алфавита"
msgid "Caps Lock toggles Shift Lock (affects all keys)"
msgstr "Caps Lock переключает Shift Lock (действует на все клавиши)"
msgid "Swap Esc and Caps Lock"
msgstr "Поменять местами Esc и Caps Lock"
msgid "Make Caps Lock an additional Esc"
msgstr "Сделать Caps Lock дополнительным Esc"
msgid "Make Caps Lock an additional Esc, but Shift + Caps Lock is the regular Caps Lock"
msgstr "Сделать Caps Lock дополнительным Esc, но Shift + Caps Lock — это обычный Caps Lock"
msgid "Make Caps Lock an additional Backspace"
msgstr "Сделать Caps Lock дополнительным Backspace"
msgid "Make Caps Lock an additional Super"
msgstr "Сделать Caps Lock дополнительной клавишей Super"
msgid "Make Caps Lock an additional Hyper"
msgstr "Сделать Caps Lock дополнительной клавишей Hyper"
msgid "Make Caps Lock an additional Menu key"
msgstr "Сделать Caps Lock дополнительной клавишей Menu"
msgid "Make Caps Lock an additional Num Lock"
msgstr "Сделать Caps Lock дополнительной клавишей Num Lock"
msgid "Make Caps Lock an additional Ctrl"
msgstr "Сделать Caps Lock дополнительной клавишей Ctrl"
msgid "Caps Lock is disabled"
msgstr "Caps Lock отключен"
msgid "Add the standard behavior to Menu key"
msgstr "Добавить стандартное поведение клавиши Menu"
msgid "Menu is mapped to Win"
msgstr "Меню назначено на Win"
msgid "Alt and Meta are on Alt"
msgstr "Alt и Meta назначены на Alt"
msgid "Alt is mapped to Win and the usual Alt"
msgstr "Alt назначены на Win и обычный Alt"
msgid "Ctrl is mapped to Win and the usual Ctrl"
msgstr "Ctrl назначены на Win и обычный Ctrl"
msgid "Ctrl is mapped to Right Win and the usual Ctrl"
msgstr "Ctrl назначены на Right Win и обычный Ctrl"
msgid "Ctrl is mapped to Alt, Alt to Win"
msgstr "Ctrl назначены на Alt, Alt — на Win"
msgid "Meta is mapped to Win"
msgstr "Meta назначены на Win"
msgid "Meta is mapped to Left Win"
msgstr "Meta назначены на Left Win"
msgid "Hyper is mapped to Win"
msgstr "Гипер сопоставлена с Win"
msgid "Alt is mapped to Right Win, Super to Menu"
msgstr "Alt сопоставлена с правой Win, Super — с Menu"
msgid "Left Alt is swapped with Left Win"
msgstr "Левый Alt поменян на левый Win"
msgid "Alt is swapped with Win"
msgstr "Alt поменян на Win"
msgid "Win is mapped to PrtSc and the usual Win"
msgstr "Win сопоставлена с PrtSc и обычной Win"
msgid "3rd level of Left Win"
msgstr "3-й уровень левой Win"
msgid "3rd level of Right Win"
msgstr "3-й уровень правой Win"
msgid "3rd level of Menu"
msgstr "3-й уровень Menu"
msgid "Left Ctrl"
msgstr "Левый Ctrl"
msgid "3rd level of Left Ctrl"
msgstr "3-й уровень левой Ctrl"
msgid "3rd level of Right Ctrl"
msgstr "3-й уровень правой Ctrl"
msgid "3rd level of Caps Lock"
msgstr "3-й уровень Caps Lock"
msgid "3rd level of the \"&#38;lt; &#38;gt;\" key"
msgstr "3-й уровень клавиши \"&#38;lt; &#38;gt;\""
msgid "Pause"
msgstr "Pause"
msgid "Insert"
msgstr "Insert"
msgid "PrtSc"
msgstr "PrtSc"
msgid "keypad"
msgstr "клавиатура"
msgid "numpad"
msgstr "цифровая клавиатура"
msgid "srvrkeys"
msgstr "srvrkeys"
msgid "apple"
msgstr "apple"
msgid "shift"
msgstr "shift"
msgid "misc"
msgstr "разное"
msgid "grab"
msgstr "grab"
msgid "eurosign"
msgstr "евро"
msgid "rupeesign"
msgstr "рупия"
msgid "Caps Lock chooses 5th level"
msgstr "Caps Lock выбирает 5-й уровень"
msgid "The \"&#38;lt; &#38;gt;\" key chooses 5th level"
msgstr "Клавиша \"&#38;lt; &#38;gt;\" Клавиша выбора 5-го уровня"
msgid "Right Alt chooses 5th level"
msgstr "Правый Alt выбирает 5-й уровень"
msgid "Menu chooses 5th level"
msgstr "Меню выбирает 5-й уровень"
msgid "Right Ctrl chooses 5th level"
msgstr "Правый Ctrl выбирает 5-й уровень"
msgid "Right Alt chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser"
msgstr "Правый Alt выбирает 5-й уровень и действует как однократная блокировка при нажатии с другим переключателем 5-го уровня"
msgid "Left Win chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser"
msgstr "Левая Win выбирает 5-й уровень и действует как однократная блокировка при нажатии с другим переключателем 5-го уровня"
msgid "Right Win chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser"
msgstr "Правая Win выбирает 5-й уровень и действует как однократная блокировка при нажатии с другим переключателем 5-го уровня"
msgid "The \"&#38;lt; &#38;gt;\" key chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser"
msgstr "Клавиша \"&#38;lt; &#38;gt;\" выбирает 5-й уровень и действует как однократная блокировка при нажатии с другим переключателем 5-го уровня"
msgid "Usual space at any level"
msgstr "Обычный пробел на любом уровне"
msgid "Non-breaking space at the 2nd level"
msgstr "Неразрывный пробел на 2-м уровне"
msgid "Non-breaking space at the 3rd level"
msgstr "Неразрывный пробел на 3-м уровне"
msgid "Non-breaking space at the 3rd level, thin non-breaking space at the 4th level"
msgstr "Неразрывный пробел на 3-м уровне уровень, тонкий неразрывный пробел на 4-м уровне"
msgid "Non-breaking space at the 4th level"
msgstr "Неразрывный пробел на 4-м уровне"
msgid "Non-breaking space at the 4th level, thin non-breaking space at the 6th level"
msgstr "Неразрывный пробел на 4-м уровне, тонкий неразрывный пробел на 6-м уровне"
msgid "Non-breaking space at the 4th level, thin non-breaking space at the 6th level (via Ctrl+Shift)"
msgstr "Неразрывный пробел на 4-м уровне, тонкий неразрывный пробел на 6-м уровне (через Ctrl+Shift)"
msgid "Zero-width non-joiner at the 2nd level"
msgstr "Необъединитель нулевой ширины на 2-м уровне"
msgid "Zero-width non-joiner at the 2nd level, zero-width joiner at the 3rd level"
msgstr "Необъединитель нулевой ширины на 2-м уровне, объединитель нулевой ширины на 3-м уровне"
msgid "Zero-width non-joiner at the 2nd level, zero-width joiner at the 3rd level, non-breaking space at the 4th level"
msgstr "Необъединитель нулевой ширины на 2-м уровне, объединитель нулевой ширины на 3-м уровне, неразрывный пробел на 4-м уровне"
msgid "Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level"
msgstr "Необъединитель нулевой ширины на 2-м уровне, неразрывный пробел на 3-м уровне"
msgid "Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, zero-width joiner at the 4th level"
msgstr "Необъединитель нулевой ширины на 2-м уровне, неразрывный пробел на 3-м уровне, объединитель нулевой ширины на 4-й уровень"
msgid "Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, thin non-breaking space at the 4th level"
msgstr "Нулевой ширины необъединяющий символ на 2-м уровне, неразрывный пробел на 3-м уровне, тонкий неразрывный пробел на 4-м уровне"
msgid "Zero-width non-joiner at the 3rd level, zero-width joiner at the 4th level"
msgstr "Нулевой ширины необъединяющий символ на 3-м уровне, нулевой ширины объединяющий символ на 4-м уровне"
msgid "Kana Lock key is locking"
msgstr "Клавиша Kana Lock блокирует"
msgid "NICOLA-F style Backspace"
msgstr "Клавиша Backspace в стиле NICOLA-F"
msgid "Make Zenkaku Hankaku an additional Esc"
msgstr "Сделать Zenkaku Hankaku дополнительной клавишей Esc"
msgid "Make right Alt a Hangul key"
msgstr "Сделать правый Alt клавишей Hangul"
msgid "Make right Ctrl a Hangul key"
msgstr "Сделать правый Ctrl клавишей Hangul"
msgid "Make right Alt a Hanja key"
msgstr "Сделать правый Alt клавишей Hanja"
msgid "Make right Ctrl a Hanja key"
msgstr "Сделать правый Ctrl клавишей Hanja"
msgid "At the corresponding key in a QWERTY layout"
msgstr "На соответствующей клавише в раскладке QWERTY"
msgid "At the corresponding key in a Dvorak layout"
msgstr "На соответствующей клавише в раскладке Dvorak"
msgid "At the corresponding key in a Colemak layout"
msgstr "На соответствующей клавише в раскладке Colemak"
msgid "Sun key compatibility"
msgstr "Совместимость с клавишей Sun"
msgid "Ctrl+Alt+Backspace"
msgstr "Ctrl+Alt+Backspac"
msgid "Right Alt (while pressed)"
msgstr "Правый Alt (удерживая нажатой)"
msgid "Left Alt (while pressed)"
msgstr "Левый Alt (удерживая нажатой)"
msgid "Left Win (while pressed)"
msgstr "Левая Win (удерживая нажатой)"
msgid "Right Win (while pressed)"
msgstr "Правая Win (удерживая нажатой)"
msgid "Any Win (while pressed)"
msgstr "Любая Win (удерживая нажатой)"
msgid "Menu (while pressed), Shift+Menu for Menu"
msgstr "Меню (удерживая нажатой), Shift+Menu для меню"
msgid "Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action"
msgstr "Caps Lock (удерживая нажатой), Alt+Caps Lock для исходного действия Caps Lock"
msgid "Right Ctrl (while pressed)"
msgstr "Правый Ctrl (удерживая нажатой)"
msgid "Shift+Caps Lock"
msgstr "Shift+Caps Lock"
msgid "Caps Lock to first layout; Shift+Caps Lock to second layout"
msgstr "Caps Lock на первую раскладку; Shift+Caps Lock на вторую раскладку"
msgid "Left Win to first layout; Right Win/Menu to second layout"
msgstr "Левая Win на первую раскладку; Правая Win/Menu на вторую раскладку"
msgid "Left Ctrl to first layout; Right Ctrl to second layout"
msgstr "Левый Ctrl на первую раскладку; Правый Ctrl на вторую раскладку"
msgid "Alt+Caps Lock"
msgstr "Alt+Caps Lock"
msgid "Both Shifts together"
msgstr "Оба Shift одновременно"
msgid "Both Alts together"
msgstr "Оба Alt одновременно"
msgid "Both Alts together; AltGr alone chooses third level"
msgstr "Оба Alt одновременно; AltGr отдельно выбирает третий уровень"
msgid "Both Ctrls together"
msgstr "Оба Ctrl вместе"
msgid "Ctrl+Shift"
msgstr "Ctrl+Shift"
msgid "Left Ctrl+Left Shift"
msgstr "Левый Ctrl+Левый Shift"
msgid "Right Ctrl+Right Shift"
msgstr "Правый Ctrl+Правый Shift"
msgid "Alt+Ctrl"
msgstr "Alt+Ctrl"
msgid "Alt+Shift"
msgstr "Alt+Shift"
msgid "Left Alt+Left Shift"
msgstr "Левый Alt+Левый Shift"
msgid "Right Alt+Right Shift"
msgstr "Правый Alt+Правый Shift"
msgid "Alt+Space"
msgstr "Alt+Пробел"
msgid "Win+Space"
msgstr "Win+Пробел"
msgid "Ctrl+Space"
msgstr "Ctrl+Пробел"
msgid "Left Shift"
msgstr "Левый Shift"
msgid "Right Shift"
msgstr "Правый Shift"
msgid "Ctrl+Left Win to first layout; Ctrl+Menu to second layout"
msgstr "Ctrl+Левый Win на первую раскладку; Ctrl+Меню на вторую раскладку"
msgid "Left Ctrl+Left Win"
msgstr "Левый Ctrl+Левый Win"

@ -18,463 +18,178 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#: source/ubl-strings.h:1
msgid "Version:"
msgstr ""
#: source/ubl-strings.h:2
msgid "ubl-settings-keyboard version:"
msgstr ""
#: source/ubl-strings.h:2
msgid "Usage:"
msgstr ""
#: source/ubl-strings.h:2
msgid "[OPTIONS]"
msgstr ""
#: source/ubl-strings.h:2
msgid "Options:"
msgstr ""
#: source/ubl-strings.h:2
msgid "Show this help"
msgstr ""
#: source/ubl-strings.h:2
msgid "Show package version"
msgstr ""
#: source/ubl-strings.h:2
msgid "Lock this help menu"
msgstr ""
#: source/ubl-strings.h:2
msgid "Lock configuration saving"
msgstr ""
#: source/ubl-strings.h:2
msgid "Lock local configration saving"
msgstr ""
#: source/ubl-strings.h:2
msgid "Lock global configration saving"
msgstr ""
#: source/ubl-strings.h:2
msgid "Lock global configration loading"
msgid ""
"https://wiki.ublinux.com/Software/Programs_and_utilities/All/ubl-settings-keyboard"
msgstr ""
#: source/ubl-strings.h:4 source/ubl-strings.h:42
#: source/ubl-strings.h:3 source/ubl-strings.h:8
msgid "Keyboard"
msgstr ""
#: source/ubl-strings.h:5
#: source/ubl-strings.h:4
msgid "Keyboard configuration"
msgstr ""
#: source/ubl-strings.h:7
msgid "Operation succeeded"
msgstr ""
#: source/ubl-strings.h:8
msgid ""
"Warning! Application was launched without root - root-dependent actions are "
"locked"
msgstr ""
#: source/ubl-strings.h:10
msgid "About"
msgstr ""
#: source/ubl-strings.h:11
msgid "Documentation"
msgstr ""
#: source/ubl-strings.h:13
msgid "Save to local configuration"
msgstr ""
#: source/ubl-strings.h:14
msgid "Save to global configuration"
msgstr ""
#: source/ubl-strings.h:15
msgid "Save configuration"
msgstr ""
#: source/ubl-strings.h:16
msgid "Save"
msgstr ""
#: source/ubl-strings.h:18
msgid "Load local configuration"
msgstr ""
#: source/ubl-strings.h:19
msgid "Load global configuration"
msgstr ""
#: source/ubl-strings.h:20
msgid "Load"
msgstr ""
#: source/ubl-strings.h:22
msgid "Cancel"
msgstr ""
#: source/ubl-strings.h:24
msgid "Would you like to read documentation in the Web?"
msgstr ""
#: source/ubl-strings.h:25
msgid ""
"You will be redirected to documentation website where documentation is\n"
"translated and supported by community."
msgstr ""
#: source/ubl-strings.h:26
msgid "Always redirect to online documentation"
msgstr ""
#: source/ubl-strings.h:27
msgid "Open documentation"
msgstr ""
#: source/ubl-strings.h:28
msgid "Project Home Page"
msgstr ""
#: source/ubl-strings.h:29
msgid "Nothing were chosen"
msgstr ""
#: source/ubl-strings.h:32
msgid "Global configuration loading succseeded."
msgstr ""
#: source/ubl-strings.h:33
msgid "Local configuration loading succseeded."
msgstr ""
#: source/ubl-strings.h:34
msgid "Config loading failed"
msgstr ""
#: source/ubl-strings.h:36
msgid "Local and global configuration saving succseeded."
msgstr ""
#: source/ubl-strings.h:37
msgid "Global configuration saving succseeded."
msgstr ""
#: source/ubl-strings.h:38
msgid "Local configuration saving succseeded."
msgstr ""
#: source/ubl-strings.h:40
#: source/ubl-strings.h:6
msgid "Console"
msgstr ""
#: source/ubl-strings.h:41
#: source/ubl-strings.h:7
msgid "Num Lock on boot:"
msgstr ""
#: source/ubl-strings.h:43
#: source/ubl-strings.h:9 source/ubl-strings.h:23
msgid "Keyboard model:"
msgstr ""
#: source/ubl-strings.h:44
#: source/ubl-strings.h:10
msgid "Keyboard options:"
msgstr ""
#: source/ubl-strings.h:45
#: source/ubl-strings.h:11
msgid "Keyboard layouts:"
msgstr ""
#: source/ubl-strings.h:46
#: source/ubl-strings.h:12
msgid "Pick an option"
msgstr ""
#: source/ubl-strings.h:47
#: source/ubl-strings.h:13
msgid "Move layout up"
msgstr ""
#: source/ubl-strings.h:48
#: source/ubl-strings.h:14
msgid "Move layout down"
msgstr ""
#: source/ubl-strings.h:49
#: source/ubl-strings.h:15
msgid "Add layout"
msgstr ""
#: source/ubl-strings.h:50
#: source/ubl-strings.h:16
msgid "Remove layout"
msgstr ""
#: source/ubl-strings.h:51
#: source/ubl-strings.h:17
msgid "Default"
msgstr ""
#: source/ubl-strings.h:52
#: source/ubl-strings.h:18 source/ubl-strings.h:30
msgid "On"
msgstr ""
#: source/ubl-strings.h:53
#: source/ubl-strings.h:19 source/ubl-strings.h:31
msgid "Off"
msgstr ""
#: source/ubl-strings.h:54
#: source/ubl-strings.h:20
msgid "Accept"
msgstr ""
msgid "Afrikaans"
msgstr ""
msgid "Arabic"
msgstr ""
msgid "Assamese"
msgstr ""
msgid "Azerbaijani"
msgstr ""
msgid "Belarusian"
msgstr ""
msgid "Bulgarian"
msgstr ""
msgid "Bengali"
msgstr ""
msgid "Bosnian"
msgstr ""
msgid "Catalan"
msgstr ""
msgid "Czech"
msgstr ""
msgid "Danish"
msgstr ""
msgid "German"
msgstr ""
msgid "Greek"
msgstr ""
msgid "English"
msgstr ""
msgid "Spanish"
msgstr ""
msgid "Estonian"
msgstr ""
msgid "Finnish"
msgstr ""
msgid "French"
msgstr ""
msgid "Gujarati"
msgstr ""
msgid "Hebrew"
msgstr ""
msgid "Hindi"
msgstr ""
msgid "Croatian"
msgstr ""
msgid "Hungarian"
msgstr ""
msgid "Armenian"
msgstr ""
msgid "Indonesian"
msgstr ""
msgid "Icelandic"
msgstr ""
msgid "Italian"
msgstr ""
msgid "Japanese"
msgstr ""
msgid "Georgian"
msgstr ""
msgid "Kazakh"
msgstr ""
msgid "Kannada"
msgstr ""
msgid "Korean"
msgstr ""
msgid "Kashmiri"
msgstr ""
msgid "Kurdish"
msgstr ""
msgid "Kirghiz"
msgstr ""
msgid "Lithuanian"
msgstr ""
msgid "Latvian"
msgstr ""
msgid "Macedonian"
msgstr ""
msgid "Malayalam"
msgstr ""
msgid "Marathi"
msgstr ""
msgid "Malay"
msgstr ""
msgid "Maltese"
msgstr ""
msgid "Bokmal"
msgstr ""
msgid "Dutch"
msgstr ""
msgid "Nynorsk"
msgstr ""
msgid "Oriya"
msgstr ""
msgid "Punjabi"
msgstr ""
msgid "Polish"
msgstr ""
msgid "Portuguese"
msgstr ""
msgid "Romanian"
msgstr ""
msgid "Russian"
msgstr ""
msgid "Sanskrit"
msgstr ""
msgid "Slovak"
msgstr ""
msgid "Slovenian"
msgstr ""
msgid "Albanian"
msgstr ""
msgid "Serbian"
msgstr ""
msgid "Swedish"
#: source/ubl-strings.h:20
msgid "Cancel"
msgstr ""
msgid "Tamil"
#: source/ubl-strings.h:22
msgid "System"
msgstr ""
msgid "Telugu"
#: source/ubl-strings.h:24
msgid "Layouts:"
msgstr ""
msgid "Thai"
#: source/ubl-strings.h:25
msgid "Default layout"
msgstr ""
msgid "Turkish"
#: source/ubl-strings.h:26
msgid "Changing the layout:"
msgstr ""
msgid "Ukrainian"
#: source/ubl-strings.h:27
msgid "Additional options:"
msgstr ""
msgid "American"
#: source/ubl-strings.h:28
msgid "Set Compose (Multi_Key) to the right Win key"
msgstr ""
msgid "Vietnamese"
#: source/ubl-strings.h:29
msgid "Scroll Lock indication when switching layouts"
msgstr ""
msgid "Simplified Chinese"
#: source/ubl-strings.h:32
msgid "NumLock:"
msgstr ""
msgid "Traditional Chinese"
#: source/ubl-strings.h:33
msgid "Setting up TTY VT"
msgstr ""
msgid "Chinese"
#: source/ubl-strings.h:34
msgid "Key layout and switch:"
msgstr ""
msgid "Generic 86-key PC"
#: source/ubl-strings.h:35
msgid "Keyboard layout"
msgstr ""
msgid "Generic 101-key PC"
#: source/ubl-strings.h:36
msgid "Designation"
msgstr ""
msgid "Generic 102-key PC"
#: source/ubl-strings.h:37
msgid "Variant"
msgstr ""
msgid "Generic 104-key PC"
#: source/ubl-strings.h:38
msgid "Name"
msgstr ""
msgid "Generic 104-key PC with L-shaped Enter key"
#: source/ubl-strings.h:39
msgid "Description"
msgstr ""
msgid "Generic 105-key PC"
#: source/ubl-strings.h:20
msgid "Options:"
msgstr ""
msgid "Dell 101-key PC"
#: source/ubl-strings.h:20
msgid "Additional key layout and switch:"
msgstr ""
msgid "Dell Latitude laptop"
#: source/ubl-strings.h:20
msgid "Font:"
msgstr ""
msgid "Dell Precision M65 laptop"
#: source/ubl-strings.h:20
msgid "Group"
msgstr ""
msgid "Dell Inspiron 6000/8000 laptop"
#: source/ubl-strings.h:20
msgid "Additional key layout for the keyboard"
msgstr ""
msgid "Dell Precision M laptop"
#: source/ubl-strings.h:20
msgid "Font"
msgstr ""
msgid "Fujitsu-Siemens Amilo laptop"
#: source/ubl-strings.h:20
msgid "Are you sure you want to remove current option?"
msgstr ""
msgid "Hewlett-Packard Mini 110 laptop"
#: source/ubl-strings.h:20
msgid "Option deletion"
msgstr ""
msgid "Asus laptop"
#: source/ubl-strings.h:20
msgid "Are you sure you want to remove current layout?"
msgstr ""
msgid "Apple laptop"
#: source/ubl-strings.h:20
msgid "Layout deletion"
msgstr ""
msgid "eMachines m6800 laptop"
#: source/ubl-strings.h:20
msgid "Manual input:"
msgstr ""

@ -18,469 +18,180 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#: source/ubl-strings.h:1
msgid "Version:"
msgstr "Версия:"
#: source/ubl-strings.h:2
msgid "ubl-settings-keyboard version:"
msgstr "Версия ubl-settings-keyboard: "
#: source/ubl-strings.h:2
msgid "Usage:"
msgstr "Использование:"
#: source/ubl-strings.h:2
msgid "[OPTIONS]"
msgstr "[АРГУМЕНТЫ]"
#: source/ubl-strings.h:2
msgid "Options:"
msgstr "Аргументы:"
#: source/ubl-strings.h:2
msgid "Show this help"
msgstr "Показать параметры справки"
#: source/ubl-strings.h:2
msgid "Show package version"
msgstr "Показать текущую версию"
#: source/ubl-strings.h:2
msgid "Lock this help menu"
msgstr "Блокировка вызова справки"
#: source/ubl-strings.h:2
msgid "Lock configuration saving"
msgstr "Блокировка сохранения локальной и глобальной конфигурации"
#: source/ubl-strings.h:2
msgid "Lock local configration saving"
msgstr "Блокировка сохранения локальной конфигурации"
#: source/ubl-strings.h:2
msgid "Lock global configration saving"
msgstr "Блокировка сохранения глобальной конфигурации"
#: source/ubl-strings.h:2
msgid "Lock global configration loading"
msgstr "Блокировка загрузки глобальной конфигурации"
msgid ""
"https://wiki.ublinux.com/Software/Programs_and_utilities/All/ubl-settings-"
"keyboard"
msgstr "https://wiki.ublinux.com/Software/Programs_and_utilities/All/ubl-settings-"
"keyboard"
#: source/ubl-strings.h:4 source/ubl-strings.h:42
#: source/ubl-strings.h:3 source/ubl-strings.h:8
msgid "Keyboard"
msgstr "Клавиатура"
#: source/ubl-strings.h:5
#: source/ubl-strings.h:4
msgid "Keyboard configuration"
msgstr "Настройки Клавиатуры"
#: source/ubl-strings.h:7
msgid "Operation succeeded"
msgstr "Операция завершена"
#: source/ubl-strings.h:8
msgid ""
"Warning! Application was launched without root - root-dependent actions are "
"locked"
msgstr ""
"Внимание! Приложение было запущено без прав суперпользователя - действия, "
"требующие их наличия заблокированы"
#: source/ubl-strings.h:10
msgid "About"
msgstr "О программе"
#: source/ubl-strings.h:11
msgid "Documentation"
msgstr "Справка"
#: source/ubl-strings.h:13
msgid "Save to local configuration"
msgstr "Сохранить в локальную конфигурацию"
#: source/ubl-strings.h:14
msgid "Save to global configuration"
msgstr "Сохранить в глобальную конфигурацию"
#: source/ubl-strings.h:15
msgid "Save configuration"
msgstr "Сохранить конфигурацию"
#: source/ubl-strings.h:16
msgid "Save"
msgstr "Сохранить"
#: source/ubl-strings.h:18
msgid "Load local configuration"
msgstr "Загрузить локальную конфигуруцию"
#: source/ubl-strings.h:19
msgid "Load global configuration"
msgstr "Загрузить глобальную конфигурацию"
#: source/ubl-strings.h:20
msgid "Load"
msgstr "Загрузить"
#: source/ubl-strings.h:22
msgid "Cancel"
msgstr "Отмена"
#: source/ubl-strings.h:24
msgid "Would you like to read documentation in the Web?"
msgstr "Вы хотите прочитать справку в Сети?"
#: source/ubl-strings.h:25
msgid ""
"You will be redirected to documentation website where documentation is\n"
"translated and supported by community."
msgstr ""
"Вы будете перенаправлены на сайт с документацией, где страницы помощи\n"
"переводятся и поддерживаются сообществом."
#: source/ubl-strings.h:26
msgid "Always redirect to online documentation"
msgstr "Всегда перенаправлять"
#: source/ubl-strings.h:27
msgid "Open documentation"
msgstr "Прочитать справку"
#: source/ubl-strings.h:28
msgid "Project Home Page"
msgstr "Домашняя страница проекта"
#: source/ubl-strings.h:29
msgid "Nothing were chosen"
msgstr "Ничего не было выбрано"
#: source/ubl-strings.h:32
msgid "Global configuration loading succseeded."
msgstr "Успешно загружена глобальная конфигурация"
#: source/ubl-strings.h:33
msgid "Local configuration loading succseeded."
msgstr "Успешно загружена локальная конфигурация"
#: source/ubl-strings.h:34
msgid "Config loading failed"
msgstr "Ошибка загрузки конфигурации"
#: source/ubl-strings.h:36
msgid "Local and global configuration saving succseeded."
msgstr "Успешно записаны локальная и глобальная конфигурация"
#: source/ubl-strings.h:37
msgid "Global configuration saving succseeded."
msgstr "Успешно записана глобальная конфигурация"
#: source/ubl-strings.h:38
msgid "Local configuration saving succseeded."
msgstr "Успешно записана локальная конфигурация"
#: source/ubl-strings.h:40
#: source/ubl-strings.h:6
msgid "Console"
msgstr "Консоль"
#: source/ubl-strings.h:41
#: source/ubl-strings.h:7
msgid "Num Lock on boot:"
msgstr "Num Lock при загрузке:"
#: source/ubl-strings.h:43
#: source/ubl-strings.h:9 source/ubl-strings.h:23
msgid "Keyboard model:"
msgstr "Модель клавиатуры:"
#: source/ubl-strings.h:44
#: source/ubl-strings.h:10
msgid "Keyboard options:"
msgstr "Опции клавиатуры:"
#: source/ubl-strings.h:45
#: source/ubl-strings.h:11
msgid "Keyboard layouts:"
msgstr "Раскладки клавиатуры:"
#: source/ubl-strings.h:46
#: source/ubl-strings.h:12
msgid "Pick an option"
msgstr "Выбрать опцию"
#: source/ubl-strings.h:47
#: source/ubl-strings.h:13
msgid "Move layout up"
msgstr "Переместить раскладку выше"
#: source/ubl-strings.h:48
#: source/ubl-strings.h:14
msgid "Move layout down"
msgstr "Переместить раскладку ниже"
#: source/ubl-strings.h:49
#: source/ubl-strings.h:15
msgid "Add layout"
msgstr "Добавить раскладку"
#: source/ubl-strings.h:50
#: source/ubl-strings.h:16
msgid "Remove layout"
msgstr "Удалить раскладку"
#: source/ubl-strings.h:51
#: source/ubl-strings.h:17
msgid "Default"
msgstr "По умолчанию"
#: source/ubl-strings.h:52
#: source/ubl-strings.h:18 source/ubl-strings.h:30
msgid "On"
msgstr "Включить"
#: source/ubl-strings.h:53
#: source/ubl-strings.h:19 source/ubl-strings.h:31
msgid "Off"
msgstr "Выключить"
#: source/ubl-strings.h:54
#: source/ubl-strings.h:20
msgid "Accept"
msgstr "Принять"
msgid "Afrikaans"
msgstr "Африканский"
msgid "Arabic"
msgstr "Арабский"
msgid "Assamese"
msgstr "Ассамский"
msgid "Azerbaijani"
msgstr "Азербайджанский"
msgid "Belarusian"
msgstr "Беларусский"
msgid "Bulgarian"
msgstr "Болгарский"
msgid "Bengali"
msgstr "Бенгальский"
msgid "Bosnian"
msgstr "Боснийский"
msgid "Catalan"
msgstr "Каталонский"
msgid "Czech"
msgstr "Чешский"
msgid "Danish"
msgstr "Датский"
msgid "German"
msgstr "Немецкий"
msgid "Greek"
msgstr "Греческий"
msgid "English"
msgstr "Английский"
msgid "Spanish"
msgstr "Испанский"
msgid "Estonian"
msgstr "Эстонский"
msgid "Finnish"
msgstr "Финский"
msgid "French"
msgstr "Французский"
msgid "Gujarati"
msgstr "Гуджаратский"
msgid "Hebrew"
msgstr "Иврит"
msgid "Hindi"
msgstr "Хинди"
msgid "Croatian"
msgstr "Хорватский"
msgid "Hungarian"
msgstr "Венгерский"
msgid "Armenian"
msgstr "Армянский"
msgid "Indonesian"
msgstr "Индонезийский"
msgid "Icelandic"
msgstr "Исландский"
msgid "Italian"
msgstr "Итальянский"
msgid "Japanese"
msgstr "Японский"
msgid "Georgian"
msgstr "Грузинский"
msgid "Kazakh"
msgstr "Казахский"
msgid "Kannada"
msgstr "Каннада"
msgid "Korean"
msgstr "Корейский"
msgid "Kashmiri"
msgstr "Кашмирский"
msgid "Kurdish"
msgstr "Курдский"
msgid "Kirghiz"
msgstr "Киргизский"
msgid "Lithuanian"
msgstr "Литовский"
msgid "Latvian"
msgstr "Латышский"
msgid "Macedonian"
msgstr "Македонский"
msgid "Malayalam"
msgstr "Малаялам"
msgid "Marathi"
msgstr "Маратхи"
msgid "Malay"
msgstr "Малайский"
msgid "Maltese"
msgstr "Мальтийский"
msgid "Bokmal"
msgstr "Букмол"
msgid "Dutch"
msgstr "Нидерландский"
msgid "Nynorsk"
msgstr "Норвежский"
msgid "Oriya"
msgstr "Ория"
msgid "Punjabi"
msgstr "Панджаби"
msgid "Polish"
msgstr "Польский"
msgid "Portuguese"
msgstr "Португальский"
msgid "Romanian"
msgstr "Румынский"
msgid "Russian"
msgstr "Русский"
msgid "Sanskrit"
msgstr "Санскрит"
msgid "Slovak"
msgstr "Словацкий"
msgid "Slovenian"
msgstr "Словенский"
msgid "Albanian"
msgstr "Албанский"
msgid "Serbian"
msgstr "Сербский"
msgid "Swedish"
msgstr "Шведский"
msgid "Tamil"
msgstr "Тамильский"
#: source/ubl-strings.h:20
msgid "Cancel"
msgstr "Отмена"
msgid "Telugu"
msgstr "Тулугу"
#: source/ubl-strings.h:22
msgid "System"
msgstr "Система"
msgid "Thai"
msgstr "Тайский"
#: source/ubl-strings.h:24
msgid "Layouts:"
msgstr "Раскладки:"
msgid "Turkish"
msgstr "Турецкий"
#: source/ubl-strings.h:25
msgid "Default layout"
msgstr "Раскладка по умолчанию"
msgid "Ukrainian"
msgstr "Украинский"
#: source/ubl-strings.h:26
msgid "Changing the layout:"
msgstr "Смена раскладки:"
msgid "American"
msgstr "Американский английский"
#: source/ubl-strings.h:27
msgid "Additional options:"
msgstr "Дополнительные опции:"
msgid "Vietnamese"
msgstr "Вьетнамский"
#: source/ubl-strings.h:28
msgid "Set Compose (Multi_Key) to the right Win key"
msgstr "Установить Compose (Multi_Key) на клавишу \"правая Win\""
msgid "Simplified Chinese"
msgstr "Упрощённый Китайский"
#: source/ubl-strings.h:29
msgid "Scroll Lock indication when switching layouts"
msgstr "Индикация Scroll Lock при переключении раскладки"
msgid "Traditional Chinese"
msgstr "Традиционный Китайский"
#: source/ubl-strings.h:32
msgid "NumLock:"
msgstr "NumLock:"
msgid "Chinese"
msgstr "Китайский"
#: source/ubl-strings.h:33
msgid "Setting up TTY VT"
msgstr "Настройка TTY VT"
msgid "Generic 86-key PC"
msgstr "Обычная 86-клавишная"
#: source/ubl-strings.h:34
msgid "Key layout and switch:"
msgstr "Раскладка клавиш и переключатель:"
msgid "Generic 101-key PC"
msgstr "Обычная 101-клавишная"
#: source/ubl-strings.h:35
msgid "Keyboard layout"
msgstr "Раскладка клавиатуры"
msgid "Generic 102-key PC"
msgstr "Обычная 102-клавишная"
#: source/ubl-strings.h:36
msgid "Designation"
msgstr "Обозначение"
msgid "Generic 104-key PC"
msgstr "Обычная 104-клавишная"
#: source/ubl-strings.h:37
msgid "Variant"
msgstr "Вариант"
msgid "Generic 104-key PC with L-shaped Enter key"
msgstr "Обычная 104-клавишная (Enter в форме буквы L)"
#: source/ubl-strings.h:38
msgid "Name"
msgstr "Имя"
msgid "Generic 105-key PC"
msgstr "Обычная 105-клавишная"
#: source/ubl-strings.h:39
msgid "Description"
msgstr "Описание"
msgid "Dell 101-key PC"
msgstr "Dell 101-клавишная"
#: source/ubl-strings.h:20
msgid "Options:"
msgstr "Опции:"
msgid "Dell Latitude laptop"
msgstr "Ноутбук Dell Latitude"
#: source/ubl-strings.h:20
msgid "Additional key layout and switch:"
msgstr "Дополнительная раскладка клавиш и переключатель:"
msgid "Dell Precision M65 laptop"
msgstr "Ноутбук Dell Precision M65"
#: source/ubl-strings.h:20
msgid "Font:"
msgstr "Шрифт:"
msgid "Dell Inspiron 6000/8000 laptop"
msgstr "Ноутбук Dell Inspiron 6000/8000"
#: source/ubl-strings.h:20
msgid "Group"
msgstr "Группа"
msgid "Dell Precision M laptop"
msgstr "Ноутбук Dell Precision M"
#: source/ubl-strings.h:20
msgid "Additional key layout for the keyboard"
msgstr "Дополнительная раскладка клавиш для клавиатуры"
msgid "Fujitsu-Siemens Amilo laptop"
msgstr "Ноутбук Fujitsu-Siemens Amilo"
#: source/ubl-strings.h:20
msgid "Font"
msgstr "Шрифт"
msgid "Hewlett-Packard Mini 110 laptop"
msgstr "Ноутбук Hewlett-Packard Mini 110"
#: source/ubl-strings.h:20
msgid "Are you sure you want to remove current option?"
msgstr "Вы уверены что хотите удалить данную опцию?"
msgid "Asus laptop"
msgstr "Ноутбук Asus"
#: source/ubl-strings.h:20
msgid "Option deletion"
msgstr "Удаление опции"
msgid "Apple laptop"
msgstr "Ноутбук Apple"
#: source/ubl-strings.h:20
msgid "Are you sure you want to remove current layout?"
msgstr "Вы уверены что хотите удалить данную раскладку?"
msgid "eMachines m6800 laptop"
msgstr "Ноутбук eMachines m6800"
#: source/ubl-strings.h:20
msgid "Layout deletion"
msgstr "Удаление раскладки"
#~ msgid "Acer laptop"
#~ msgstr "Ноутбук Acer"
#: source/ubl-strings.h:20
msgid "Manual input:"
msgstr "Ручной выбор:"

@ -34,7 +34,10 @@ set(DEPENDFILES
../ubl-settings-keyboard.glade
../ubl-settings-keyboard-layouts.glade
../ubl-settings-keyboard-options.glade
../layouts.csv
../ubl-settings-keyboard-keymaps.glade
../ubl-settings-keyboard-font.glade
../keymap-list.csv
../font-list.csv
../gresource.xml
../ubl-settings-keyboard.css
)
@ -74,6 +77,11 @@ endif()
set(SOURCE_FILES
ubl-settings-keyboard.c
ubl-settings-keyboard-layouts.c
ubl-settings-keyboard-options.c
ubl-settings-keyboard-save.c
ubl-settings-keyboard-font.c
ubl-settings-keyboard-keymaps.c
ubl-settings-keyboard.h
ubl-strings.h
)

@ -0,0 +1,90 @@
#include "ubl-settings-keyboard.h"
void on_font_accept(GtkWidget *, layouts_window *window){
GtkWidget *output_widget = g_object_get_data(G_OBJECT(window->Window),"output");
if (gtk_switch_get_active(GTK_SWITCH(window->OptionsFilterCombo))){
gtk_entry_set_text(GTK_ENTRY(output_widget),"");
yon_config_remove_by_key(console_keymap_parameter);
on_subwindow_close(window->Window);
return;
}
char *target = (char*)gtk_entry_get_text(GTK_ENTRY(window->OptionsEntry));
if (yon_char_is_empty(target)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(NOTHING_CHOSEN_LABEL),5,BACKGROUND_IMAGE_FAIL_TYPE);
return;
}
gtk_entry_set_text(GTK_ENTRY(output_widget),target);
yon_config_register(console_font_parameter,console_font_parameter_command,target);
on_subwindow_close(window->Window);
}
void on_font_selection_changed(GtkWidget *,layouts_window *window){
GtkTreeModel *model;
GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->MainTree)),&model, &iter)){
char *target;
gtk_tree_model_get(model,&iter,0,&target,-1);
gtk_entry_set_text(GTK_ENTRY(window->OptionsEntry),target);
} else {
gtk_entry_set_text(GTK_ENTRY(window->OptionsEntry),"");
}
}
layouts_window *yon_font_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_font_path);
layouts_window *window = malloc(sizeof(layouts_window));
memset(window,0,sizeof(layouts_window));
window->Window = yon_gtk_builder_get_widget(builder,"Window");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->MainTree = yon_gtk_builder_get_widget(builder,"FontTree");
window->OptionsEntry = yon_gtk_builder_get_widget(builder,"ManualEntry");
window->OptionsFilterCombo = yon_gtk_builder_get_widget(builder,"DefaultSwitch");
window->OptionsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"FontList"));
window->parameters = yon_char_new(config(keyboard_layout_parameter));
g_signal_connect(G_OBJECT(window->OptionsFilterCombo),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->MainTree);
g_signal_connect(G_OBJECT(window->OptionsFilterCombo),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->OptionsEntry);
g_signal_connect(G_OBJECT(window->MainTree),"cursor-changed",G_CALLBACK(on_font_selection_changed),window);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
int font_size;
int size;
config_str fonts = yon_resource_open_file(font_list_path, &font_size);
for (int i=0;i<font_size;i++){
yon_char_remove_last_symbol(fonts[i],'\n');
}
GtkTreeIter iter;
config_str parameters = yon_config_load(tty_font_command,&size);
char *config_value = config(console_font_parameter);
if (yon_char_is_empty(config_value)){
gtk_switch_set_active(GTK_SWITCH(window->OptionsFilterCombo),0);
}
for (int i=0;i<size;i++){
yon_char_remove_last_symbol(parameters[i],'\n');
char *found = yon_char_parsed_check_exist_begins_with(fonts,font_size,parameters[i]);
if (found){
int parsed_size;
config_str parsed = yon_char_parse(found,&parsed_size,";");
gtk_list_store_append(GTK_LIST_STORE(window->OptionsList),&iter);
gtk_list_store_set(GTK_LIST_STORE(window->OptionsList),&iter,0,parsed[0],1,parsed[1],-1);
if (!yon_char_is_empty(config_value)&&!strcmp(parsed[0],config_value)){
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->MainTree)),&iter);
gtk_entry_set_text(GTK_ENTRY(window->OptionsEntry),config_value);
}
}
}
if (yon_char_is_empty(config_value)){
gtk_switch_set_active(GTK_SWITCH(window->OptionsFilterCombo),1);
}
return window;
}
void yon_font_open(GtkWidget *,main_window *widgets){
layouts_window *window = yon_font_window_new();
g_object_set_data(G_OBJECT(window->Window),"output",widgets->TTYFontEntry);
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),FONT_TITLE_LABEL,icon_path,"font-window");
g_object_set_data(G_OBJECT(window->Window),"widgets",widgets);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_font_accept),window);
}

@ -0,0 +1,108 @@
#include "ubl-settings-keyboard.h"
void on_keymaps_accept(GtkWidget *, layouts_window *window){
main_window *widgets = g_object_get_data(G_OBJECT(window->Window),"widgets");
GtkWidget *output_widget = g_object_get_data(G_OBJECT(window->Window),"output");
if (gtk_switch_get_active(GTK_SWITCH(window->OptionsFilterCombo))){
gtk_entry_set_text(GTK_ENTRY(output_widget),"");
yon_config_remove_by_key(console_keymap_parameter);
on_subwindow_close(window->Window);
return;
}
char *target = (char*)gtk_entry_get_text(GTK_ENTRY(window->OptionsEntry));
if (yon_char_is_empty(target)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(NOTHING_CHOSEN_LABEL),5,BACKGROUND_IMAGE_FAIL_TYPE);
return;
}
if (output_widget == widgets->TTYLayoutEntry){
gtk_entry_set_text(GTK_ENTRY(output_widget),target);
yon_config_register(console_keymap_parameter,console_keymap_parameter_command,target);
} else {
gtk_entry_set_text(GTK_ENTRY(output_widget),target);
yon_config_register(console_keymap_toggle_parameter,console_keymap_parameter_command,target);
}
on_subwindow_close(window->Window);
}
void on_keymaps_selection_changed(GtkWidget *,layouts_window *window){
GtkTreeModel *model;
GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->MainTree)),&model, &iter)){
char *target;
gtk_tree_model_get(model,&iter,0,&target,-1);
gtk_entry_set_text(GTK_ENTRY(window->OptionsEntry),target);
} else {
gtk_entry_set_text(GTK_ENTRY(window->OptionsEntry),"");
}
}
layouts_window *yon_keymaps_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_keymaps_path);
layouts_window *window = malloc(sizeof(layouts_window));
memset(window,0,sizeof(layouts_window));
window->Window = yon_gtk_builder_get_widget(builder,"Window");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->MainTree = yon_gtk_builder_get_widget(builder,"KeymapTree");
window->parameters = yon_char_new(config(keyboard_layout_parameter));
window->OptionsEntry = yon_gtk_builder_get_widget(builder,"ManualEntry");
window->OptionsFilterCombo = yon_gtk_builder_get_widget(builder,"DefaultSwitch");
window->OptionsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"KeymapList"));
g_signal_connect(G_OBJECT(window->OptionsFilterCombo),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->MainTree);
g_signal_connect(G_OBJECT(window->OptionsFilterCombo),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->OptionsEntry);
g_signal_connect(G_OBJECT(window->MainTree),"cursor-changed",G_CALLBACK(on_keymaps_selection_changed),window);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
return window;
}
void yon_keymaps_open(GtkWidget *self,main_window *widgets){
layouts_window *window = yon_keymaps_window_new();
if (self == widgets->TTYLayoutButton){
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),KEYBOARD_LAYOUT_LABEL,icon_path,"font-window");
g_object_set_data(G_OBJECT(window->Window),"output",widgets->TTYLayoutEntry);
} else {
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),KEYMAP_TITLE_LABEL,icon_path,"font-window");
g_object_set_data(G_OBJECT(window->Window),"output",widgets->TTYSecondLayoutEntry);
}
g_object_set_data(G_OBJECT(window->Window),"widgets",widgets);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_keymaps_accept),window);
int keymap_size;
int size;
config_str keymaps = yon_resource_open_file(keymap_list_path, &keymap_size);
for (int i=0;i<keymap_size;i++){
yon_char_remove_last_symbol(keymaps[i],'\n');
}
GtkTreeIter iter;
config_str parameters = yon_config_load(tty_keymap_command,&size);
char *config_value = NULL;
if (self == widgets->TTYLayoutButton){
config_value = config(console_keymap_parameter);
} else {
config_value = config(console_keymap_toggle_parameter);
}
if (yon_char_is_empty(config_value)){
gtk_switch_set_active(GTK_SWITCH(window->OptionsFilterCombo),0);
}
for (int i=0;i<size;i++){
yon_char_remove_last_symbol(parameters[i],'\n');
char *found = yon_char_parsed_check_exist_begins_with(keymaps,keymap_size,parameters[i]);
if (found){
int parsed_size;
config_str parsed = yon_char_parse(found,&parsed_size,";");
gtk_list_store_append(GTK_LIST_STORE(window->OptionsList),&iter);
gtk_list_store_set(GTK_LIST_STORE(window->OptionsList),&iter,0,parsed[0],1,parsed[1],2,parsed[2],-1);
if (!yon_char_is_empty(config_value)&&!strcmp(parsed[0],config_value)){
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->MainTree)),&iter);
gtk_entry_set_text(GTK_ENTRY(window->OptionsEntry),config_value);
}
}
}
if (yon_char_is_empty(config_value)){
gtk_switch_set_active(GTK_SWITCH(window->OptionsFilterCombo),1);
}
}

@ -0,0 +1,253 @@
#include "ubl-settings-keyboard.h"
void on_layouts_accept(GtkWidget *self, layouts_window *window){
main_window *widgets = g_object_get_data(G_OBJECT(window->Window),"widgets");
if (!yon_char_is_empty(window->parameters)){
yon_config_register(keyboard_layout_parameter,keyboard_layout_parameter_command,window->parameters);
} else {
yon_config_remove_by_key(keyboard_layout_parameter);
}
on_subwindow_close(self);
yon_interface_update(widgets);
}
void on_layouts_chosen(GtkCellRenderer *, gchar *path, layouts_window *window){
GtkTreeIter iter;
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->list),&iter,path);
int chosen;
char *layout, *variant;
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,0,&layout,1,&variant,3,&chosen,-1);
gtk_tree_store_set(GTK_TREE_STORE(window->list),&iter,3,!chosen,-1);
char *full_layout = NULL;
if (!yon_char_is_empty(variant)){
full_layout = yon_char_unite(layout,"_",variant,NULL);
} else {
full_layout = layout;
}
if (!chosen){
char *temp = yon_char_append_element(window->parameters,full_layout,",");
free(window->parameters);
window->parameters = temp;
} else {
char *temp = yon_char_remove_element(window->parameters,full_layout,",");
free(window->parameters);
window->parameters = temp;
}
free(full_layout);
}
void on_system_layouts_add(GtkWidget *, main_window *widgets){
yon_layouts_add(GTK_TREE_VIEW(widgets->LayoutTree),widgets->LayoutsList,widgets);
}
layouts_window *yon_layouts_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_layouts_path);
layouts_window *window = malloc(sizeof(layouts_window));
memset(window,0,sizeof(layouts_window));
window->Window = yon_gtk_builder_get_widget(builder,"Window");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->ChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ChosenCell"));
window->MainTree = yon_gtk_builder_get_widget(builder,"LayoutsTree");
window->parameters = yon_char_new(config(keyboard_layout_parameter));
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->ChosenCell),"toggled",G_CALLBACK(on_layouts_chosen),window);
return window;
}
void yon_layouts_add(GtkTreeView *, GtkListStore *, main_window *widgets){
layouts_window *window = yon_layouts_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),TITLE_LABEL,icon_path,"layout_window");
window->list = main_config.layouts_store;
gtk_tree_view_set_model(GTK_TREE_VIEW(window->MainTree), GTK_TREE_MODEL(main_config.layouts_store));
gtk_tree_view_column_clicked(GTK_TREE_VIEW_COLUMN(gtk_tree_view_get_column(GTK_TREE_VIEW(window->MainTree),0)));
yon_layout_build(window);
g_object_set_data(G_OBJECT(window->Window),"widgets",widgets);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_layouts_accept),window);
char *languages = config(keyboard_layout_parameter);
int size;
config_str parsed = yon_char_parse(languages,&size,",");
GtkTreeIter iter,itar;
for_iter(window->list,&iter){
int found = 0;
char *id, *id_var;
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,0,&id,-1);
for (int i=0;i<size;i++){
char *key, *variant = NULL;
variant = yon_char_new(parsed[i]);
key = yon_char_divide_search(variant,"_",-1);
key = yon_char_new(parsed[i]);
if (!strcmp(id,key)&&((!variant))){
gtk_tree_store_set(GTK_TREE_STORE(window->list),&iter,3,1,-1);
found=1;
break;
}
}
if (!found) {
gtk_tree_store_set(GTK_TREE_STORE(window->list),&iter,3,0,-1);
}
if (gtk_tree_model_iter_children(GTK_TREE_MODEL(window->list),&itar,&iter)){
for (int valid2=1;valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(window->list),&itar)){
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,0,&id,1,&id_var,-1);
for (int i=0;i<size;i++){
char *key, *variant = NULL;
variant = yon_char_new(parsed[i]);
key = yon_char_divide_search(variant,"_",-1);
if (!strcmp(key,id)&&!yon_char_is_empty(id_var)&&!strcmp(variant,id_var)){
gtk_tree_store_set(GTK_TREE_STORE(window->list),&itar,3,1,-1);
found=1;
break;
}
}
}
}
}
}
void yon_layouts_remove(GtkTreeView *tree, GtkListStore *cur_list, main_window *widgets){
GtkTreeModel *model = GTK_TREE_MODEL(cur_list);
GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(tree),&model,&iter)){
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text = LAYOUT_REMOVE_LABEL;
data->title = LAYOUT_REMOVE_TITLE_LABEL;
if (yon_confirmation_dialog_call(widgets->Window,data)!=GTK_RESPONSE_ACCEPT) return;
char *layout, *variant;
gtk_tree_model_get(model,&iter,0,&layout,1,&variant,-1);
if (!yon_char_is_empty(variant)){
char *temp = yon_char_unite(layout,"_",variant,NULL);
free(layout);
layout = temp;
}
yon_config_remove_element(keyboard_layout_parameter,layout,",");
}
yon_interface_update(widgets);
}
void on_system_layouts_remove(GtkWidget *, main_window *widgets){
yon_layouts_remove(GTK_TREE_VIEW(widgets->LayoutTree),widgets->LayoutsList,widgets);
}
// standard functions
config_str yon_layout_get_children(char *layout_id, int *size){
(*size)=0;
config_str final = NULL;
for (int i=0;i<main_config.variants_size;i++){
int parsed_size;
config_str parsed = yon_char_parse(main_config.variants_list[i],&parsed_size,"|");
if (!strcmp(parsed[0],layout_id)){
yon_char_parsed_add_or_create_if_exists(final,size,main_config.variants_list[i]);
}
}
return final;
}
void yon_layout_load(char *layout,main_window *widgets){
GtkTreeIter iter;
if (strstr(layout,"_")){
char *cur_variant = yon_char_new(layout);
char *cur_layout = yon_char_divide_search(cur_variant,"_",-1);
for (int i=0;i<main_config.variants_size;i++){
int parsed_size;
config_str parsed = yon_char_parse(main_config.variants_list[i],&parsed_size,"|");
if (!strcmp(parsed[0],cur_layout)&&!strcmp(parsed[1],cur_variant)){
gtk_list_store_append(widgets->LayoutsList,&iter);
gtk_list_store_set(widgets->LayoutsList,&iter,0,parsed[0],1,parsed[1],2,_(parsed[2]),-1);
}
}
} else {
for (int i=0;i<main_config.layouts_size;i++){
int parsed_size;
config_str parsed = yon_char_parse(main_config.layouts_list[i],&parsed_size,"|");
if (!strcmp(parsed[0],layout)){
gtk_list_store_append(widgets->LayoutsList,&iter);
gtk_list_store_set(widgets->LayoutsList,&iter,0,parsed[0],2,_(parsed[1]),-1);
}
}
}
}
void yon_layout_build(layouts_window *window){
gtk_tree_store_clear(window->list);
GtkTreeIter parent;
GtkTreeIter iter;
int size;
config_str layouts = yon_config_load(layouts_command,&size);
for (int i=0;i<size;i++){
yon_char_remove_last_symbol(layouts[i],'\n');
int parsed_size;
config_str parsed = yon_char_parse(layouts[i],&parsed_size,"|");
gtk_tree_store_append(window->list,&parent,NULL);
gtk_tree_store_set(window->list,&parent,0,parsed[0],2,_(parsed[1]),-1);
int variants_size;
config_str variants = yon_layout_get_children(parsed[0],&variants_size);
yon_char_parsed_free(parsed,parsed_size);
for (int k=0;k<variants_size;k++){
parsed = yon_char_parse(variants[k],&parsed_size,"|");
gtk_tree_store_append(window->list,&iter,&parent);
gtk_tree_store_set(window->list,&iter,0,parsed[0],1,parsed[1],2,_(parsed[2]),-1);
yon_char_parsed_free(parsed,parsed_size);
}
yon_char_parsed_free(variants,variants_size);
}
yon_char_parsed_free(layouts,size);
}
void on_layout_move_up(GtkWidget *, main_window *widgets){
GtkTreeModel *model;
GtkTreeIter iter,*previter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LayoutTree)),&model,&iter)){
previter = gtk_tree_iter_copy(&iter);
if (!gtk_tree_model_iter_previous(model,previter)) return;
char *a, *b;
gtk_tree_model_get(model,&iter,0,&a,-1);
gtk_tree_model_get(model,previter,0,&b,-1);
char *layouts = config(keyboard_layout_parameter);
char *temp = yon_char_swap_element(layouts,a,b,",");
yon_config_register(keyboard_layout_parameter,keyboard_layout_parameter_command,temp);
free(temp);
gtk_list_store_swap(widgets->LayoutsList,&iter,previter);
gtk_tree_iter_free(previter);
}
}
void on_layout_move_down(GtkWidget *, main_window *widgets){
GtkTreeModel *model;
GtkTreeIter iter,*nextiter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LayoutTree)),&model,&iter)){
nextiter = gtk_tree_iter_copy(&iter);
if (!gtk_tree_model_iter_next(model,nextiter)) return;
char *a, *b;
gtk_tree_model_get(model,&iter,0,&a,-1);
gtk_tree_model_get(model,nextiter,0,&b,-1);
char *layouts = config(keyboard_layout_parameter);
char *temp = yon_char_swap_element(layouts,a,b,",");
yon_config_register(keyboard_layout_parameter,keyboard_layout_parameter_command,temp);
free(temp);
gtk_list_store_swap(widgets->LayoutsList,&iter,nextiter);
gtk_tree_iter_free(nextiter);
}
}
// void on_layout_dnd_inserted(GtkTreeModel *, GtkTreePath* , GtkTreeIter* iter, main_window *widgets){
// char *target;
// gtk_tree_model_get(GTK_TREE_MODEL(widgets->LayoutsList),iter,0,&target,-1);
// }
// void on_layout_dnd_deleted(GtkTreeModel *, GtkTreePath* , GtkTreeIter* iter, main_window *widgets){
// char *target;
// gtk_tree_model_get(GTK_TREE_MODEL(widgets->LayoutsList),iter,0,&target,-1);
// printf("%s\n",target);
// }

@ -0,0 +1,177 @@
#include "ubl-settings-keyboard.h"
void on_option_chosen(GtkCellRenderer *, gchar *path, layouts_window *window){
GtkTreeIter iter;
GtkTreeIter itar;
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->OptionsFilter),&iter,path);
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(window->OptionsFilter),&itar,&iter);
int chosen;
char *target;
gtk_tree_model_get(GTK_TREE_MODEL(window->OptionsList),&itar,0,&target,2,&chosen,-1);
gtk_list_store_set(GTK_LIST_STORE(window->OptionsList),&itar,2,!chosen,-1);
char *options_string = yon_char_new(gtk_entry_get_text(GTK_ENTRY(window->OptionsEntry)));
if (!chosen){
char *temp = yon_char_append_element(options_string,target,",");
gtk_entry_set_text(GTK_ENTRY(window->OptionsEntry),temp);
free(temp);
} else {
char *temp = yon_char_remove_element(options_string,target,",");
gtk_entry_set_text(GTK_ENTRY(window->OptionsEntry),temp);
free(temp);
}
}
gboolean yon_filter_refilter(GtkTreeModel *model, GtkTreeIter *iter, layouts_window *window){
char *target_id;
const char *id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->OptionsFilterCombo));
if (yon_char_is_empty(id)) return 0;
gtk_tree_model_get(model,iter,0,&target_id,-1);
char *filter_section = yon_char_divide_search(target_id,":",-1);
int result = !strcmp(filter_section,id);
if (target_id)
free(target_id);
if (filter_section)
free(filter_section);
return result;
}
void yon_options_setup(layouts_window *window){
int size;
config_str option_commands = yon_char_parsed_new(&size,
lv2_options_command,
lv3_options_command,
ctrl_options_command,
grp_led_options_command,
mod_led_options_command,
keypad_options_command,
kpdl_options_command,
caps_options_command,
altwin_options_command,
Compose_options_command,
compat_options_command,
currencysign_options_command,
lv5_options_command,
nbsp_options_command,
japan_options_command,
korean_options_command,
esperanto_options_command,
solaris_options_command,
terminate_options_command,
NULL);
char *command_full = yon_char_parsed_to_string(option_commands,size,"; ");
int options_size;
config_str options = yon_config_load(command_full,&options_size);
GtkTreeIter iter;
int filter_size;
config_str filter = NULL;
char *config_options = config(options_parameter);
for (int i=0;i<options_size;i++){
yon_char_remove_last_symbol(options[i],'\n');
int parsed_size;
config_str parsed = yon_char_parse(options[i],&parsed_size,"|");
gtk_list_store_append(window->OptionsList,&iter);
gtk_list_store_set(window->OptionsList,&iter,0,parsed[0],1,_(parsed[1]),2,yon_char_check_element(config_options,parsed[0],","),-1);
char *str = yon_char_new(parsed[0]);
char *type = yon_char_divide_search(str,":",-1);
if (yon_char_parsed_check_exist(filter,filter_size,type)==-1){
yon_char_parsed_add_or_create_if_exists(filter,&filter_size,type);
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->OptionsFilterCombo),type,type);
}
if (!yon_char_is_empty(str))free(str);
if (!yon_char_is_empty(type))free(type);
yon_char_parsed_free(parsed,parsed_size);
}
gtk_combo_box_set_active(GTK_COMBO_BOX(window->OptionsFilterCombo),0);
yon_char_parsed_free(filter,filter_size);
yon_char_parsed_free(option_commands,size);
}
void on_options_filter_changed(GtkWidget *, layouts_window *window){
gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(window->OptionsFilter));
}
void on_options_accept(GtkWidget *self, layouts_window *window){
main_window *widgets = g_object_get_data(G_OBJECT(window->Window),"widgets");
char *options = (char*)gtk_entry_get_text(GTK_ENTRY(window->OptionsEntry));
if (!yon_char_is_empty(options)){
yon_config_register(options_parameter,options_parameter_command,options);
} else {
yon_config_remove_by_key(options_parameter);
}
on_subwindow_close(self);
yon_interface_update(widgets);
}
void on_options_save(GtkWidget *,main_window *widgets){
char *main_id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->LayoutChangingCombo));
int parameter_parsed_size;
config_str parameter_parsed = NULL;
yon_char_parsed_add_or_create_if_exists(parameter_parsed,&parameter_parsed_size,!yon_char_is_empty(main_id)?main_id:"");
GtkTreeIter iter;
for_iter(GTK_TREE_MODEL(widgets->OptionsList),&iter){
char *cur_id;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->OptionsList),&iter,0,&cur_id,-1);
yon_char_parsed_add_or_create_if_exists(parameter_parsed,&parameter_parsed_size,cur_id);
}
char *final_parameter = yon_char_parsed_to_string_full(parameter_parsed,parameter_parsed_size,",");
yon_char_parsed_free(parameter_parsed,parameter_parsed_size);
if (!yon_char_is_empty(final_parameter)){
yon_config_register(options_parameter,options_parameter_command,final_parameter);
free(final_parameter);
} else {
yon_config_remove_by_key(options_parameter);
}
}
layouts_window *yon_options_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_options_path);
layouts_window *window = malloc(sizeof(layouts_window));
window->Window = yon_gtk_builder_get_widget(builder,"Window");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->MainTree = yon_gtk_builder_get_widget(builder,"OptionsTree");
window->OptionsFilterCombo = yon_gtk_builder_get_widget(builder,"OptionsFilterCombo");
window->OptionsEntry = yon_gtk_builder_get_widget(builder,"OptionsEntry");
window->OptionsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"OptionsList"));
window->OptionsFilter = GTK_TREE_MODEL(gtk_builder_get_object(builder,"OptionsFilter"));
window->ChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ChosenCell"));
g_signal_connect(G_OBJECT(window->OptionsFilterCombo),"changed",G_CALLBACK(on_options_filter_changed),window);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->ChosenCell),"toggled",G_CALLBACK(on_option_chosen),window);
gtk_tree_view_set_model(GTK_TREE_VIEW(window->MainTree),GTK_TREE_MODEL(window->OptionsFilter));
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(window->OptionsFilter),(GtkTreeModelFilterVisibleFunc)yon_filter_refilter,window,NULL);
yon_options_setup(window);
char *parameter_options = config(options_parameter);
gtk_entry_set_text(GTK_ENTRY(window->OptionsEntry),parameter_options);
return window;
}
void on_options_open(GtkWidget *, main_window *widgets){
layouts_window *window = yon_options_window_new();
g_object_set_data(G_OBJECT(window->Window),"widgets",widgets);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_options_accept),window);
}
void on_option_remove(GtkWidget*, main_window *widgets){
GtkTreeIter iter;
GtkTreeModel *model;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->OptionsTree)),&model, &iter)){
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text = OPTION_REMOVE_LABEL;
data->title = OPTION_REMOVE_TITLE_LABEL;
if (yon_confirmation_dialog_call(widgets->Window,data)!=GTK_RESPONSE_ACCEPT) return;
char *target;
gtk_tree_model_get(model,&iter,0,&target,-1);
yon_config_remove_element(options_parameter,target,",");
}
yon_interface_update(widgets);
}

@ -0,0 +1,126 @@
#include "ubl-settings-keyboard.h"
void on_save_done(main_window *, config_str output, int size){
char *final_output = yon_char_parsed_to_string(output,size,"");
if (final_output){
printf("%s\n",final_output);
free(final_output);
}
yon_char_parsed_free(output,size);
switch (main_config.save_config){
case YON_CONFIG_GLOBAL:
yon_ubl_status_box_render(yon_char_get_localised_from_lib(GLOBAL_SAVE_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
break;
case YON_CONFIG_LOCAL:
yon_ubl_status_box_render(yon_char_get_localised_from_lib(LOCAL_SAVE_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
break;
case YON_CONFIG_BOTH:
yon_ubl_status_box_render(yon_char_get_localised_from_lib(GLOBAL_LOCAL_SAVE_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
break;
}
}
void yon_interface_save(main_window *widgets){
if (gtk_switch_get_active(GTK_SWITCH(widgets->DefaultLayoutsSwitch))){
yon_config_remove_by_key(keyboard_layout_parameter);
} else if (yon_config_check_ignore(keyboard_layout_parameter)){
GtkTreeModel *model = GTK_TREE_MODEL(widgets->LayoutsList);
GtkTreeIter iter;
int parameters_size;
config_str parameters = NULL;
for_iter(model,&iter){
char *target;
gtk_tree_model_get(model,&iter,0,&target,-1);
yon_char_parsed_add_or_create_if_exists(parameters,&parameters_size,target);
}
char *final = yon_char_parsed_to_string(parameters,parameters_size,",");
yon_config_register(keyboard_layout_parameter,keyboard_layout_parameter_command,final);
}
}
void on_config_global_local_save(GtkWidget *, main_window *widgets){
yon_interface_save(widgets);
main_config.save_config=YON_CONFIG_BOTH;
yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_global_command,NULL);
}
void on_config_local_save(GtkWidget *, main_window *widgets){
yon_interface_save(widgets);
main_config.save_config=YON_CONFIG_LOCAL;
yon_save_proceed("system",YON_CONFIG_LOCAL,config_get_local_command,NULL);
}
void on_config_global_save(GtkWidget *, main_window *widgets){
yon_interface_save(widgets);
main_config.save_config=YON_CONFIG_GLOBAL;
yon_save_proceed("global",YON_CONFIG_GLOBAL,config_get_global_command,NULL);
}
void on_config_custom_save(GtkWidget *, main_window *widgets){
yon_interface_save(widgets);
main_config.save_config=YON_CONFIG_LOCAL;
template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_CUSTOM,yon_config_get_custom_command("system"),NULL);
if (window){};
}
void on_config_local_load(GtkWidget *,main_window *widgets){
yon_load_proceed(YON_CONFIG_LOCAL);
yon_ubl_status_box_render(yon_char_get_localised_from_lib(LOCAL_LOAD_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
yon_interface_update(widgets);
main_config.load_mode=1;
}
void on_config_global_load(GtkWidget *,main_window *widgets){
yon_load_proceed(YON_CONFIG_GLOBAL);
yon_ubl_status_box_render(yon_char_get_localised_from_lib(GLOBAL_LOAD_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
yon_interface_update(widgets);
main_config.load_mode=0;
}
void on_config_custom_load(GtkWidget *,main_window *widgets){
yon_load_proceed(YON_CONFIG_CUSTOM);
textdomain(template_ui_LocaleName);
yon_ubl_status_box_render(yon_char_get_localised_from_lib(LOCAL_LOAD_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
textdomain(LocaleName);
main_config.load_mode=3;
yon_interface_update(widgets);
}
void yon_load_proceed(YON_CONFIG_TYPE type){
yon_config_clean();
if (!yon_char_is_empty(config_get_default_command))
yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL);
if (type==YON_CONFIG_GLOBAL){
yon_config_load_config(type,yon_debug_output("%s\n",config_get_global_command),NULL);
} else if (type==YON_CONFIG_LOCAL){
yon_config_load_config(type,config_get_local_command,NULL);
} else if (type==YON_CONFIG_CUSTOM){
char *path="";
textdomain(template_ui_LocaleName);
GtkWidget *dialog = gtk_file_chooser_dialog_new(template_app_information.app_title,NULL,GTK_FILE_CHOOSER_ACTION_SAVE,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL);
textdomain(LocaleName);
gtk_window_set_icon_name(GTK_WINDOW(dialog),"com.ublinux.ubl-settings-services");
gtk_window_set_title(GTK_WINDOW(dialog),TITLE_LABEL);
GtkFileFilter *filter = gtk_file_filter_new();
gtk_file_filter_add_pattern(filter,"*.ini");
gtk_file_filter_set_name(filter, "*.ini");
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter);
gtk_widget_show(dialog);
int response = gtk_dialog_run(GTK_DIALOG(dialog));
if (response == GTK_RESPONSE_ACCEPT){
char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
if (!yon_char_is_empty(file)){
path=file;
}
gtk_widget_destroy(dialog);
} else {
gtk_widget_destroy(dialog);
}
char *command = yon_config_get_custom_command(path);
yon_config_load_config(type,command,NULL);
}
}

@ -2,187 +2,127 @@
config main_config;
void on_save_done(main_window *, config_str output, int size){
char *final_output = yon_char_parsed_to_string(output,size,"");
if (final_output){
printf("%s\n",final_output);
free(final_output);
}
yon_char_parsed_free(output,size);
switch (main_config.save_config){
case YON_CONFIG_GLOBAL:
yon_ubl_status_box_render(yon_char_get_localised_from_lib(GLOBAL_SAVE_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
break;
case YON_CONFIG_LOCAL:
yon_ubl_status_box_render(yon_char_get_localised_from_lib(LOCAL_SAVE_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
break;
case YON_CONFIG_BOTH:
yon_ubl_status_box_render(yon_char_get_localised_from_lib(GLOBAL_LOCAL_SAVE_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
break;
}
}
void on_config_global_local_save(GtkWidget *, main_window *){
main_config.save_config=YON_CONFIG_BOTH;
yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_global_command,NULL);
}
void on_config_local_save(GtkWidget *, main_window *){
main_config.save_config=YON_CONFIG_LOCAL;
yon_save_proceed("system",YON_CONFIG_LOCAL,config_get_local_command,NULL);
}
void on_config_global_save(GtkWidget *, main_window *){
main_config.save_config=YON_CONFIG_GLOBAL;
yon_save_proceed("global",YON_CONFIG_GLOBAL,config_get_global_command,NULL);
}
void on_config_custom_save(GtkWidget *, main_window *){
main_config.save_config=YON_CONFIG_LOCAL;
template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_CUSTOM,yon_config_get_custom_command("system"),NULL);
if (window){};
}
void on_config_local_load(GtkWidget *,main_window *widgets){
yon_load_proceed(YON_CONFIG_LOCAL);
yon_ubl_status_box_render(yon_char_get_localised_from_lib(LOCAL_LOAD_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
yon_interface_update(widgets);
main_config.load_mode=1;
}
void on_config_global_load(GtkWidget *,main_window *widgets){
yon_load_proceed(YON_CONFIG_GLOBAL);
yon_ubl_status_box_render(yon_char_get_localised_from_lib(GLOBAL_LOAD_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
yon_interface_update(widgets);
main_config.load_mode=0;
}
void on_config_custom_load(GtkWidget *,main_window *widgets){
yon_load_proceed(YON_CONFIG_CUSTOM);
textdomain(template_ui_LocaleName);
yon_ubl_status_box_render(yon_char_get_localised_from_lib(LOCAL_LOAD_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
textdomain(LocaleName);
main_config.load_mode=3;
yon_interface_update(widgets);
}
void yon_load_proceed(YON_CONFIG_TYPE type){
yon_config_clean();
if (!yon_char_is_empty(config_get_default_command))
yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL);
if (type==YON_CONFIG_GLOBAL){
yon_config_load_config(type,yon_debug_output("%s\n",config_get_global_command),NULL);
} else if (type==YON_CONFIG_LOCAL){
yon_config_load_config(type,config_get_local_command,NULL);
} else if (type==YON_CONFIG_CUSTOM){
char *path="";
textdomain(template_ui_LocaleName);
GtkWidget *dialog = gtk_file_chooser_dialog_new(template_app_information.app_title,NULL,GTK_FILE_CHOOSER_ACTION_SAVE,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL);
textdomain(LocaleName);
gtk_window_set_icon_name(GTK_WINDOW(dialog),"com.ublinux.ubl-settings-services");
gtk_window_set_title(GTK_WINDOW(dialog),TITLE_LABEL);
GtkFileFilter *filter = gtk_file_filter_new();
gtk_file_filter_add_pattern(filter,"*.ini");
gtk_file_filter_set_name(filter, "*.ini");
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter);
gtk_widget_show(dialog);
int response = gtk_dialog_run(GTK_DIALOG(dialog));
if (response == GTK_RESPONSE_ACCEPT){
char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
if (!yon_char_is_empty(file)){
path=file;
}
gtk_widget_destroy(dialog);
} else {
gtk_widget_destroy(dialog);
}
char *command = yon_config_get_custom_command(path);
yon_config_load_config(type,command,NULL);
}
}
gboolean yon_interface_update(main_window *widgets){
g_signal_handlers_block_by_func(G_OBJECT(widgets->ModelCombo),G_CALLBACK(on_model_changed),widgets);
g_signal_handlers_block_by_func(G_OBJECT(widgets->MoveDownButton),G_CALLBACK(on_move_down),widgets);
g_signal_handlers_block_by_func(G_OBJECT(widgets->MoveUpButton),G_CALLBACK(on_move_up),widgets);
g_signal_handlers_block_by_func(G_OBJECT(widgets->OptionsButton),G_CALLBACK(on_options_open),widgets);
g_signal_handlers_block_by_func(G_OBJECT(widgets->KeyboardModelCombo),G_CALLBACK(on_model_changed),widgets);
g_signal_handlers_block_by_func(G_OBJECT(widgets->OptionsEditButton),G_CALLBACK(on_options_open),widgets);
g_signal_handlers_block_by_func(G_OBJECT(widgets->NumLockCombo),G_CALLBACK(on_num_lock_changed),widgets);
gtk_list_store_clear(widgets->layoutsList);
g_signal_handlers_block_by_func(G_OBJECT(widgets->LayoutChangingCombo),G_CALLBACK(on_options_save),widgets);
g_signal_handlers_block_by_func(G_OBJECT(widgets->ScrollLockSwitch),G_CALLBACK(on_scroll_lock_switch),widgets);
g_signal_handlers_block_by_func(G_OBJECT(widgets->ComposeSwitch),G_CALLBACK(on_compose_switch),widgets);
g_signal_handlers_block_by_func(G_OBJECT(widgets->DefaultLayoutsSwitch),G_CALLBACK(on_layout_default_toggled),widgets);
// g_signal_handlers_block_by_func(G_OBJECT(widgets->TTYLayoutCombo),G_CALLBACK(on_tty_changed),widgets);
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ModelCombo),0);
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardModelCombo),0);
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NumLockCombo),0);
GtkTreeIter iter;
gtk_entry_set_text(GTK_ENTRY(widgets->OptionsEntry),DEFAULT_LABEL);
{
char *name = yon_config_get_by_key(model_parameter);
char *id;
if (name) {
int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->modelsList),&iter);
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->modelsList),&iter)){
gtk_tree_model_get(GTK_TREE_MODEL(widgets->modelsList),&iter,1,&id,-1);
if (!strcmp(name,id)){
gtk_combo_box_set_active_iter(GTK_COMBO_BOX(widgets->ModelCombo),&iter);
break;
}
}
} else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ModelCombo),0);
char *kbmodel = yon_config_get_by_key(model_parameter);
if (kbmodel) {
gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->KeyboardModelCombo),kbmodel);
}
}
{
char *name = yon_config_get_by_key(options_parameter);
if (name) {
char *id, *rname;
gtk_entry_set_text(GTK_ENTRY(widgets->OptionsEntry),name);
int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.options_list),&iter);
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.options_list),&iter)){
gtk_tree_model_get(GTK_TREE_MODEL(main_config.options_list),&iter,0,&id,1,&rname,-1);
if (!strcmp(id,name)){
gtk_list_store_set(main_config.options_list,&iter,2,1,-1);
gtk_entry_set_text(GTK_ENTRY(widgets->OptionsEntry),rname);
break;
}
gtk_list_store_clear(widgets->LayoutsList);
char *layouts = config(keyboard_layout_parameter);
int layouts_parsed_size;
config_str layouts_parsed = yon_char_parse(layouts,&layouts_parsed_size,",");
for(int i=0;i<layouts_parsed_size;i++){
yon_layout_load(layouts_parsed[i],widgets);
}
if (yon_char_is_empty(layouts)||yon_config_check_ignore(keyboard_layout_parameter)){
gtk_switch_set_active(GTK_SWITCH(widgets->DefaultLayoutsSwitch),1);
} else {
gtk_switch_set_active(GTK_SWITCH(widgets->DefaultLayoutsSwitch),0);
}
if (yon_char_is_empty(layouts)){
char *element = yon_char_parsed_check_exist_begins_with(main_config.layouts_list,main_config.layouts_size,"us|");
if (element){
int parsed_size;
config_str parsed = yon_char_parse(element,&parsed_size,"|");
GtkTreeIter iter;
gtk_list_store_append(widgets->LayoutsList,&iter);
gtk_list_store_set(widgets->LayoutsList,&iter,0,parsed[0],2,_(parsed[1]),-1);
yon_char_parsed_free(parsed,parsed_size);
}
}
}
{
if (main_config.layouts_list){
for_iter(main_config.layouts_list,&iter){
gtk_list_store_set(main_config.layouts_list,&iter,2,0,-1);
gtk_list_store_clear(widgets->OptionsList);
char *options = config(options_parameter);
if (!yon_char_is_empty(options)){
GtkTreeIter iter;
int size;
config_str parsed = yon_char_parse(options,&size,",");
if (!yon_char_is_empty(parsed[0])){
gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->LayoutChangingCombo),parsed[0]);
} else {
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->LayoutChangingCombo),0);
}
for (int i=1;i<size;i++){
char *cur_string = (char*)g_hash_table_lookup(main_config.options,parsed[i]);
if (yon_char_is_empty(cur_string)) continue;
int option_parsed_size;
config_str option_parsed = yon_char_parse(cur_string,&option_parsed_size,"|");
gtk_list_store_append(widgets->OptionsList,&iter);
gtk_list_store_set(widgets->OptionsList,&iter,0,option_parsed[0],1,_(option_parsed[1]),-1);
yon_char_parsed_free(option_parsed,option_parsed_size);
}
if (yon_char_parsed_check_exist(parsed,size,"compose:rwin")>-1){
gtk_switch_set_active(GTK_SWITCH(widgets->ComposeSwitch),1);
} else {
gtk_switch_set_active(GTK_SWITCH(widgets->ComposeSwitch),0);
}
if (yon_char_parsed_check_exist(parsed,size,"grp_led:scroll")>-1){
gtk_switch_set_active(GTK_SWITCH(widgets->ScrollLockSwitch),1);
} else {
gtk_switch_set_active(GTK_SWITCH(widgets->ScrollLockSwitch),0);
}
yon_char_parsed_free(parsed,size);
}
}
{
char *name = yon_config_get_by_key(num_lock_boot_parameter);
if (name) {
if (!strcmp(name,"yes")) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NumLockCombo),1);
else if (!strcmp(name,"no")) gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NumLockCombo),2);
}
else gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->NumLockCombo),0);
if (main_config.layouts_list){
int size=0;
name = yon_config_get_by_key(keyboard_layout_parameter);
config_str layouts = yon_char_parse(name,&size,",");
GtkTreeIter iter, itar;
char *rid,*rname;
gtk_list_store_clear(widgets->layoutsList);
for (int i=0;i<size;i++){
for_iter(main_config.layouts_list,&iter){
gtk_tree_model_get(GTK_TREE_MODEL(main_config.layouts_list),&iter,0,&rid,1,&rname,-1);
if (!strcmp(layouts[i],rid)){
gtk_list_store_append(widgets->layoutsList,&itar);
gtk_list_store_set(widgets->layoutsList,&itar,0,rname,1,rid,2,1,-1);
}
}
}
}
{
char *tty_layout = config(console_keymap_parameter);
if (!yon_char_is_empty(tty_layout)){
gtk_entry_set_text(GTK_ENTRY(widgets->TTYLayoutEntry),tty_layout);
} else {
gtk_entry_set_text(GTK_ENTRY(widgets->TTYLayoutEntry),yon_char_get_localised_from_lib(DEFAULT_LABEL));
}
char *tty_keymap = config(console_keymap_toggle_parameter);
if (!yon_char_is_empty(tty_keymap)){
gtk_entry_set_text(GTK_ENTRY(widgets->TTYSecondLayoutEntry),tty_keymap);
} else {
gtk_entry_set_text(GTK_ENTRY(widgets->TTYSecondLayoutEntry),yon_char_get_localised_from_lib(DEFAULT_LABEL));
}
char *tty_font = config(console_font_parameter);
if (!yon_char_is_empty(tty_font)){
gtk_entry_set_text(GTK_ENTRY(widgets->TTYFontEntry),tty_font);
} else {
gtk_entry_set_text(GTK_ENTRY(widgets->TTYFontEntry),yon_char_get_localised_from_lib(DEFAULT_LABEL));
}
}
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ModelCombo),G_CALLBACK(on_model_changed),widgets);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->MoveDownButton),G_CALLBACK(on_move_down),widgets);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->MoveUpButton),G_CALLBACK(on_move_up),widgets);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->OptionsButton),G_CALLBACK(on_options_open),widgets);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->KeyboardModelCombo),G_CALLBACK(on_model_changed),widgets);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->OptionsEditButton),G_CALLBACK(on_options_open),widgets);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->NumLockCombo),G_CALLBACK(on_num_lock_changed),widgets);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->LayoutChangingCombo),G_CALLBACK(on_options_save),widgets);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ScrollLockSwitch),G_CALLBACK(on_scroll_lock_switch),widgets);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ComposeSwitch),G_CALLBACK(on_compose_switch),widgets);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->DefaultLayoutsSwitch),G_CALLBACK(on_layout_default_toggled),widgets);
// g_signal_handlers_unblock_by_func(G_OBJECT(widgets->TTYLayoutCombo),G_CALLBACK(on_tty_changed),widgets);
return G_SOURCE_REMOVE;
}
@ -204,202 +144,182 @@ void on_model_changed(GtkComboBoxText *self, main_window *widgets){
yon_config_remove_by_key(model_parameter);
break;
default:
char *id;
GtkTreeIter iter;
gtk_combo_box_get_active_iter(GTK_COMBO_BOX(widgets->ModelCombo),&iter);
gtk_tree_model_get(GTK_TREE_MODEL(widgets->modelsList),&iter,1,&id,-1);
yon_config_register(model_parameter,model_parameter_command,id);
char *id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->KeyboardModelCombo));
yon_config_register(model_parameter,model_parameter_command,id);
break;
}
}
void on_options_accept(GtkWidget *self, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
layouts_window *window = yon_dictionary_get_data(dict->first->next,layouts_window*);
GtkTreeModel *model = GTK_TREE_MODEL(window->list);
void yon_config_init(){
int size;
main_config.models_list = gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN);
GtkTreeIter iter;
char *name, *id;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->MainTree)),&model,&iter)){
gtk_tree_model_get(model,&iter,0,&id,1,&name,-1);
gtk_entry_set_text(GTK_ENTRY(widgets->OptionsEntry),name);
yon_config_register(options_parameter,options_parameter_command,id);
}
on_subwindow_close(self);
}
void yon_layouts_save(main_window *widgets){
GtkTreeIter iter;
GtkTreeIter child_iter;
int size;
config_str parsed = NULL;
for_iter(widgets->layoutsFilter,&iter){
char *name, *id;
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(widgets->layoutsFilter),&child_iter,&iter);
gtk_tree_model_get(GTK_TREE_MODEL(widgets->layoutsList),&child_iter,0,&name,1,&id,-1);
yon_char_parsed_add_or_create_if_exists(parsed,&size,id);
main_config.layouts_store = gtk_tree_store_new(4,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN);
main_config.variants_list = yon_config_load(layouts_variant_command,&main_config.variants_size);
main_config.layouts_list = yon_config_load(layouts_command,&main_config.layouts_size);
for (int i=0;i<main_config.variants_size;i++){
yon_char_remove_last_symbol(main_config.variants_list[i],'\n');
}
if (parsed&&size>0){
yon_config_register(keyboard_layout_parameter,keyboard_layout_parameter_command,yon_char_parsed_to_string(parsed,size,","));
yon_char_parsed_free(parsed,size);
} else {
yon_config_remove_by_key(keyboard_layout_parameter);
for (int i=0;i<main_config.layouts_size;i++){
yon_char_remove_last_symbol(main_config.layouts_list[i],'\n');
}
}
void on_options_open(GtkWidget *, main_window *widgets){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_layouts_path);
layouts_window *window = malloc(sizeof(layouts_window));
window->Window = yon_gtk_builder_get_widget(builder,"Window");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->MainTree = yon_gtk_builder_get_widget(builder,"LayoutsTree");
window->list = main_config.options_list;
gtk_tree_view_set_model(GTK_TREE_VIEW(window->MainTree),GTK_TREE_MODEL(window->list));
dictionary *dict = NULL;
gtk_tree_view_remove_column(GTK_TREE_VIEW(window->MainTree),gtk_tree_view_get_column(GTK_TREE_VIEW(window->MainTree),0));
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_options_accept),dict);
}
GList *yon_get_all_selected(GtkTreeView *tree, int column){
GtkTreeIter iter;
GList *list = NULL;
GtkTreeModel *model = gtk_tree_view_get_model(tree);
for_iter(model,&iter){
int status;
gtk_tree_model_get(model,&iter,column,&status,-1);
if (status){
GtkTreePath *path = gtk_tree_model_get_path(model,&iter);
list = g_list_append(list,path);
{
int size;
config_str option_commands = yon_char_parsed_new(&size,
lv2_options_command,
lv3_options_command,
ctrl_options_command,
grp_led_options_command,
mod_led_options_command,
keypad_options_command,
kpdl_options_command,
caps_options_command,
altwin_options_command,
Compose_options_command,
compat_options_command,
currencysign_options_command,
lv5_options_command,
nbsp_options_command,
japan_options_command,
korean_options_command,
esperanto_options_command,
solaris_options_command,
terminate_options_command,
NULL);
char *command_full = yon_char_parsed_to_string(option_commands,size,"; ");
main_config.options = g_hash_table_new(g_str_hash,g_str_equal);
int options_size;
config_str options = yon_config_load(command_full,&options_size);
for(int i=0;i<options_size;i++){
yon_char_remove_last_symbol(options[i],'\n');
int parsed_size;
config_str parsed = yon_char_parse(options[i],&parsed_size,"|");
g_hash_table_insert(main_config.options,yon_char_new(parsed[0]),yon_char_new(options[i]));
yon_char_parsed_free(parsed,parsed_size);
}
free(command_full);
yon_char_parsed_free(options,options_size);
yon_char_parsed_free(option_commands,size);
}
return list;
}
void on_layouts_accept(GtkWidget *self, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
layouts_window *window = yon_dictionary_get_data(dict->first->next,layouts_window*);
gtk_list_store_clear(widgets->layoutsList);
GtkTreeModel *model = GTK_TREE_MODEL(window->list);
GList *list = yon_get_all_selected(GTK_TREE_VIEW(window->MainTree),2);
char *name;
char *id;
GtkTreeIter iter, lwiter;
GtkTreePath *pth;
for (guint i=0;i<g_list_length(list);i++){
pth = (GtkTreePath*)g_list_nth_data(list,i);
gtk_tree_model_get_iter(model,&lwiter,pth);
gtk_list_store_append(widgets->layoutsList,&iter);
gtk_tree_model_get(model,&lwiter,0,&name,1,&id,-1);
gtk_list_store_set(widgets->layoutsList,&iter,1,name,0,id,2,1,-1);
main_config.options_list = gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN);
config_str rtn = yon_config_load(get_options_command,&size);
for (int i=0; i<size;i++){
yon_char_remove_last_symbol(rtn[i],'\n');
int option_size;
rtn[i] = yon_char_divide_search(rtn[i],"\n",-1);
config_str option = yon_char_parse(rtn[i],&option_size,";");
gtk_list_store_append(main_config.options_list,&iter);
gtk_list_store_set(main_config.options_list,&iter,0,option[0],1,_(option[1]),-1);
}
yon_layouts_save(widgets);
on_subwindow_close(self);
}
void on_layouts_chosen(GtkCellRenderer *, gchar *path, layouts_window *window){
GtkTreeIter iter;
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->list),&iter,path);
int chosen;
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,2,&chosen,-1);
gtk_list_store_set(window->list,&iter,2,!chosen,-1);
yon_char_parsed_free(rtn,size);
}
void on_layouts_add(GtkWidget *, main_window *widgets){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_layouts_path);
layouts_window *window = malloc(sizeof(layouts_window));
window->Window = yon_gtk_builder_get_widget(builder,"Window");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->ChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ChosenCell"));
window->MainTree = yon_gtk_builder_get_widget(builder,"LayoutsTree");
window->list = main_config.layouts_list;
gtk_tree_view_set_model(GTK_TREE_VIEW(window->MainTree), GTK_TREE_MODEL(window->list));
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->MainTree)),GTK_SELECTION_MULTIPLE);
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),TITLE_LABEL,icon_path,"layout_window");
dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_layouts_accept),dict);
g_signal_connect(G_OBJECT(window->ChosenCell),"toggled",G_CALLBACK(on_layouts_chosen),window);
char *languages = config(keyboard_layout_parameter);
int size;
config_str parsed = yon_char_parse(languages,&size,",");
GtkTreeIter iter;
for_iter(window->list,&iter){
int found = 0;
char *id;
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,0,&id,-1);
for (int i=0;i<size;i++){
if (!strcmp(id,parsed[i])){
gtk_list_store_set(window->list,&iter,2,1,-1);
found=1;
break;
}
}
if (!found) {
gtk_list_store_set(window->list,&iter,2,0,-1);
}
void on_compose_switch(GtkWidget *,int status,main_window *widgets){
switch(status){
case 0:{
yon_config_remove_element(options_parameter,"compose:rwin",",");
} break;
case 1:{
yon_config_append_element(options_parameter,"compose:rwin",",");
} break;
}
yon_interface_update(widgets);
}
void on_layouts_remove(GtkWidget *, main_window *widgets){
GtkTreeModel *model = GTK_TREE_MODEL(widgets->layoutsList);
GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LayoutsTree)),&model,&iter)){
GtkTreeIter iter_converted;
char *target;
gtk_tree_model_get(model,&iter,1,&target,-1);
gtk_tree_model_filter_convert_iter_to_child_iter(widgets->layoutsFilter,&iter_converted,&iter);
gtk_list_store_remove(widgets->layoutsList,&iter_converted);
yon_config_remove_element(keyboard_layout_parameter,target,",");
void on_scroll_lock_switch(GtkWidget *,int status,main_window *widgets){
switch(status){
case 0:{
yon_config_remove_element(options_parameter,"grp_led:scroll",",");
} break;
case 1:{
yon_config_append_element(options_parameter,"grp_led:scroll",",");
} break;
}
yon_interface_update(widgets);
}
void on_move_up(GtkWidget *, main_window *widgets){
GtkTreeModel *model = GTK_TREE_MODEL(widgets->layoutsFilter);
GtkTreeIter iter,*previter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LayoutsTree)),&model,&iter)){
previter = gtk_tree_iter_copy(&iter);
if (gtk_tree_model_iter_previous(model,previter))
{
GtkTreeIter iter_converted, previter_converted;
gtk_tree_model_filter_convert_iter_to_child_iter(widgets->layoutsFilter,&iter_converted,&iter);
gtk_tree_model_filter_convert_iter_to_child_iter(widgets->layoutsFilter,&previter_converted,previter);
gtk_list_store_move_before(widgets->layoutsList,&iter_converted,&previter_converted);
yon_layouts_save(widgets);
}
// void on_tty_changed(GtkWidget *, main_window *widgets){
// char *tty_layout = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->TTYLayoutCombo));
// if (!yon_char_is_empty(tty_layout)){
// yon_config_register(console_keymap_parameter,console_keymap_parameter_command,tty_layout);
// } else {
// yon_config_remove_by_key(console_keymap_parameter);
// }
// }
// void on_tty_keymap_changed(GtkWidget *, main_window *widgets){
// char *tty_layout = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->TTYKeymapCombo));
// if (!yon_char_is_empty(tty_layout)){
// yon_config_register(console_keymap_toggle_parameter,console_keymap_toggle_parameter_command,tty_layout);
// } else {
// yon_config_remove_by_key(console_keymap_toggle_parameter);
// }
// }
// void on_tty_font_changed(GtkWidget *, main_window *widgets){
// char *tty_layout = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->TTYFontCombo));
// if (!yon_char_is_empty(tty_layout)){
// yon_config_register(console_font_parameter,console_font_parameter_command,tty_layout);
// } else {
// yon_config_remove_by_key(console_font_parameter);
// }
// }
void on_layout_default_sensitive_toggled(GtkWidget *, int status, main_window *widgets){
gtk_widget_set_sensitive(widgets->LayoutTree,!status);
gtk_widget_set_sensitive(widgets->LayoutAddButton,!status);
if (status){
gtk_widget_set_sensitive(widgets->LayoutRemoveButton,!status);
gtk_widget_set_sensitive(widgets->LayoutMoveUpButton,!status);
gtk_widget_set_sensitive(widgets->LayoutMoveDownButton,!status);
}else {
on_layout_selection_changed(GTK_TREE_VIEW(widgets->LayoutTree),widgets);
}
}
void on_move_down(GtkWidget *, main_window *widgets){
GtkTreeModel *model = GTK_TREE_MODEL(widgets->layoutsFilter);
GtkTreeIter iter,*nextiter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LayoutsTree)),&model,&iter)){
nextiter = gtk_tree_iter_copy(&iter);
if (gtk_tree_model_iter_next(model,nextiter)){
GtkTreeIter iter_converted, nextiter_converted;
gtk_tree_model_filter_convert_iter_to_child_iter(widgets->layoutsFilter,&iter_converted,&iter);
gtk_tree_model_filter_convert_iter_to_child_iter(widgets->layoutsFilter,&nextiter_converted,nextiter);
gtk_list_store_move_after(widgets->layoutsList,&iter_converted,&nextiter_converted);
yon_layouts_save(widgets);
void on_layout_default_toggled(GtkWidget *, int status, main_window *widgets){
if (!status){
GtkTreeModel *model = GTK_TREE_MODEL(widgets->LayoutsList);
GtkTreeIter iter;
char *locales = NULL;
for_iter(model,&iter){
char *target, *variant;
gtk_tree_model_get(model,&iter,0,&target,1,&variant,-1);
char *key = NULL;
if (!yon_char_is_empty(variant)){
key = yon_char_unite(target,"_",variant,NULL);
} else {
key = yon_char_new(target);
}
char *temp = yon_char_append_element(locales?locales:"",key,",");
if (!yon_char_is_empty(locales)) free(locales);
locales = temp;
}
if (!yon_char_is_empty(locales)){
yon_config_register(keyboard_layout_parameter,keyboard_layout_parameter_command,locales);
}
}
}
void on_layout_selection_changed(GtkTreeView *self,main_window *widgets){
int status = gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(self)),NULL,NULL);
gtk_widget_set_sensitive(widgets->LayoutMoveDownButton,status);
gtk_widget_set_sensitive(widgets->LayoutMoveUpButton,status);
gtk_widget_set_sensitive(widgets->LayoutRemoveButton,status);
}
// standard functions
void on_option_selection_changed(GtkTreeView *self,main_window *widgets){
int status = gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(self)),NULL,NULL);
gtk_widget_set_sensitive(widgets->OptionsRemoveButton,status);
}
void yon_main_window_complete(main_window *widgets){
widgets = yon_remalloc(widgets,sizeof(main_window));
@ -408,76 +328,125 @@ void yon_main_window_complete(main_window *widgets){
// Custom widgets configuration
{
widgets->NumLockCombo = yon_gtk_builder_get_widget(builder,"NumlockCombo");
widgets->ModelCombo = yon_gtk_builder_get_widget(builder,"ModelCombo");
widgets->keyboard = yon_gtk_builder_get_widget(builder,"keyboard");
widgets->keytable = yon_gtk_builder_get_widget(builder,"keytable");
widgets->grp_toggle = yon_gtk_builder_get_widget(builder,"grp_toggle");
widgets->OptionsEntry = yon_gtk_builder_get_widget(builder,"OptionsEntry");
widgets->OptionsButton = yon_gtk_builder_get_widget(builder,"OptionsButton");
widgets->LayoutsTree = yon_gtk_builder_get_widget(builder,"LayoutsTree");
widgets->MoveUpButton = yon_gtk_builder_get_widget(builder,"MoveUpButton");
widgets->MoveDownButton = yon_gtk_builder_get_widget(builder,"MoveDownButton");
widgets->AddButton = yon_gtk_builder_get_widget(builder,"AddButton");
widgets->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton");
widgets->layoutsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1"));
widgets->layoutsFilter = GTK_TREE_MODEL_FILTER(gtk_builder_get_object(builder,"LayoutsFilter"));
widgets->modelsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore2"));
int size;
GtkTreeIter iter;
config_str models = yon_config_load(get_models_command,&size);
for (int i=0;i<size;i+=2){
models[i] = yon_char_divide_search(models[i],"\n",-1);
models[i+1] = yon_char_divide_search(models[i+1],"\n",-1);
gtk_list_store_append(widgets->modelsList,&iter);
gtk_list_store_set(widgets->modelsList,&iter,1,models[i],0,_(models[i+1]),-1);
}
main_config.layouts_list = gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN);
int laysize;
config_str rtn = yon_resource_open_file(layouts_path,&size);
for (int i=0; i<size; i++){
yon_char_remove_last_symbol(rtn[i],'\n');
config_str layout = yon_char_parse(rtn[i],&laysize,";");
gtk_list_store_append(main_config.layouts_list,&iter);
char *lout = layout[1];
gtk_list_store_set(main_config.layouts_list,&iter,0,layout[0],1,lout,-1);
}
main_config.options_list = gtk_list_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN);
rtn = yon_config_load(get_options_command,&size);
for (int i=0; i<size;i++){
int option_size;
rtn[i] = yon_char_divide_search(rtn[i],"\n",-1);
config_str option = yon_char_parse(rtn[i],&option_size,";");
gtk_list_store_append(main_config.options_list,&iter);
gtk_list_store_set(main_config.options_list,&iter,0,option[0],1,_(option[1]),-1);
}
widgets->KeyboardModelCombo = yon_gtk_builder_get_widget(builder,"KeyboardModelCombo");
widgets->DefaultLayoutsSwitch = yon_gtk_builder_get_widget(builder,"DefaultLayoutsSwitch");
widgets->LayoutTree = yon_gtk_builder_get_widget(builder,"LayoutTree");
widgets->LayoutAddButton = yon_gtk_builder_get_widget(builder,"LayoutAddButton");
widgets->LayoutRemoveButton = yon_gtk_builder_get_widget(builder,"LayoutRemoveButton");
widgets->LayoutMoveUpButton = yon_gtk_builder_get_widget(builder,"LayoutMoveUpButton");
widgets->LayoutMoveDownButton = yon_gtk_builder_get_widget(builder,"LayoutMoveDownButton");
widgets->LayoutChangingCombo = yon_gtk_builder_get_widget(builder,"LayoutChangingCombo");
widgets->OptionsTree = yon_gtk_builder_get_widget(builder,"OptionsTree");
widgets->OptionsEditButton = yon_gtk_builder_get_widget(builder,"OptionsEditButton");
widgets->OptionsRemoveButton = yon_gtk_builder_get_widget(builder,"OptionsRemoveButton");
widgets->ComposeSwitch = yon_gtk_builder_get_widget(builder,"ComposeSwitch");
widgets->ScrollLockSwitch = yon_gtk_builder_get_widget(builder,"ScrollLockSwitch");
widgets->NumLockCombo = yon_gtk_builder_get_widget(builder,"NumLockCombo");
widgets->TTYLayoutEntry = yon_gtk_builder_get_widget(builder,"TTYLayoutEntry");
widgets->TTYLayoutButton = yon_gtk_builder_get_widget(builder,"TTYLayoutButton");
widgets->TTYSecondLayoutEntry = yon_gtk_builder_get_widget(builder,"TTYSecondLayoutEntry");
widgets->TTYSecondLayoutButton = yon_gtk_builder_get_widget(builder,"TTYSecondLayoutButton");
widgets->TTYFontEntry = yon_gtk_builder_get_widget(builder,"TTYFontEntry");
widgets->TTYFontButton = yon_gtk_builder_get_widget(builder,"TTYFontButton");
widgets->LayoutsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"LayoutsList"));
widgets->OptionsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"OptionsList"));
/* Widget registration for config monitoring | Регистрация виджетов для мониторинга конфига */
// yon_window_config_add_custom_parameter(widgets->HeadInfoLabel,"head-text","label",YON_TYPE_STRING);
/* Signal connection | Присоединение сигналов */
g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_layouts_add),widgets);
g_signal_connect(G_OBJECT(widgets->RemoveButton),"clicked",G_CALLBACK(on_layouts_remove),widgets);
g_signal_connect(G_OBJECT(widgets->ModelCombo),"changed",G_CALLBACK(on_model_changed),widgets);
g_signal_connect(G_OBJECT(widgets->MoveDownButton),"clicked",G_CALLBACK(on_move_down),widgets);
g_signal_connect(G_OBJECT(widgets->MoveUpButton),"clicked",G_CALLBACK(on_move_up),widgets);
g_signal_connect(G_OBJECT(widgets->OptionsButton),"clicked",G_CALLBACK(on_options_open),widgets);
g_signal_connect(G_OBJECT(widgets->LayoutAddButton),"clicked",G_CALLBACK(on_system_layouts_add),widgets);
g_signal_connect(G_OBJECT(widgets->LayoutRemoveButton),"clicked",G_CALLBACK(on_system_layouts_remove),widgets);
g_signal_connect(G_OBJECT(widgets->TTYLayoutButton),"clicked",G_CALLBACK(yon_keymaps_open),widgets);
g_signal_connect(G_OBJECT(widgets->TTYSecondLayoutButton),"clicked",G_CALLBACK(yon_keymaps_open),widgets);
g_signal_connect(G_OBJECT(widgets->TTYFontButton),"clicked",G_CALLBACK(yon_font_open),widgets);
g_signal_connect(G_OBJECT(widgets->KeyboardModelCombo),"changed",G_CALLBACK(on_model_changed),widgets);
g_signal_connect(G_OBJECT(widgets->OptionsEditButton),"clicked",G_CALLBACK(on_options_open),widgets);
g_signal_connect(G_OBJECT(widgets->OptionsRemoveButton),"clicked",G_CALLBACK(on_option_remove),widgets);
g_signal_connect(G_OBJECT(widgets->NumLockCombo),"changed",G_CALLBACK(on_num_lock_changed),widgets);
}
g_signal_connect(G_OBJECT(widgets->LayoutChangingCombo),"changed",G_CALLBACK(on_options_save),widgets);
g_signal_connect(G_OBJECT(widgets->ComposeSwitch),"state-set",G_CALLBACK(on_compose_switch),widgets);
g_signal_connect(G_OBJECT(widgets->ScrollLockSwitch),"state-set",G_CALLBACK(on_scroll_lock_switch),widgets);
// g_signal_connect(G_OBJECT(widgets->LayoutsList),"row-inserted",G_CALLBACK(on_layout_dnd_inserted),widgets);
// g_signal_connect(G_OBJECT(widgets->LayoutsList),"row-deleted",G_CALLBACK(on_layout_dnd_deleted),widgets);
g_signal_connect(G_OBJECT(widgets->LayoutTree),"cursor-changed",G_CALLBACK(on_layout_selection_changed),widgets);
g_signal_connect(G_OBJECT(widgets->OptionsTree),"cursor-changed",G_CALLBACK(on_option_selection_changed),widgets);
g_signal_connect(G_OBJECT(widgets->DefaultLayoutsSwitch),"state-set",G_CALLBACK(on_layout_default_toggled),widgets);
g_signal_connect(G_OBJECT(widgets->DefaultLayoutsSwitch),"state-set",G_CALLBACK(on_layout_default_sensitive_toggled),widgets);
g_signal_connect(G_OBJECT(widgets->LayoutMoveUpButton),"clicked",G_CALLBACK(on_layout_move_up),widgets);
g_signal_connect(G_OBJECT(widgets->LayoutMoveDownButton),"clicked",G_CALLBACK(on_layout_move_down),widgets);
g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets);
g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets);
g_signal_connect(G_OBJECT(widgets->LoadCustomMenuItem),"activate",G_CALLBACK(on_config_custom_load),widgets);
g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(on_config_global_local_save),NULL);
g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(on_config_local_save),NULL);
g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_save),NULL);
g_signal_connect(G_OBJECT(widgets->SaveCustomMenuItem),"activate",G_CALLBACK(on_config_custom_save),NULL);
g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(on_config_global_local_save),widgets);
g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(on_config_local_save),widgets);
g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_save),widgets);
g_signal_connect(G_OBJECT(widgets->SaveCustomMenuItem),"activate",G_CALLBACK(on_config_custom_save),widgets);
yon_gtk_combo_box_block_scroll(GTK_COMBO_BOX(widgets->NumLockCombo));
yon_gtk_combo_box_block_scroll(GTK_COMBO_BOX(widgets->KeyboardModelCombo));
yon_gtk_combo_box_block_scroll(GTK_COMBO_BOX(widgets->LayoutChangingCombo));
}
int size;
config_str models = yon_config_load(get_models_command,&size);
for (int i=0;i<size;i++){
yon_char_remove_last_symbol(models[i],'\n');
int parsed_size;
config_str parsed = yon_char_parse(models[i],&parsed_size,"|");
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->KeyboardModelCombo),parsed[0],_(parsed[1]));
yon_char_parsed_free(parsed,parsed_size);
}
{
int size;
config_str options = yon_config_load(grp_options_command,&size);
for (int i=0;i<size;i++){
yon_char_remove_last_symbol(options[i],'\n');
int parsed_size;
config_str parsed = yon_char_parse(options[i],&parsed_size,"|");
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->LayoutChangingCombo),parsed[0],_(parsed[1]));
yon_char_parsed_free(parsed,parsed_size);
}
yon_char_parsed_free(options,size);
}
yon_char_parsed_free(models,size);
// {
// config_str parsed = yon_config_load(tty_layout_command,&size);
// for (int i=0;i<size;i++){
// yon_char_remove_last_symbol(parsed[i],'\n');
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->TTYLayoutCombo),parsed[i],parsed[i]);
// }
// yon_char_parsed_free(parsed,size);
// }
// {
// config_str parsed = yon_config_load(tty_keymap_command,&size);
// for (int i=0;i<size;i++){
// yon_char_remove_last_symbol(parsed[i],'\n');
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->TTYKeymapCombo),parsed[i],parsed[i]);
// }
// yon_char_parsed_free(parsed,size);
// }
// {
// config_str parsed = yon_config_load(tty_font_command,&size);
// for (int i=0;i<size;i++){
// yon_char_remove_last_symbol(parsed[i],'\n');
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->TTYFontCombo),parsed[i],parsed[i]);
// }
// yon_char_parsed_free(parsed,size);
// }
yon_root_button_setup((template_main_window*)widgets,main_config.launch_arguments,main_config.launch_size);
yon_save_window_set_postsave_function(on_save_done,widgets);
gtk_tree_view_column_clicked(GTK_TREE_VIEW_COLUMN(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->LayoutTree),0)));
on_config_local_load(NULL,widgets);
}
@ -485,7 +454,7 @@ void yon_main_window_complete(main_window *widgets){
int main(int argc, char *argv[]){
setlocale(LC_ALL, "");
textdomain (LocaleName);
yon_config_init();
yon_ubl_connect_config((_template_config*)&main_config);
yon_ubl_window_init(TITLE_LABEL,TITLE_INFO_LABEL,LocaleName,CssPath,LocaleName,version_application,WIKI_LINK);
config_str unfound = NULL;

@ -21,35 +21,116 @@
#define glade_path "/com/ublinux/ui/ubl-settings-keyboard.glade"
#define glade_layouts_path "/com/ublinux/ui/ubl-settings-keyboard-layouts.glade"
#define glade_options_path "/com/ublinux/ui/ubl-settings-keyboard-options.glade"
#define glade_keymaps_path "/com/ublinux/ui/ubl-settings-keyboard-keymaps.glade"
#define glade_font_path "/com/ublinux/ui/ubl-settings-keyboard-font.glade"
#define banner_path "/com/ublinux/images/ubl-settings-keyboard-banner.png"
#define CssPath "/com/ublinux/css/ubl-settings-keyboard.css"
#define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL)
#define icon_path "com.ublinux.ubl-settings-keyboard"
#define keymap_list_path "resource://com/ublinux/csv/keymap-list.csv"
#define font_list_path "resource://com/ublinux/csv/font-list.csv"
#define LocaleName "ubl-settings-keyboard"
#define model_parameter "XKBMODEL"
#define model_parameter_command "ubconfig --source global get keyboard XKBMODEL"
#define model_parameter_command "ubconfig --source global get [keyboard] XKBMODEL"
#define keyboard_layout_parameter "XKBLAYOUT"
#define keyboard_layout_parameter_command "ubconfig --source global get keyboard XKBLAYOUT"
#define keyboard_layout_parameter_command "ubconfig --source global get [keyboard] XKBLAYOUT"
#define options_parameter "XKBOPTIONS"
#define options_parameter_command "ubconfig --source global get keyboard XKBOPTIONS"
#define options_parameter_command "ubconfig --source global get [keyboard] XKBOPTIONS"
#define num_lock_boot_parameter "NUMLOCK"
#define num_lock_boot_parameter_command "ubconfig --source global get keyboard NUMLOCK"
#define num_lock_boot_parameter_command "ubconfig --source global get [keyboard] NUMLOCK"
#define console_keymap_parameter "CONSOLE_KEYMAP"
#define console_keymap_parameter_command "ubconfig --source global get [keyboard] CONSOLE_KEYMAP"
#define console_keymap_toggle_parameter "CONSOLE_KEYMAP_TOGGLE"
#define console_keymap_toggle_parameter_command "ubconfig --source global get [keyboard] CONSOLE_KEYMAP_TOGGLE"
#define console_font_parameter "CONSOLE_FONT"
#define console_font_parameter_command "ubconfig --source global get [locale] CONSOLE_FONT"
#define yon_config_get_custom_command(target) yon_char_unite("ubconfig --source ",target," get keyboard XKBMODEL XKBLAYOUT XKBOPTIONS NUMLOCK",NULL)
#define config_get_local_command "ubconfig --source system get keyboard XKBMODEL XKBLAYOUT XKBOPTIONS NUMLOCK"
#define config_get_global_command "ubconfig --source global get keyboard XKBMODEL XKBLAYOUT XKBOPTIONS NUMLOCK"
#define config_get_default_command ""
#define yon_config_get_custom_command(target) yon_char_unite("ubconfig --source ",target," -ea get [keyboard] XKBMODEL XKBLAYOUT XKBOPTIONS NUMLOCK CONSOLE_KEYMAP CONSOLE_KEYMAP_TOGGLE -- [locale] CONSOLE_FONT",NULL)
#define config_get_local_command "ubconfig --source system -ea get [keyboard] XKBMODEL XKBLAYOUT XKBOPTIONS NUMLOCK CONSOLE_KEYMAP CONSOLE_KEYMAP_TOGGLE -- [locale] CONSOLE_FONT"
#define config_get_global_command "ubconfig --source global -ea get [keyboard] XKBMODEL XKBLAYOUT XKBOPTIONS NUMLOCK CONSOLE_KEYMAP CONSOLE_KEYMAP_TOGGLE -- [locale] CONSOLE_FONT"
#define config_get_default_command "ubconfig --source default -ea get [keyboard] XKBMODEL XKBLAYOUT XKBOPTIONS NUMLOCK CONSOLE_KEYMAP CONSOLE_KEYMAP_TOGGLE -- [locale] CONSOLE_FONT"
#define config_get_global_only_parameters ""
#define config_get_local_only_parameters ""
#define get_options_command "grep -E \"grp:.*toggle|grp_led:.*toggle|compose:.*toggle\" /usr/share/X11/xkb/rules/base.lst|sed -e 's/^ *//g' -e 's/\t//g' -e 's/toggle */toggle;/g'"
#define get_models_command "sed '/<\\/modelList>/q' /usr/share/X11/xkb/rules/base.xml | grep -E '^ {8,8}<name>|^ {8,8}<description>'|sed -e 's/ *<name>//g' -e 's,</name>,,g' -e 's/ *<description>//g' -e 's,</description>,,g'"
#define get_models_command "sed -En '/^! model$/,/^ *$/!d;s/[[:blank:]]+([^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
#define layouts_path "resource:///com/ublinux/csv/layouts.csv"
#define layouts_command "sed -En '/^! layout$/,/^ *$/!d;s/[[:blank:]]+([^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
#define layouts_variant_command "sed -En '/^! variant$/,/^ *$/!d;s/[[:blank:]]+([^ ]+)[[:blank:]]+([^ :]+):[[:blank:]]+(.*)/\\2|\\1|\\3/p' /usr/share/X11/xkb/rules/evdev.lst"
// grp : Switching to another layout
#define grp_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(grp:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// lv2 : Key to choose the 2nd level
#define lv2_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(lv2:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// lv3 : Key to choose the 3nd level
#define lv3_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(lv3:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// ctrl : Ctrl position
#define ctrl_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(ctrl:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// grp_led : Use keyboard LED to show alternative layout
#define grp_led_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(grp_led:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// mod_led : Use keyboard LED to indicate modifiers
#define mod_led_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(mod_led:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// keypad : Layout of numeric keypad
#define keypad_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(keypad:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// kpdl : Numeric keypad Delete behavior
#define kpdl_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(kpdl:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// caps : Caps Lock behavior
#define caps_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(caps:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// altwin : Alt and Win behavior
#define altwin_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(altwin:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// Compose key : Position of Compose key
#define Compose_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(compose:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// compat : Compatibility options
#define compat_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+((numpad|srvrkeys|apple|shift|misc|keypad|grab):[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// currencysign : Currency signs
#define currencysign_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+((eurosign|rupeesign):[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// lv5 : Key to choose the 5th level
#define lv5_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(lv5:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// nbsp : Non-breaking space input
#define nbsp_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(nbsp:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// japan : Japanese keyboard options
#define japan_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(japan:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// korean : Korean Hangul/Hanja keys
#define korean_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(korean:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// esperanto : Esperanto letters with superscripts
#define esperanto_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(esperanto:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// solaris : Old Solaris keycodes compatibility
#define solaris_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(solaris:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
// terminate : Key sequence to kill the X server
#define terminate_options_command "sed -En '/^! option$/,/^ *$/!d;s/[[:blank:]]+(terminate:[^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
#define tty_layout_command "find /usr/share/kbd/keymaps/ -type f -name \"*.map.*\" | sed -En \"s:.*/(.*)\\..*\\..*:\\1:p\" | sort -ufV"
#define tty_keymap_command "find /usr/share/kbd/keymaps/ -type f -name \"*.map.*\" | sed -En \"s:.*/(.*)\\..*\\..*:\\1:p\" | sort -ufV"
#define tty_font_command "find /usr/share/kbd/consolefonts -maxdepth 1 -type f -name \"*.gz\" | sed -En \"s:.*/(.*)(\\.psf\\.gz|\\.psfu\\.gz)$:\\1:p\" | sort -ufV"
typedef char* string;
__attribute__((unused)) static \
@ -60,29 +141,43 @@ typedef struct {
int save_config;
config_str launch_arguments;
int launch_size;
char *options;
GtkListStore *layouts_list;
GHashTable *options;
GtkTreeStore *layouts_store;
GtkListStore *options_list;
GtkListStore *models_list;
config_str variants_list;
int variants_size;
config_str layouts_list;
int layouts_size;
} config;
extern config main_config;
typedef struct {
template_window_fields
GtkWidget *KeyboardModelCombo;
GtkWidget *DefaultLayoutsSwitch;
GtkWidget *LayoutTree;
GtkWidget *LayoutAddButton;
GtkWidget *LayoutRemoveButton;
GtkWidget *LayoutMoveUpButton;
GtkWidget *LayoutMoveDownButton;
GtkWidget *LayoutChangingCombo;
GtkWidget *OptionsTree;
GtkWidget *OptionsEditButton;
GtkWidget *OptionsRemoveButton;
GtkWidget *ComposeSwitch;
GtkWidget *ScrollLockSwitch;
GtkWidget *NumLockCombo;
GtkWidget *ModelCombo;
GtkWidget *keyboard;
GtkWidget *keytable;
GtkWidget *grp_toggle;
GtkWidget *OptionsEntry;
GtkWidget *OptionsButton;
GtkWidget *LayoutsTree;
GtkWidget *MoveUpButton;
GtkWidget *MoveDownButton;
GtkWidget *AddButton;
GtkWidget *RemoveButton;
GtkTreeModelFilter *layoutsFilter;
GtkListStore *layoutsList;
GtkListStore *modelsList;
GtkWidget *TTYLayoutEntry;
GtkWidget *TTYLayoutButton;
GtkWidget *TTYSecondLayoutEntry;
GtkWidget *TTYSecondLayoutButton;
GtkWidget *TTYFontEntry;
GtkWidget *TTYFontButton;
GtkListStore *LayoutsList;
GtkListStore *OptionsList;
} main_window;
@ -100,11 +195,17 @@ typedef struct {
typedef struct {
GtkWidget *Window;
GtkWidget *StatusBox;
GtkWidget *MainTree;
GtkWidget *CancelButton;
GtkWidget *AcceptButton;
GtkWidget *OptionsFilterCombo;
GtkWidget *OptionsEntry;
GtkCellRenderer *ChosenCell;
GtkListStore *list;
GtkTreeStore *list;
GtkListStore *OptionsList;
GtkTreeModel *OptionsFilter;
char *parameters;
} layouts_window;
typedef struct {
@ -133,13 +234,50 @@ void config_init();
void yon_main_window_complete(main_window *widgets);
void on_move_down(GtkWidget *self, main_window *widgets);
void on_move_up(GtkWidget *self, main_window *widgets);
void on_layouts_add(GtkWidget *self, main_window *widgets);
void on_layouts_accept(GtkWidget *self, dictionary *dict);
void on_layouts_accept(GtkWidget *self, layouts_window *window);
void on_options_open(GtkWidget *self, main_window *widgets);
void on_options_accept(GtkWidget *self, dictionary *dict);
void on_options_accept(GtkWidget *self, layouts_window *window);
void on_model_changed(GtkComboBoxText *self, main_window *widgets);
void on_num_lock_changed(GtkComboBox *self, main_window *widgets);
void on_layouts_remove(GtkWidget *, main_window *widgets);
void yon_layouts_save(main_window *widgets);
void on_layouts_chosen(GtkCellRenderer *self, gchar *path, layouts_window *window);
GList *yon_get_all_selected(GtkTreeView *tree, int column);
void on_system_layouts_add(GtkWidget *, main_window *widgets);
void yon_layouts_add(GtkTreeView *tree, GtkListStore *cur_list, main_window *widgets);
void yon_layouts_remove(GtkTreeView *tree, GtkListStore *cur_list, main_window *widgets);
void on_system_layouts_remove(GtkWidget *, main_window *widgets);
void yon_config_init();
void yon_layout_build(layouts_window *window);
config_str yon_layout_get_children(char *layout_id, int *size);
layouts_window *yon_layouts_window_new();
void yon_layout_load(char *layout,main_window *widgets);
void yon_options_setup(layouts_window *window);
layouts_window *yon_options_window_new();
void on_options_filter_changed(GtkWidget *, layouts_window *window);
gboolean yon_filter_refilter(GtkTreeModel *model, GtkTreeIter *iter, layouts_window *window);
void yon_options_setup(layouts_window *window);
void on_option_chosen(GtkCellRenderer *, gchar *path, layouts_window *window);
void on_options_save(GtkWidget *,main_window *widgets);
void on_compose_switch(GtkWidget *,int status,main_window *widgets);
void on_scroll_lock_switch(GtkWidget *,int status,main_window *widgets);
void on_option_remove(GtkWidget*, main_window *widgets);
void on_layout_move_down(GtkWidget *, main_window *widgets);
void on_layout_move_up(GtkWidget *, main_window *widgets);
void on_layout_dnd_inserted(GtkTreeModel *, GtkTreePath* path, GtkTreeIter* iter, main_window *widgets);
void on_layout_dnd_deleted(GtkTreeModel *, GtkTreePath* path, GtkTreeIter* iter, main_window *widgets);
void on_tty_changed(GtkWidget *, main_window *widgets);
void on_tty_keymap_changed(GtkWidget *, main_window *widgets);
void on_tty_font_changed(GtkWidget *, main_window *widgets);
void yon_keymaps_open(GtkWidget *,main_window *widgets);
layouts_window *yon_keymaps_window_new();
void on_keymaps_accept(GtkWidget *, layouts_window *window);
void on_font_accept(GtkWidget *, layouts_window *window);
layouts_window *yon_font_window_new();
void yon_font_open(GtkWidget *,main_window *widgets);
void on_keymaps_selection_changed(GtkWidget *,layouts_window *window);
void on_font_accept(GtkWidget *, layouts_window *window);
void on_font_selection_changed(GtkWidget *,layouts_window *window);
void yon_interface_save(main_window *widgets);
void on_layout_default_toggled(GtkWidget *, int status, main_window *widgets);
void on_layout_selection_changed(GtkTreeView*,main_window *widgets);
void on_option_selection_changed(GtkTreeView *self,main_window *widgets);
void on_layout_default_sensitive_toggled(GtkWidget *, int status, main_window *widgets);

@ -1,4 +1,4 @@
#define WIKI_LINK _("https://wiki.ublinux.ru/ru/Программное_обеспечениерограммы_и_утилиты/Все/ubl-settings-keyboard")
#define WIKI_LINK _("https://wiki.ublinux.ru/software/programs_and_utilities/all/ubl-settings-keyboard")
#define TITLE_LABEL _("Keyboard")
#define TITLE_INFO_LABEL _("Keyboard configuration")
@ -7,8 +7,8 @@
#define NUM_LOCK_LABEL _("Num Lock on boot:")
#define KEYBOARD_LABEL _("Keyboard")
#define MODEL_LABEL _("Keyboard model:")
#define OPTIONS_LABEL _("Keyboard options:")
#define LAYOUTS_LABEL _("Keyboard layouts:")
#define KEYBOARD_OPTIONS_LABEL _("Keyboard options:")
#define KEYBOARD_LAYOUTS_LABEL _("Keyboard layouts:")
#define EDIT_LABEL _("Pick an option")
#define MOVE_UP_LABEL _("Move layout up")
#define MOVE_DOWN_LABEL _("Move layout down")
@ -18,3 +18,36 @@
#define ON_LABEL _("On")
#define OFF_LABEL _("Off")
#define ACCEPT_LABEL _("Accept")
#define CANCEL_LABEL _("Cancel")
#define SYSTEM_LABEL _("System")
#define KEYBOARD_MODEL_LABEL _("Keyboard model:")
#define LAYOUTS_LABEL _("Layouts:")
#define DEFAULT_LAYOUT_LABEL _("Default layout")
#define LAYOUT_CHANGING_LABEL _("Changing the layout:")
#define ADDITIONAL_OPTIONS_LABEL _("Additional options:")
#define SET_COMPOSE_LABEL _("Set Compose (Multi_Key) to the right Win key")
#define SCROLL_LOCK_LABEL _("Scroll Lock indication when switching layouts")
#define ON_LABEL _("On")
#define OFF_LABEL _("Off")
#define NUMLOCK_LABEL _("NumLock:")
#define TTY_LAYOUT_LABEL _("Setting up TTY VT")
#define SECONDARY_LAYOUT_LABEL _("Key layout and switch:")
#define KEYBOARD_LAYOUT_LABEL _("Keyboard layout")
#define DESIGNATION_LABEL _("Designation")
#define VARIANT_LABEL _("Variant")
#define NAME_LABEL _("Name")
#define DESCRIPTION_LABEL _("Description")
#define OPTIONS_LABEL _("Options:")
#define KEYMAP_LABEL _("Additional key layout and switch:")
#define FONT_LABEL _("Font:")
#define GROUP_LABEL _("Group")
#define KEYMAP_TITLE_LABEL _("Additional key layout for the keyboard")
#define FONT_TITLE_LABEL _("Font")
#define OPTION_REMOVE_LABEL _("Are you sure you want to remove current option?")
#define OPTION_REMOVE_TITLE_LABEL _("Option deletion")
#define LAYOUT_REMOVE_LABEL _("Are you sure you want to remove current layout?")
#define LAYOUT_REMOVE_TITLE_LABEL _("Layout deletion")
#define MANUAL_LABEL _("Manual input:")

@ -0,0 +1,239 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface>
<requires lib="gtk+" version="3.24"/>
<object class="GtkListStore" id="FontList">
<columns>
<!-- column-name Font -->
<column type="gchararray"/>
<!-- column-name Description -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkWindow" id="Window">
<property name="width-request">450</property>
<property name="height-request">550</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-keyboard</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox" id="StatusBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="spacing">5</property>
<child>
<object class="GtkSwitch" id="DefaultSwitch">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Default</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkTreeView" id="FontTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="model">FontList</property>
<property name="search-column">1</property>
<property name="enable-grid-lines">both</property>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Font</property>
<property name="clickable">True</property>
<property name="sort-column-id">0</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Description</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Manual input:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="ManualEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar" id="headerBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child type="title">
<object class="GtkLabel" id="headerTopic">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-bottom">2</property>
<property name="label" translatable="yes">Keyboard</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="pixel-size">32</property>
<property name="icon-name">com.ublinux.ubl-settings-keyboard</property>
</object>
</child>
<child>
<object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image2</property>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="AcceptButton">
<property name="label" translatable="yes">Accept</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image1</property>
</object>
<packing>
<property name="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
<style>
<class name="toolbar"/>
</style>
</object>
</child>
</object>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.accept-symbolic</property>
</object>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.cancel-uncolored-symbolic</property>
</object>
</interface>

@ -0,0 +1,257 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface>
<requires lib="gtk+" version="3.24"/>
<object class="GtkListStore" id="KeymapList">
<columns>
<!-- column-name Keymap -->
<column type="gchararray"/>
<!-- column-name Group -->
<column type="gchararray"/>
<!-- column-name Description -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.accept-symbolic</property>
</object>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.cancel-uncolored-symbolic</property>
</object>
<object class="GtkWindow" id="Window">
<property name="width-request">450</property>
<property name="height-request">550</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-keyboard</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox" id="StatusBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="spacing">5</property>
<child>
<object class="GtkSwitch" id="DefaultSwitch">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Default</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkTreeView" id="KeymapTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="model">KeymapList</property>
<property name="search-column">1</property>
<property name="enable-grid-lines">both</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Keyboard layout</property>
<property name="sort-column-id">0</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Group</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Description</property>
<child>
<object class="GtkCellRendererText">
<property name="wrap-mode">word</property>
<property name="wrap-width">120</property>
</object>
<attributes>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Manual input:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="ManualEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar" id="headerBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child type="title">
<object class="GtkLabel" id="headerTopic">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-bottom">2</property>
<property name="label" translatable="yes">Keyboard</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="pixel-size">32</property>
<property name="icon-name">com.ublinux.ubl-settings-keyboard</property>
</object>
</child>
<child>
<object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image2</property>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="AcceptButton">
<property name="label" translatable="yes">Accept</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image1</property>
</object>
<packing>
<property name="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
<style>
<class name="toolbar"/>
</style>
</object>
</child>
</object>
</interface>

@ -1,127 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.40.0 -->
<!-- Generated with glade 3.38.2 -->
<interface domain="ubl-settings-keyboard">
<requires lib="gtk+" version="3.24"/>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">emblem-ok-symbolic</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.accept-symbolic</property>
</object>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">process-stop-symbolic</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.cancel-uncolored-symbolic</property>
</object>
<object class="GtkListStore" id="liststore1">
<columns>
<!-- column-name Name -->
<column type="gchararray"/>
<!-- column-name Id -->
<column type="gchararray"/>
<!-- column-name Chosen -->
<column type="gboolean"/>
</columns>
</object>
<object class="GtkDialog" id="Window">
<object class="GtkWindow" id="Window">
<property name="width-request">450</property>
<property name="height-request">550</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="type-hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox">
<property name="can-focus">False</property>
<property name="margin-start">3</property>
<property name="margin-end">3</property>
<property name="margin-top">3</property>
<property name="margin-bottom">3</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="can-focus">False</property>
<property name="layout-style">end</property>
<child>
<object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image2</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="AcceptButton">
<property name="label" translatable="yes">Accept</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image1</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<property name="icon-name">com.ublinux.ubl-settings-keyboard</property>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkScrolledWindow">
<object class="GtkTreeView" id="LayoutsTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="shadow-type">in</property>
<property name="headers-visible">False</property>
<property name="search-column">1</property>
<child>
<object class="GtkTreeView" id="LayoutsTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="model">liststore1</property>
<property name="headers-visible">False</property>
<property name="search-column">1</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">column</property>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">column</property>
<child>
<object class="GtkCellRendererToggle" id="ChosenCell"/>
<attributes>
<attribute name="active">2</attribute>
</attributes>
</child>
</object>
<object class="GtkCellRendererToggle" id="ChosenCell"/>
<attributes>
<attribute name="active">3</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">column</property>
<property name="sort-column-id">0</property>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">column</property>
<property name="sort-column-id">0</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
@ -129,7 +60,6 @@
<object class="GtkHeaderBar" id="headerBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title">
<object class="GtkLabel" id="headerTopic">
<property name="visible">True</property>
@ -159,6 +89,31 @@
<property name="icon-name">com.ublinux.ubl-settings-keyboard</property>
</object>
</child>
<child>
<object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image2</property>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="AcceptButton">
<property name="label" translatable="yes">Accept</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image1</property>
</object>
<packing>
<property name="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
<style>
<class name="toolbar"/>
</style>

@ -3,46 +3,127 @@
<interface domain="ubl-settings-keyboard">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-keyboard.css -->
<object class="GtkDialog" id="Window">
<object class="GtkListStore" id="OptionsList">
<columns>
<!-- column-name Id -->
<column type="gchararray"/>
<!-- column-name Name -->
<column type="gchararray"/>
<!-- column-name Chosen -->
<column type="gboolean"/>
</columns>
</object>
<object class="GtkTreeModelFilter" id="OptionsFilter">
<property name="child-model">OptionsList</property>
</object>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.accept-symbolic</property>
</object>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.cancel-uncolored-symbolic</property>
</object>
<object class="GtkWindow" id="Window">
<property name="width-request">450</property>
<property name="height-request">550</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="type-hint">dialog</property>
<child internal-child="vbox">
<property name="icon-name">com.ublinux.ubl-settings-keyboard</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">3</property>
<property name="margin-end">3</property>
<property name="margin-top">3</property>
<property name="margin-bottom">3</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<child>
<object class="GtkBox" id="StatusBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="layout-style">end</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Cancel</property>
<object class="GtkComboBoxText" id="OptionsFilterCombo">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image2</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="AcceptButton">
<property name="label" translatable="yes">Accept</property>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image1</property>
<property name="hscrollbar-policy">never</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkTreeView" id="OptionsTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="model">OptionsList</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child>
<object class="GtkTreeViewColumn">
<child>
<object class="GtkCellRendererToggle" id="ChosenCell"/>
<attributes>
<attribute name="active">2</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Name</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Description</property>
<child>
<object class="GtkCellRendererText">
<property name="wrap-mode">word</property>
<property name="wrap-width">250</property>
</object>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
@ -50,53 +131,55 @@
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Options:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="OptionsEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="placeholder-text" translatable="yes">grp:lalt_lshift_toggle,grp_led:scroll,compose:rwin</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar" id="headerBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title">
<object class="GtkLabel" id="headerTopic">
<property name="visible">True</property>
@ -126,20 +209,35 @@
<property name="icon-name">com.ublinux.ubl-settings-keyboard</property>
</object>
</child>
<child>
<object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image2</property>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="AcceptButton">
<property name="label" translatable="yes">Accept</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image1</property>
</object>
<packing>
<property name="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
<style>
<class name="toolbar"/>
</style>
</object>
</child>
</object>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">emblem-ok-symbolic</property>
</object>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">process-stop-symbolic</property>
</object>
</interface>

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save