2 // Copyright 2010 Sun Microsystems, Inc. All rights reserved.
4 // Permission is hereby granted, free of charge, to any person obtaining a
5 // copy of this software and associated documentation files (the
6 // "Software"), to deal in the Software without restriction, including
7 // without limitation the rights to use, copy, modify, merge, publish,
8 // distribute, and/or sell copies of the Software, and to permit persons
9 // to whom the Software is furnished to do so, provided that the above
10 // copyright notice(s) and this permission notice appear in all copies of
11 // the Software and that both the above copyright notice(s) and this
12 // permission notice appear in supporting documentation.
14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
17 // OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
18 // HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
19 // INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
20 // FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
21 // NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
22 // WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
24 // Except as contained in this notice, the name of a copyright holder
25 // shall not be used in advertising or otherwise to promote the sale, use
26 // or other dealings in this Software without prior written authorization
27 // of the copyright holder.
30 //Copyright 1996, 1998 The Open Group
32 //All Rights Reserved.
34 //The above copyright notice and this permission notice shall be
35 //included in all copies or substantial portions of the Software.
37 //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
38 //EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
39 //MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
40 //IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
41 //OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
42 //ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
43 //OTHER DEALINGS IN THE SOFTWARE.
45 //Except as contained in this notice, the name of The Open Group shall
46 //not be used in advertising or otherwise to promote the sale, use or
47 //other dealings in this Software without prior written authorization
48 //from The Open Group.
54 // The contents of this file are subject to the terms of the
55 // Common Development and Distribution License (the "License").
56 // You may not use this file except in compliance with the License.
58 // You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
59 // or http://www.opensolaris.org/os/licensing.
60 // See the License for the specific language governing permissions
61 // and limitations under the License.
63 // When distributing Covered Code, include this CDDL HEADER in each
64 // file and include the License file at src/OPENSOLARIS.LICENSE.
65 // If applicable, add the following below this CDDL HEADER, with the
66 // fields enclosed by brackets "[]" replaced with your own identifying
67 // information: Portions Copyright [yyyy] [name of copyright owner]
72 // Symbols shared by all Sun Keyboard layouts
73 xkb_symbols "sunbasic" {
74 include "srvr_ctrl(xfree86)"
76 // Needed for left function keys and volume keys
77 // Need to include this before us(basic) otherwise tilde is mapped to
82 include "srvr_ctrl(fkey2vt)"
86 key <ESC> { [ Escape ] };
88 // the extra key on most European keyboards
89 key <LSGT> { [ less, greater, bar, brokenbar ] };
91 // these keys are common to almost all layouts
92 key <BKSL> { [ backslash, bar ] };
93 key <SPCE> { [ space ] };
95 key <BKSP> { [ BackSpace ] };
96 key <TAB> { [ Tab, ISO_Left_Tab ] };
97 key <RTRN> { [ Return ] };
99 key <NMLK> { [ Num_Lock, Pointer_EnableKeys ] };
101 key <COMP> { [ Multi_key ] };
102 // End alphanumeric section
104 key <LFSH> { [ Shift_L ] };
105 key <LCTL> { [ Control_L ] };
107 key <RTSH> { [ Shift_R ] };
108 key <RCTL> { [ Control_R ] };
111 // begin modifier mappings
112 modifier_map Shift { Shift_L, Shift_R };
113 modifier_map Lock { Caps_Lock };
114 modifier_map Control{ Control_L, Control_R };
115 modifier_map Mod2 { Num_Lock };
117 // Fake keys for virtual<->real modifiers mapping
118 key <LVL3> { [ ISO_Level3_Shift ] };
119 key <MDSW> { [ Mode_switch ] };
120 modifier_map Mod5 { <LVL3>, <MDSW> };
122 key <ALT> { [ NoSymbol, Alt_L ] };
123 key <LALT> { [ Alt_L, Alt_L ] };
124 key <LWIN> { [ Meta_L ] };
125 key <RWIN> { [ Meta_R ] };
126 modifier_map Mod1 { Alt_L };
127 modifier_map Mod4 { Meta_L, Meta_R };
129 // key <LALT> { [ Alt_L ] };
130 // key <ALGR> { [ Mode_switch ] };
131 // key <LMTA> { [ Meta_L ] };
132 // key <RMTA> { [ Meta_R ] };
134 include "sun_vndr/us(left_funkeys)"
136 include "capslock(capslock)"
137 //include "capslock(shiftlock)"
140 // This default section uses the same symbols as other XKB implementations
141 // for greater compatibility & AccessX MouseKeys support, but it is
142 // different than the traditional Sun key mappings that date back to the
143 // Sun Type 2 keyboard, in which the right side numpad were "R" function
144 // keys. To restore the original behavior, comment out this section and
145 // uncomment the section below that lists the R key mappings.
146 key <KPDV> { [ KP_Divide ] };
147 key <KPMU> { [ KP_Multiply ] };
148 key <KPSU> { [ KP_Subtract ] };
150 key <KP7> { [ KP_Home, KP_7 ] };
151 key <KP8> { [ KP_Up, KP_8 ] };
152 key <KP9> { [ KP_Prior, KP_9 ] };
153 key <KPAD> { [ KP_Add ] };
155 key <KP4> { [ KP_Left, KP_4 ] };
156 key <KP5> { [ KP_Begin, KP_5 ] };
157 key <KP6> { [ KP_Right, KP_6 ] };
159 key <KP1> { [ KP_End, KP_1 ] };
160 key <KP2> { [ KP_Down, KP_2 ] };
161 key <KP3> { [ KP_Next, KP_3 ] };
162 key <KPEN> { [ KP_Enter ] };
164 key <KP0> { [ KP_Insert, KP_0 ] };
165 key <KPDL> { [ KP_Delete, KP_Decimal ] };
167 // End New Keypad section - Begin Sun traditional Keypad section
169 // key <KP7> { [ R7, R7 ], [ KP_7, Home ] };
170 // key <KP8> { [ Up, R8 ], [ KP_8 ] };
171 // key <KP9> { [ R9, R9 ], [ KP_9, Prior ] };
172 // key <KPAD> { [ KP_Add ] };
174 // key <KP4> { [ Left, R10 ], [ KP_4 ] };
175 // key <KP5> { [ R11, R11 ], [ KP_5 ] };
176 // key <KP6> { [ Right, R12 ], [ KP_6 ] };
178 // key <KP1> { [ R13, R13 ], [ KP_1, End ] };
179 // key <KP2> { [ Down, R14 ], [ KP_2 ] };
180 // key <KP3> { [ R15, R15 ], [ KP_3, Next ] };
181 // key <KPEN> { [ KP_Enter ] };
182 // key <KP0> { [ KP_Insert, KP_Insert], [ KP_0 ] };
183 // key <KPDL> { [ Delete, Delete ], [ KP_Decimal ] };
185 // End "Keypad" section
190 xkb_symbols "left_funkeys" {
191 // Suppliment to inet(evdev) for added functionality of left-funkeys
192 //key <STOP> { [ NoSymbol ], [ L1, L1 ] };
193 //key <AGAI> { [ NoSymbol ], [ L2, L2 ] };
194 //key <PROP> { [ NoSymbol ], [ L3, L3 ] };
195 //key <UNDO> { [ NoSymbol ], [ L4, L4 ] };
196 //key <FRNT> { [ NoSymbol ], [ L5, L5 ] };
197 //key <COPY> { [ NoSymbol ], [ L6, L6 ] };
198 //key <OPEN> { [ NoSymbol ], [ L7, L7 ] };
199 //key <PAST> { [ NoSymbol ], [ L8, L8 ] };
200 //key <FIND> { [ NoSymbol ], [ L9, L9 ] };
201 //key <CUT> { [ NoSymbol ], [ L10, L10 ] };
203 // The above symbols were chosen for better compatibility withother xkb
204 // mappings. The old mappings are kepy below in case someone needs them
205 key <STOP> { [ L1, L1, SunStop ] };
206 key <AGAI> { [ L2, L2, SunAgain ] };
207 key <PROP> { [ L3, L3, SunProps ] };
208 key <UNDO> { [ L4, L4, SunUndo ] };
209 key <FRNT> { [ L5, L5, SunFront ] };
210 key <COPY> { [ L6, L6, SunCopy ] };
211 key <OPEN> { [ L7, L7, SunOpen ] };
212 key <PAST> { [ L8, L8, SunPaste ] };
213 key <FIND> { [ L9, L9, SunFind ] };
214 key <CUT> { [ L10, L10, SunCut ] };
218 xkb_symbols "volumekeys" {
219 // Suppliment to inet(evdev) for added functionality of audio keys
220 key <MUTE> { [ NoSymbol, SunVideoDegauss ] };
221 key <VOL-> { [ NoSymbol, XF86MonBrightnessDown ] };
222 key <VOL+> { [ NoSymbol, XF86MonBrightnessUp ] };
224 // The above symbols were chosen for better compatibility withother xkb
225 // mappings. The old mappings are kepy below in case someone needs them
226 //key <MUTE> { [ SunAudioMute, SunVideoDegauss ] };
227 //key <VOL-> { [ SunAudioLowerVolume, SunVideoLowerBrightness ] };
228 //key <VOL+> { [ SunAudioRaiseVolume, SunVideoRaiseBrightness ] };
229 //key <POWR> { [ SunPowerSwitch, SunPowerSwitchShift ] };
233 // US/ASCII layout for a Type 4 Sun keyboard
234 xkb_symbols "type4basic" {
235 include "sun_vndr/us(sunbasic)"
237 // A few alphanumeric keys are different
238 key <AE04> { [ 4, dollar, EuroSign ] };
239 key <AE05> { [ 5, percent, EuroSign ] };
240 key <AD03> { [ e, E, EuroSign ] };
242 key <LNFD> { [ Linefeed ] };
244 // Begin "Editing" section
245 key <PRSC> { [ R2, R2, Print ] };
246 key <SCLK> { [ R3, R3, Scroll_Lock, Break ] };
247 key <PAUS> { [ R1, R1, Pause ] };
249 // End "Editing" section, begin "Keypad"
250 key <KPEQ> { [ R4, KP_Equal, KP_Equal ] };
254 xkb_symbols "type4" {
255 include "sun_vndr/us(type4basic)"
257 key <BKSL> { [ backslash, bar, brokenbar ] };
260 // US/ASCII layout for a Type 5 Sun keyboard
261 xkb_symbols "type5basic" {
262 include "sun_vndr/us(sunbasic)"
263 include "sun_vndr/us(volumekeys)"
265 // Begin "Editing" section
266 key <PRSC> { [ R2, R2, Print, SunSys_Req ] };
267 key <SCLK> { [ R3, R3, Scroll_Lock ] };
268 key <PAUS> { [ R1, R1, Pause, Break ] };
269 // End "Editing" section
272 xkb_symbols "type5" {
273 include "sun_vndr/us(type5basic)"
275 // A few alphanumeric keys are different
276 key <AE04> { [ 4, dollar, EuroSign ] };
277 key <AE05> { [ 5, percent, EuroSign ] };
278 key <AD03> { [ e, E , EuroSign ] };
279 key <BKSL> { [ backslash, bar, brokenbar ] };
282 // US/ASCII layout for a Type 5 Sun keyboard
283 xkb_symbols "type5hobobasic" {
284 include "sun_vndr/us(type5basic)"
287 xkb_symbols "type5hobo" {
288 include "sun_vndr/us(type5hobobasic)"
290 // A few alphanumeric keys are different
291 key <AE04> { [ 4, dollar, EuroSign ] };
292 key <AE05> { [ 5, percent, EuroSign ] };
293 key <AD03> { [ e, E, EuroSign ] };
294 key <BKSL> { [ backslash, bar, brokenbar ] };
296 // Here is the hobo keypad:
298 key <AE07> { [ 7, ampersand, NoSymbol, NoSymbol, KP_7 ] };
299 key <AE08> { [ 8, asterisk, NoSymbol, NoSymbol, KP_8 ] };
300 key <AE09> { [ 9, parenleft, NoSymbol, NoSymbol, KP_9 ] };
301 key <AE10> { [ 0, parenright, NoSymbol, NoSymbol, KP_Multiply] };
303 key <AD07> { [ u, U, NoSymbol, NoSymbol, KP_4 ] };
304 key <AD08> { [ i, I, NoSymbol, NoSymbol, KP_5 ] };
305 key <AD09> { [ o, O, NoSymbol, NoSymbol, KP_6 ] };
306 key <AD10> { [ p, P, NoSymbol, NoSymbol, KP_Subtract] };
308 key <AC07> { [ j, J, NoSymbol, NoSymbol, KP_1 ] };
309 key <AC08> { [ k, K, NoSymbol, NoSymbol, KP_2 ] };
310 key <AC09> { [ l, L, NoSymbol, NoSymbol, KP_3 ] };
311 key <AC10> { [ semicolon, colon, NoSymbol, NoSymbol, KP_Add ] };
313 key <RTRN> { [ Return, NoSymbol, NoSymbol, KP_Enter ] };
315 key <AB07> { [ m, M, NoSymbol, NoSymbol, KP_0 ] };
317 key <AB09> { [ period, greater, NoSymbol, NoSymbol, KP_Decimal] };
318 key <AB10> { [ slash, question, NoSymbol, NoSymbol, KP_Divide ] };
322 xkb_symbols "type6" {
323 include "sun_vndr/us(sunbasic)"
324 include "sun_vndr/us(volumekeys)"
325 include "eurosign(4)"
326 include "level3(ralt_switch)"
328 key <SYRQ> { [ SunSys_Req ]};
333 xkb_symbols "pc101" {
335 key <RALT> { [ Mode_switch, Meta_R ] };
338 xkb_symbols "pc102" {
340 key <RALT> { [ Mode_switch, Meta_R ] };
343 xkb_symbols "pc104" {
347 xkb_symbols "pc101currency" {
349 key <AE04> { [ 4, dollar ], [ EuroSign ] };
350 key <AE05> { [ 5, percent ], [ EuroSign ] };
351 key <AD03> { [ e, E ], [ EuroSign ] };
352 key <BKSL> { [ backslash, bar ], [ brokenbar ]};
355 xkb_symbols "US101A_Sun" {
357 key <AE04> { [ 4, dollar ], [ EuroSign ] };
358 key <AE05> { [ 5, percent ], [ EuroSign ] };
359 key <AD03> { [ e, E ], [ EuroSign ] };
360 key <BKSL> { [ backslash, bar ], [ brokenbar ]};
362 // Begin "Editing" section
363 key <PRSC> { [ L5, L5 ], [ Print, SunSys_Req ]};
364 key <SCLK> { [ L7, L7 ], [ Scroll_Lock ]};
365 key <PAUS> { [ L1, L1 ], [ Pause, Break ]};
366 key <INS> { [ L8, L8 ], [ Insert ]};
367 key <HOME> { [ L6, L6 ], [ Home ]};
368 key <PGUP> { [ L3, L3 ], [ Prior ]};
371 key <DELE> { [ L10, L10 ], [ Delete ]};
372 key <END> { [ L9, L9 ], [ End ]};
373 key <PGDN> { [ L4, L4 ], [ Next ]};
376 key <LEFT> { [ Left ] };
377 key <DOWN> { [ Down ] };
378 key <RGHT> { [ Right ] };
380 key <KPDV> { [ R5, R5 ], [ KP_Divide ] };
381 key <KPMU> { [ R6, R6 ], [ KP_Multiply ] };
383 key <KP7> { [ R7, KP_7 ], [ KP_7, Home ] };
384 key <KP8> { [ KP_Up, KP_8 ], [ KP_8 ] };
385 key <KP9> { [ R9, KP_9 ], [ KP_9, Prior ] };
386 key <KPAD> { [ KP_Add ] };
388 key <KP4> { [ KP_Left, KP_4 ], [ KP_4 ] };
389 key <KP5> { [ R11, KP_5 ], [ KP_5 ] };
390 key <KP6> { [ KP_Right, KP_6 ], [ KP_6 ] };
392 key <KP1> { [ R13, KP_1 ], [ KP_1, End ] };
393 key <KP2> { [ KP_Down, KP_2 ], [ KP_2 ] };
394 key <KP3> { [ R15, KP_3 ], [ KP_3, Next ] };
395 key <KPEN> { [ KP_Enter ] };
397 key <LALT> { [ Meta_L ] };
398 key <RALT> { [ Alt_L ] };
399 key <RCTL> { [ Multi_key ] };