new French layouts, b.fd.o#8240
[xorg/xkeyboard-config] / types / extra
1 // $XFree86: xc/programs/xkbcomp/types/extra,v 1.3 2002/11/26 02:14:02 dawes Exp $
2
3 partial default xkb_types "default" {
4     // Definition for a key type used for the czech keymap, for instance.
5     // Defines style a with four level shift. It is similar to three_level
6     // type used for iso9995 but it lets the shift key behave "normally".
7
8     virtual_modifiers LevelThree;
9
10     type "FOUR_LEVEL" {
11         modifiers = Shift+LevelThree;
12         map[None] = Level1;
13         map[Shift] = Level2;
14         map[LevelThree] = Level3;
15         map[Shift+LevelThree] = Level4;
16         level_name[Level1] = "Base";
17         level_name[Level2] = "Shift";
18         level_name[Level3] = "Alt Base";  
19         level_name[Level4] = "Shift Alt";  
20     };
21
22     type "FOUR_LEVEL_ALPHABETIC" {
23         modifiers = Shift+Lock+LevelThree;
24         map[None] = Level1;
25         map[Shift] = Level2;
26         map[Lock]  = Level2;
27         map[LevelThree] = Level3;
28         map[Shift+LevelThree] = Level4;
29         map[Lock+LevelThree] =  Level4;
30         map[Lock+Shift+LevelThree] =  Level3;
31         level_name[Level1] = "Base";
32         level_name[Level2] = "Shift";
33         level_name[Level3] = "Alt Base";
34         level_name[Level4] = "Shift Alt";
35     };
36
37     type "FOUR_LEVEL_SEMIALPHABETIC" {
38         modifiers = Shift+Lock+LevelThree;
39         map[None] = Level1;
40         map[Shift] = Level2;
41         map[Lock]  = Level2;
42         map[LevelThree] = Level3;
43         map[Shift+LevelThree] = Level4;
44         map[Lock+LevelThree] =  Level3;
45         map[Lock+Shift+LevelThree] = Level4;
46         preserve[Lock+LevelThree] = Lock;
47         preserve[Lock+Shift+LevelThree] = Lock;
48         level_name[Level1] = "Base";
49         level_name[Level2] = "Shift";
50         level_name[Level3] = "Alt Base";
51         level_name[Level4] = "Shift Alt";
52     };
53
54     // Another four level keypad variant
55     // First two levels are controled by NumLock (with active Shift-ing like
56     // in KEYPAD). LevelThree overrides this mode, with two additional
57     // Shift-ed levels
58     // NumLock state is intentionnaly ignored when LevelThree is active
59     type "FOUR_LEVEL_MIXED_KEYPAD" {
60         modifiers = Shift+NumLock+LevelThree;
61         map[None] = Level1;
62         map[Shift+NumLock] = Level1;
63         map[NumLock] = Level2;
64         map[Shift] = Level2;
65         map[LevelThree] = Level3;
66         map[NumLock+LevelThree] = Level3;
67         map[Shift+LevelThree] = Level4;
68         map[Shift+NumLock+LevelThree] = Level4;
69         level_name[Level1] = "Base";
70         level_name[Level2] = "Number";
71         level_name[Level3] = "Alt Base";
72         level_name[Level4] = "Shift Alt";
73     };
74
75     // Base level, two Shift-ed LevelThree levels, one Ctrl+Alt command level
76     type "FOUR_LEVEL_X" {
77         modifiers = Shift+LevelThree+Control+Alt;
78         map[None] = Level1;
79         map[LevelThree] = Level2;
80         map[Shift+LevelThree] = Level3;
81         map[Control+Alt] = Level4;
82         level_name[Level1] = "Base";
83         level_name[Level2] = "Alt Base";
84         level_name[Level3] = "Shift Alt";
85         level_name[Level4] = "Ctrl+Alt";
86     };
87
88 // Special type for keys used in Serbian Latin Unicode map
89 // It makes it possible to use all three forms of latin letters 
90 // present in Unicode that are made up of two separate letters 
91 // (forms like LJ, Lj, and lj; NJ, Nj, and nj; etc)
92
93     type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" {
94         modifiers = Shift+Lock+LevelThree;
95         map[None] = Level1;
96         map[Shift] = Level2;
97         map[Lock] = Level4;
98         map[LevelThree] = Level3;
99         map[Shift+LevelThree] = Level4;
100         map[Lock+LevelThree] =  Level3;
101         map[Lock+Shift+LevelThree] = Level3;
102         preserve[Lock]= Lock;
103         preserve[Lock+LevelThree]= Lock;
104         level_name[Level1] = "Base";
105         level_name[Level2] = "Shift";
106         level_name[Level3] = "AltGr Base";
107         level_name[Level4] = "Shift AltGr";
108     };
109 };
110
111 // This enables the four level shifting also for the keypad.
112 partial xkb_types "keypad" {
113     virtual_modifiers LevelThree;
114
115     type "FOUR_LEVEL_KEYPAD" {
116         modifiers = Shift+NumLock+LevelThree;
117         map[None] = Level1;
118         map[Shift] = Level2;
119         map[NumLock] = Level2;
120         map[Shift+NumLock] = Level1;
121         map[LevelThree] = Level3;
122         map[Shift+LevelThree] = Level4;
123         map[NumLock+LevelThree] = Level4;
124         map[Shift+NumLock+LevelThree] = Level3;
125         level_name[Level1] = "Base";
126         level_name[Level2] = "Number";
127         level_name[Level3] = "Alt Base";
128         level_name[Level4] = "Alt Number";
129     };       
130 };
131
132 // This enables the four level shifting also for the keypad,
133 // but levels 1 and 2, and 3 and 4 are swapped on Mac keypads.
134 partial xkb_types "mac_keypad" {
135     virtual_modifiers LevelThree;
136
137     type "FOUR_LEVEL_KEYPAD" {
138         modifiers = Shift+NumLock+LevelThree;
139         map[None] = Level2;
140         map[Shift] = Level1;
141         map[NumLock] = Level1;
142         map[Shift+NumLock] = Level2;
143         map[LevelThree] = Level4;
144         map[Shift+LevelThree] = Level3;
145         map[NumLock+LevelThree] = Level3;
146         map[Shift+NumLock+LevelThree] = Level4;
147         level_name[Level2] = "Base";
148         level_name[Level1] = "Number";
149         level_name[Level4] = "Alt Base";
150         level_name[Level3] = "Alt Number";
151     };       
152 };