diff -urN xc.orig/programs/Xserver/hw/xfree86/common/xf86Events.c xc/programs/Xserver/hw/xfree86/common/xf86Events.c --- xc.orig/programs/Xserver/hw/xfree86/common/xf86Events.c 2004-07-30 13:56:53.000000000 -0700 +++ xc/programs/Xserver/hw/xfree86/common/xf86Events.c 2004-09-02 11:45:52.000000000 -0700 @@ -495,6 +495,14 @@ if (xf86Info.scanPrefix == 0) { switch (scanCode) { + + case 0x5d: scanCode = 0xD7; break; /* AGAI, SunAgain */ + case 0x5e: scanCode = 0xD8; break; /* PROP, SunProps */ + case 0x5f: scanCode = 0xD9; break; /* UNDO, SunUndo */ + case 0x62: scanCode = 0xDA; break; /* FRNT, SunFront */ + case 0x64: scanCode = 0xDC; break; /* OPEN, SunOpen */ + case 0x65: scanCode = 0xDD; break; /* PAST, SunPaste */ + case KEY_Prefix0: case KEY_Prefix1: #if defined(PCCONS_SUPPORT) || defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT) || defined(WSCONS_SUPPORT) @@ -604,6 +612,22 @@ case KEY_F6: scanCode = KEY_F16; break; case KEY_F7: scanCode = KEY_F17; break; case KEY_KP_Plus: scanCode = KEY_KP_DEC; break; + /* NE: again for Type 6. Map prefixed scancodes to keycodes + xkb/keycodes/xfree86(type6) -10 */ + case 0x68: scanCode = 0xD6; break; /* SunStop */ + case 0x78: scanCode = 0xDB; break; /* SunCopy */ + case 0x65: scanCode = 0xDE; break; /* SunFind */ + case 0x3c: scanCode = 0xDF; break; /* SunCut */ + case 0x62: scanCode = 0xE0; break; /* SunHelp */ + case 0x5f: scanCode = 0xD9; break; /* UNDO, SunUndo */ + case 0x64: scanCode = 0xDC; break; /* OPEN, SunOpen */ + + /* NE: these are only -8 (GLYPH_OFFSET) */ + case 0x26: scanCode = 157; break; /* SunMute */ + case 0x25: scanCode = 151; break; /* VOL- */ + case 0x1e: scanCode = 150; break; /* VOL+ */ + case 0x5e: scanCode = 152; break; /* SunPower */ + /* * Ignore virtual shifts (E0 2A, E0 AA, E0 36, E0 B6) */ diff -urN xc.orig/programs/xkbcomp/keycodes/xfree86 xc/programs/xkbcomp/keycodes/xfree86 --- xc.orig/programs/xkbcomp/keycodes/xfree86 2004-09-01 12:06:44.000000000 -0700 +++ xc/programs/xkbcomp/keycodes/xfree86 2004-09-02 11:52:13.000000000 -0700 @@ -411,3 +411,36 @@ = 51; = 134; }; + +// For Sun/Type6 keyboards +xkb_keycodes "type6" { + include "xfree86(xfree86)" + + alias = ; + alias = ; + + alias = ; + alias = ; + +// again, from sun/type5 + = 222; + = 223; + = 224; + = 225; + = 226; + = 227; + = 228; + = 229; + = 230; + = 231; + + = 232; + = 165; + = 159; + = 158; + = 160; + + indicator 1 = "Caps Lock"; + indicator 2 = "Num Lock"; + indicator 3 = "Scroll Lock"; +}; --- xc/programs/xkbcomp/rules/xorg.orig 2005-12-28 23:21:17.000000000 +0000 +++ xc/programs/xkbcomp/rules/xorg 2005-12-28 23:27:54.000000000 +0000 @@ -51,6 +51,7 @@ powerpcps2 = powerpcps2 pc98 = xfree98(pc98) abnt2 = xfree86(abnt2) + sun_type6_usb = xfree86(type6) jp106 = xfree86(jp106) * = xfree86 @@ -81,6 +82,7 @@ pc98 = nec(pc98) abnt2 = pc(abnt2) $mac = macintosh(macintosh) + sun_type6_usb = sun(type5) * = pc(pc104) ! model layout variant = symbols @@ -311,6 +313,7 @@ $mac en_US = macintosh/us(extended) $mac * = macintosh/us(extended)+macintosh/%l%(v) $pcmodels intl = us(%mcompose) + sun_type6_usb * = us(sun_type6_usb) * intl = us(pc104compose) * jp = pc/pc(pc102)+pc/jp(latin)+pc/jp:2 $pcmodels ca = pc/pc(%m)+pc/ca(multi)+pc/ca(multi-2gr):2+group(rctrl_switch) diff -urN xc.orig/programs/xkbcomp/symbols/us xc/programs/xkbcomp/symbols/us --- xc.orig/programs/xkbcomp/symbols/us 2004-09-02 03:48:49.000000000 -0700 +++ xc/programs/xkbcomp/symbols/us 2004-09-02 11:45:52.000000000 -0700 @@ -321,6 +321,108 @@ modifier_map Mod4 { Super_L, Super_R }; }; +// definition for Sun Type 6 USB +xkb_symbols "sun_type6_usb" { + include "us(basic)" + + key { [ Shift_R ] }; + key { [ Alt_L ] }; + key { [ Control_R ] }; + key { [ Alt_R ] }; + key { [ Meta_L ] }; + key { [ Meta_R ] }; + key { [ Multi_key ] }; + + // Begin "Function" section + key { [ F1 ] }; + key { [ F2 ] }; + key { [ F3 ] }; + key { [ F4 ] }; + key { [ F5 ] }; + key { [ F6 ] }; + key { [ F7 ] }; + key { [ F8 ] }; + key { [ F9 ] }; + key { [ F10 ] }; + key { [ F11 ] }; + key { [ F12 ] }; + // End "Function" section + + // Begin "Editing" section + key { + type= "PC_SYSRQ", + symbols[Group1]= [ Print, Execute ] + }; + key { [ Scroll_Lock ] }; + key { + type= "PC_BREAK", + symbols[Group1]= [ Pause, Break ] + }; + key { [ Insert ] }; + key { [ Home ] }; + key { [ Prior ] }; + key { [ Delete ] }; + key { [ End ] }; + key { [ Next ] }; + + key { [ Up ] }; + key { [ Left ] }; + key { [ Down ] }; + key { [ Right ] }; + + // End "Editing" section, begin "Keypad" + key { [ Num_Lock, Pointer_EnableKeys ] }; + key { [ KP_Divide ] }; + key { [ KP_Multiply ] }; + key { [ KP_Subtract ] }; + + key { [ KP_Home, KP_7 ] }; + key { [ KP_Up, KP_8 ] }; + key { [ KP_Prior, KP_9 ] }; + key { [ KP_Add ] }; + + key { [ KP_Left, KP_4 ] }; + key { [ KP_Begin, KP_5 ] }; + key { [ KP_Right, KP_6 ] }; + + key { [ KP_End, KP_1 ] }; + key { [ KP_Down, KP_2 ] }; + key { [ KP_Next, KP_3 ] }; + key { [ KP_Enter ] }; + + key { [ KP_Insert, KP_0 ] }; + key { [ KP_Delete, KP_Decimal ] }; + // End "Keypad" section + + key { [ SunAudioMute, SunVideoDegauss ] }; + key { [ SunAudioLowerVolume,SunVideoLowerBrightness ] }; + key { [ SunAudioRaiseVolume,SunVideoRaiseBrightness ] }; + key { [ SunPowerSwitch, SunPowerSwitchShift ] }; + + // from symbols/sun/us(type5) + key { [ Cancel ], [ F11 ] }; + key { [ Redo ], [ F12 ] }; + key { [ SunProps ], [ F13 ] }; + key { [ Undo ], [ F14 ] }; + key { [ SunFront ], [ F15 ] }; + key { [ SunCopy ], [ F16 ] }; + key { [ SunOpen ], [ F17 ] }; + key { [ SunPaste ], [ F18 ] }; + key { [ Find ], [ F19 ] }; + key { [ SunCut ], [ F20 ] }; + + key { [ Help ] }; + + // begin modifier mappings +// XXX should Shift_L be here too? + modifier_map Shift { Shift_R }; + modifier_map Mod1 { Alt_L, Alt_R }; + modifier_map Mod2 { Num_Lock }; + modifier_map Mod3 { Multi_key }; + modifier_map Mod4 { Meta_L, Meta_R }; + modifier_map Mod5 { Scroll_Lock }; +}; + // definition of Euro-style, Right "logo" key == [Mode_switch, Multi_key] xkb_symbols "pc104euro" { include "us(pc104)"