aboutsummaryrefslogtreecommitdiff
path: root/xorg-server
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server')
-rw-r--r--xorg-server/Xi/xiproperty.c2
-rw-r--r--xorg-server/Xi/xiquerypointer.c2
-rw-r--r--xorg-server/configure.ac4556
-rw-r--r--xorg-server/fb/Makefile.am4
-rw-r--r--xorg-server/glx/glxcmds.c4763
-rw-r--r--xorg-server/glx/glxcmdsswap.c1846
-rw-r--r--xorg-server/hw/xfree86/common/xf86Init.c2994
-rw-r--r--xorg-server/hw/xfree86/common/xf86VidMode.c2
-rw-r--r--xorg-server/hw/xfree86/common/xf86xv.c210
-rw-r--r--xorg-server/hw/xfree86/common/xf86xv.h3
-rw-r--r--xorg-server/hw/xfree86/common/xf86xvpriv.h6
-rw-r--r--xorg-server/hw/xfree86/dri2/dri2.c2
-rw-r--r--xorg-server/hw/xfree86/fbdevhw/fbdevhw.c56
-rw-r--r--xorg-server/hw/xfree86/int10/helper_exec.c1466
-rw-r--r--xorg-server/hw/xfree86/modes/xf86Crtc.c6563
-rw-r--r--xorg-server/hw/xwin/winconfig.c77
-rw-r--r--xorg-server/hw/xwin/winkeybd.c5
-rw-r--r--xorg-server/hw/xwin/winkeyhook.c1
-rw-r--r--xorg-server/hw/xwin/winkeynames.h4
-rw-r--r--xorg-server/hw/xwin/winlayouts.h8
-rw-r--r--xorg-server/include/exevents.h2
-rw-r--r--xorg-server/miext/damage/Makefile.am28
-rw-r--r--xorg-server/miext/rootless/Makefile.am33
-rw-r--r--xorg-server/miext/shadow/Makefile.am66
-rw-r--r--xorg-server/randr/rrdispatch.c2
-rw-r--r--xorg-server/randr/rrmode.c2
-rw-r--r--xorg-server/xfixes/cursor.c2
-rw-r--r--xorg-server/xkb/ddxLoad.c970
-rw-r--r--xorg-server/xkb/xkb.c13484
-rw-r--r--xorg-server/xkeyboard-config/compat/accessx106
-rw-r--r--xorg-server/xkeyboard-config/compat/basic100
-rw-r--r--xorg-server/xkeyboard-config/compat/complete23
-rw-r--r--xorg-server/xkeyboard-config/compat/default.in2
-rw-r--r--xorg-server/xkeyboard-config/compat/iso9995164
-rw-r--r--xorg-server/xkeyboard-config/compat/japan93
-rw-r--r--xorg-server/xkeyboard-config/compat/keypad118
-rw-r--r--xorg-server/xkeyboard-config/compat/level5107
-rw-r--r--xorg-server/xkeyboard-config/compat/misc251
-rw-r--r--xorg-server/xkeyboard-config/compat/mousekeys407
-rw-r--r--xorg-server/xkeyboard-config/compat/norepeat20
-rw-r--r--xorg-server/xkeyboard-config/compat/olpc103
-rw-r--r--xorg-server/xkeyboard-config/compat/pc35
-rw-r--r--xorg-server/xkeyboard-config/compat/pc98117
-rw-r--r--xorg-server/xkeyboard-config/compat/xfree86113
-rw-r--r--xorg-server/xkeyboard-config/compat/xtest115
-rw-r--r--xorg-server/xkeyboard-config/docs/README.enhancing1045
-rw-r--r--xorg-server/xkeyboard-config/geometry/amiga534
-rw-r--r--xorg-server/xkeyboard-config/geometry/ataritt508
-rw-r--r--xorg-server/xkeyboard-config/geometry/chicony379
-rw-r--r--xorg-server/xkeyboard-config/geometry/dell1289
-rw-r--r--xorg-server/xkeyboard-config/geometry/digital_vndr/lk1458
-rw-r--r--xorg-server/xkeyboard-config/geometry/digital_vndr/pc699
-rw-r--r--xorg-server/xkeyboard-config/geometry/digital_vndr/unix457
-rw-r--r--xorg-server/xkeyboard-config/geometry/everex342
-rw-r--r--xorg-server/xkeyboard-config/geometry/fujitsu629
-rw-r--r--xorg-server/xkeyboard-config/geometry/hhk534
-rw-r--r--xorg-server/xkeyboard-config/geometry/hp1399
-rw-r--r--xorg-server/xkeyboard-config/geometry/keytronic505
-rw-r--r--xorg-server/xkeyboard-config/geometry/kinesis380
-rw-r--r--xorg-server/xkeyboard-config/geometry/macintosh1
-rw-r--r--xorg-server/xkeyboard-config/geometry/microsoft1067
-rw-r--r--xorg-server/xkeyboard-config/geometry/nec316
-rw-r--r--xorg-server/xkeyboard-config/geometry/northgate338
-rw-r--r--xorg-server/xkeyboard-config/geometry/pc2
-rw-r--r--xorg-server/xkeyboard-config/geometry/sanwa1
-rw-r--r--xorg-server/xkeyboard-config/geometry/sgi_vndr/O21230
-rw-r--r--xorg-server/xkeyboard-config/geometry/sgi_vndr/indigo821
-rw-r--r--xorg-server/xkeyboard-config/geometry/sgi_vndr/indy1197
-rw-r--r--xorg-server/xkeyboard-config/geometry/sony359
-rw-r--r--xorg-server/xkeyboard-config/geometry/sun6096
-rw-r--r--xorg-server/xkeyboard-config/geometry/thinkpad941
-rw-r--r--xorg-server/xkeyboard-config/geometry/winbook287
-rw-r--r--xorg-server/xkeyboard-config/keycodes/amiga456
-rw-r--r--xorg-server/xkeyboard-config/keycodes/ataritt240
-rw-r--r--xorg-server/xkeyboard-config/keycodes/digital_vndr/lk541
-rw-r--r--xorg-server/xkeyboard-config/keycodes/digital_vndr/pc557
-rw-r--r--xorg-server/xkeyboard-config/keycodes/evdev627
-rw-r--r--xorg-server/xkeyboard-config/keycodes/fujitsu373
-rw-r--r--xorg-server/xkeyboard-config/keycodes/hp541
-rw-r--r--xorg-server/xkeyboard-config/keycodes/ibm301
-rw-r--r--xorg-server/xkeyboard-config/keycodes/macintosh3
-rw-r--r--xorg-server/xkeyboard-config/keycodes/sgi_vndr/indigo279
-rw-r--r--xorg-server/xkeyboard-config/keycodes/sgi_vndr/indy405
-rw-r--r--xorg-server/xkeyboard-config/keycodes/sgi_vndr/iris21
-rw-r--r--xorg-server/xkeyboard-config/keycodes/sony283
-rw-r--r--xorg-server/xkeyboard-config/keycodes/sun1904
-rw-r--r--xorg-server/xkeyboard-config/keycodes/xfree86822
-rw-r--r--xorg-server/xkeyboard-config/keycodes/xfree98307
-rw-r--r--xorg-server/xkeyboard-config/keymap/amiga37
-rw-r--r--xorg-server/xkeyboard-config/keymap/ataritt35
-rw-r--r--xorg-server/xkeyboard-config/keymap/digital_vndr/us375
-rw-r--r--xorg-server/xkeyboard-config/keymap/macintosh32
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/be66
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/bg37
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/ca65
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/ch132
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/cz62
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/de66
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/dk66
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/dvorak29
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/en_US2
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/es66
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/fi66
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/fr66
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/gb66
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/hu209
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/it66
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/jp15
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/no66
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/pl57
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/pt66
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/ru209
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/se66
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/sk62
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/th33
-rw-r--r--xorg-server/xkeyboard-config/keymap/sgi_vndr/us85
-rw-r--r--xorg-server/xkeyboard-config/keymap/sony65
-rw-r--r--xorg-server/xkeyboard-config/keymap/sun_vndr/all.in1
-rw-r--r--xorg-server/xkeyboard-config/keymap/sun_vndr/de155
-rw-r--r--xorg-server/xkeyboard-config/keymap/sun_vndr/es121
-rw-r--r--xorg-server/xkeyboard-config/keymap/sun_vndr/fi121
-rw-r--r--xorg-server/xkeyboard-config/keymap/sun_vndr/fr121
-rw-r--r--xorg-server/xkeyboard-config/keymap/sun_vndr/no121
-rw-r--r--xorg-server/xkeyboard-config/keymap/sun_vndr/pl121
-rw-r--r--xorg-server/xkeyboard-config/keymap/sun_vndr/ru121
-rw-r--r--xorg-server/xkeyboard-config/keymap/sun_vndr/se110
-rw-r--r--xorg-server/xkeyboard-config/keymap/sun_vndr/uk121
-rw-r--r--xorg-server/xkeyboard-config/keymap/sun_vndr/us135
-rw-r--r--xorg-server/xkeyboard-config/keymap/xfree86751
-rw-r--r--xorg-server/xkeyboard-config/keymap/xfree9868
-rw-r--r--xorg-server/xkeyboard-config/rules/base.hdr.part15
-rw-r--r--xorg-server/xkeyboard-config/rules/base.xml.in19
-rw-r--r--xorg-server/xkeyboard-config/rules/xfree982
-rw-r--r--xorg-server/xkeyboard-config/semantics/basic13
-rw-r--r--xorg-server/xkeyboard-config/semantics/complete13
-rw-r--r--xorg-server/xkeyboard-config/semantics/default.in1
-rw-r--r--xorg-server/xkeyboard-config/semantics/xtest13
-rw-r--r--xorg-server/xkeyboard-config/symbols/ad65
-rw-r--r--xorg-server/xkeyboard-config/symbols/af1
-rw-r--r--xorg-server/xkeyboard-config/symbols/al85
-rw-r--r--xorg-server/xkeyboard-config/symbols/altwin162
-rw-r--r--xorg-server/xkeyboard-config/symbols/am484
-rw-r--r--xorg-server/xkeyboard-config/symbols/ara554
-rw-r--r--xorg-server/xkeyboard-config/symbols/at4
-rw-r--r--xorg-server/xkeyboard-config/symbols/az186
-rw-r--r--xorg-server/xkeyboard-config/symbols/ba83
-rw-r--r--xorg-server/xkeyboard-config/symbols/bd195
-rw-r--r--xorg-server/xkeyboard-config/symbols/be4
-rw-r--r--xorg-server/xkeyboard-config/symbols/bg723
-rw-r--r--xorg-server/xkeyboard-config/symbols/br3
-rw-r--r--xorg-server/xkeyboard-config/symbols/brai121
-rw-r--r--xorg-server/xkeyboard-config/symbols/bt175
-rw-r--r--xorg-server/xkeyboard-config/symbols/bw37
-rw-r--r--xorg-server/xkeyboard-config/symbols/by107
-rw-r--r--xorg-server/xkeyboard-config/symbols/ca1057
-rw-r--r--xorg-server/xkeyboard-config/symbols/capslock127
-rw-r--r--xorg-server/xkeyboard-config/symbols/cd140
-rw-r--r--xorg-server/xkeyboard-config/symbols/ch5
-rw-r--r--xorg-server/xkeyboard-config/symbols/cn4
-rw-r--r--xorg-server/xkeyboard-config/symbols/compose113
-rw-r--r--xorg-server/xkeyboard-config/symbols/ctrl4
-rw-r--r--xorg-server/xkeyboard-config/symbols/cz344
-rw-r--r--xorg-server/xkeyboard-config/symbols/de1196
-rw-r--r--xorg-server/xkeyboard-config/symbols/digital_vndr/lk261
-rw-r--r--xorg-server/xkeyboard-config/symbols/digital_vndr/pc351
-rw-r--r--xorg-server/xkeyboard-config/symbols/digital_vndr/us423
-rw-r--r--xorg-server/xkeyboard-config/symbols/digital_vndr/vt317
-rw-r--r--xorg-server/xkeyboard-config/symbols/dk149
-rw-r--r--xorg-server/xkeyboard-config/symbols/ee203
-rw-r--r--xorg-server/xkeyboard-config/symbols/empty10
-rw-r--r--xorg-server/xkeyboard-config/symbols/epo280
-rw-r--r--xorg-server/xkeyboard-config/symbols/es3
-rw-r--r--xorg-server/xkeyboard-config/symbols/et148
-rw-r--r--xorg-server/xkeyboard-config/symbols/eurosign3
-rw-r--r--xorg-server/xkeyboard-config/symbols/extras/apl590
-rw-r--r--xorg-server/xkeyboard-config/symbols/extras/ru1
-rw-r--r--xorg-server/xkeyboard-config/symbols/extras/us293
-rw-r--r--xorg-server/xkeyboard-config/symbols/fi414
-rw-r--r--xorg-server/xkeyboard-config/symbols/fo98
-rw-r--r--xorg-server/xkeyboard-config/symbols/fr7
-rw-r--r--xorg-server/xkeyboard-config/symbols/fujitsu_vndr/jp175
-rw-r--r--xorg-server/xkeyboard-config/symbols/fujitsu_vndr/us288
-rw-r--r--xorg-server/xkeyboard-config/symbols/gb5
-rw-r--r--xorg-server/xkeyboard-config/symbols/ge547
-rw-r--r--xorg-server/xkeyboard-config/symbols/gh304
-rw-r--r--xorg-server/xkeyboard-config/symbols/gn124
-rw-r--r--xorg-server/xkeyboard-config/symbols/gr2
-rw-r--r--xorg-server/xkeyboard-config/symbols/group3
-rw-r--r--xorg-server/xkeyboard-config/symbols/hp_vndr/us210
-rw-r--r--xorg-server/xkeyboard-config/symbols/hr149
-rw-r--r--xorg-server/xkeyboard-config/symbols/hu1
-rw-r--r--xorg-server/xkeyboard-config/symbols/ie818
-rw-r--r--xorg-server/xkeyboard-config/symbols/il506
-rw-r--r--xorg-server/xkeyboard-config/symbols/in8
-rw-r--r--xorg-server/xkeyboard-config/symbols/inet6
-rw-r--r--xorg-server/xkeyboard-config/symbols/iq67
-rw-r--r--xorg-server/xkeyboard-config/symbols/ir3
-rw-r--r--xorg-server/xkeyboard-config/symbols/is3
-rw-r--r--xorg-server/xkeyboard-config/symbols/it5
-rw-r--r--xorg-server/xkeyboard-config/symbols/jp2
-rw-r--r--xorg-server/xkeyboard-config/symbols/ke86
-rw-r--r--xorg-server/xkeyboard-config/symbols/keypad3
-rw-r--r--xorg-server/xkeyboard-config/symbols/kg268
-rw-r--r--xorg-server/xkeyboard-config/symbols/kh227
-rw-r--r--xorg-server/xkeyboard-config/symbols/kpdl207
-rw-r--r--xorg-server/xkeyboard-config/symbols/kr56
-rw-r--r--xorg-server/xkeyboard-config/symbols/kz433
-rw-r--r--xorg-server/xkeyboard-config/symbols/la227
-rw-r--r--xorg-server/xkeyboard-config/symbols/latam4
-rw-r--r--xorg-server/xkeyboard-config/symbols/latin5
-rw-r--r--xorg-server/xkeyboard-config/symbols/level3396
-rw-r--r--xorg-server/xkeyboard-config/symbols/level54
-rw-r--r--xorg-server/xkeyboard-config/symbols/lk3
-rw-r--r--xorg-server/xkeyboard-config/symbols/lt5
-rw-r--r--xorg-server/xkeyboard-config/symbols/lv256
-rw-r--r--xorg-server/xkeyboard-config/symbols/ma1
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/apple1
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/ch203
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/de191
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/dk155
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/fi35
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/gb38
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/is255
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/it126
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/latam75
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/nl32
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/no102
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/pt124
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/se90
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/us299
-rw-r--r--xorg-server/xkeyboard-config/symbols/mao44
-rw-r--r--xorg-server/xkeyboard-config/symbols/me105
-rw-r--r--xorg-server/xkeyboard-config/symbols/mk132
-rw-r--r--xorg-server/xkeyboard-config/symbols/ml2
-rw-r--r--xorg-server/xkeyboard-config/symbols/mm128
-rw-r--r--xorg-server/xkeyboard-config/symbols/mn163
-rw-r--r--xorg-server/xkeyboard-config/symbols/mt156
-rw-r--r--xorg-server/xkeyboard-config/symbols/mv163
-rw-r--r--xorg-server/xkeyboard-config/symbols/nbsp3
-rw-r--r--xorg-server/xkeyboard-config/symbols/nec_vndr/jp330
-rw-r--r--xorg-server/xkeyboard-config/symbols/ng231
-rw-r--r--xorg-server/xkeyboard-config/symbols/nl305
-rw-r--r--xorg-server/xkeyboard-config/symbols/no455
-rw-r--r--xorg-server/xkeyboard-config/symbols/np244
-rw-r--r--xorg-server/xkeyboard-config/symbols/olpc43
-rw-r--r--xorg-server/xkeyboard-config/symbols/pc6
-rw-r--r--xorg-server/xkeyboard-config/symbols/ph3
-rw-r--r--xorg-server/xkeyboard-config/symbols/pk3
-rw-r--r--xorg-server/xkeyboard-config/symbols/pl704
-rw-r--r--xorg-server/xkeyboard-config/symbols/pt6
-rw-r--r--xorg-server/xkeyboard-config/symbols/ro468
-rw-r--r--xorg-server/xkeyboard-config/symbols/rs655
-rw-r--r--xorg-server/xkeyboard-config/symbols/ru1058
-rw-r--r--xorg-server/xkeyboard-config/symbols/rupeesign2
-rw-r--r--xorg-server/xkeyboard-config/symbols/se510
-rw-r--r--xorg-server/xkeyboard-config/symbols/sgi_vndr/jp90
-rw-r--r--xorg-server/xkeyboard-config/symbols/shift170
-rw-r--r--xorg-server/xkeyboard-config/symbols/si63
-rw-r--r--xorg-server/xkeyboard-config/symbols/sk211
-rw-r--r--xorg-server/xkeyboard-config/symbols/sony_vndr/us184
-rw-r--r--xorg-server/xkeyboard-config/symbols/srvr_ctrl255
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/ara1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/be1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/br1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/ca1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/ch1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/cz1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/de1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/dk1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/ee1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/es1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/fi1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/fr1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/gb1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/gr1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/it1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/jp3
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/kr1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/lt1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/lv1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/nl1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/no1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/pl1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/pt1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/ro1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/ru1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/se1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/sk1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/tr1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/tuv3
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/tw1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/ua1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/us1
-rw-r--r--xorg-server/xkeyboard-config/symbols/sy10
-rw-r--r--xorg-server/xkeyboard-config/symbols/terminate15
-rw-r--r--xorg-server/xkeyboard-config/symbols/th494
-rw-r--r--xorg-server/xkeyboard-config/symbols/tj275
-rw-r--r--xorg-server/xkeyboard-config/symbols/tm94
-rw-r--r--xorg-server/xkeyboard-config/symbols/tr708
-rw-r--r--xorg-server/xkeyboard-config/symbols/typo104
-rw-r--r--xorg-server/xkeyboard-config/symbols/tz122
-rw-r--r--xorg-server/xkeyboard-config/symbols/ua664
-rw-r--r--xorg-server/xkeyboard-config/symbols/us2384
-rw-r--r--xorg-server/xkeyboard-config/symbols/uz242
-rw-r--r--xorg-server/xkeyboard-config/symbols/vn80
-rw-r--r--xorg-server/xkeyboard-config/symbols/xfree68_vndr/amiga258
-rw-r--r--xorg-server/xkeyboard-config/symbols/xfree68_vndr/ataritt316
-rw-r--r--xorg-server/xkeyboard-config/symbols/za86
-rw-r--r--xorg-server/xkeyboard-config/types/basic60
-rw-r--r--xorg-server/xkeyboard-config/types/cancel23
-rw-r--r--xorg-server/xkeyboard-config/types/caps338
-rw-r--r--xorg-server/xkeyboard-config/types/complete26
-rw-r--r--xorg-server/xkeyboard-config/types/default.in3
-rw-r--r--xorg-server/xkeyboard-config/types/extra368
-rw-r--r--xorg-server/xkeyboard-config/types/iso999538
-rw-r--r--xorg-server/xkeyboard-config/types/level5430
-rw-r--r--xorg-server/xkeyboard-config/types/mousekeys23
-rw-r--r--xorg-server/xkeyboard-config/types/numpad143
-rw-r--r--xorg-server/xkeyboard-config/types/pc219
319 files changed, 52232 insertions, 52799 deletions
diff --git a/xorg-server/Xi/xiproperty.c b/xorg-server/Xi/xiproperty.c
index 11739f9ae..c1a25bbf7 100644
--- a/xorg-server/Xi/xiproperty.c
+++ b/xorg-server/Xi/xiproperty.c
@@ -701,7 +701,7 @@ XIDeleteDeviceProperty (DeviceIntPtr device, Atom property, Bool fromClient)
int
XIChangeDeviceProperty (DeviceIntPtr dev, Atom property, Atom type,
int format, int mode, unsigned long len,
- pointer value, Bool sendevent)
+ const pointer value, Bool sendevent)
{
XIPropertyPtr prop;
int size_in_bytes;
diff --git a/xorg-server/Xi/xiquerypointer.c b/xorg-server/Xi/xiquerypointer.c
index 0c6079d23..2dc057d67 100644
--- a/xorg-server/Xi/xiquerypointer.c
+++ b/xorg-server/Xi/xiquerypointer.c
@@ -129,7 +129,7 @@ ProcXIQueryPointer(ClientPtr client)
if (kbd)
{
- state = &kbd->key->xkbInfo->prev_state;
+ state = &kbd->key->xkbInfo->state;
rep.mods.base_mods = state->base_mods;
rep.mods.latched_mods = state->latched_mods;
rep.mods.locked_mods = state->locked_mods;
diff --git a/xorg-server/configure.ac b/xorg-server/configure.ac
index 9b3e2be2b..21b2a28f4 100644
--- a/xorg-server/configure.ac
+++ b/xorg-server/configure.ac
@@ -1,2278 +1,2278 @@
-dnl Copyright © 2003-2007 Keith Packard, Daniel Stone
-dnl
-dnl Permission is hereby granted, free of charge, to any person obtaining a
-dnl copy of this software and associated documentation files (the "Software"),
-dnl to deal in the Software without restriction, including without limitation
-dnl the rights to use, copy, modify, merge, publish, distribute, sublicense,
-dnl and/or sell copies of the Software, and to permit persons to whom the
-dnl Software is furnished to do so, subject to the following conditions:
-dnl
-dnl The above copyright notice and this permission notice (including the next
-dnl paragraph) shall be included in all copies or substantial portions of the
-dnl Software.
-dnl
-dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-dnl DEALINGS IN THE SOFTWARE.
-dnl
-dnl Authors: Keith Packard <keithp@keithp.com>
-dnl Daniel Stone <daniel@fooishbar.org>
-dnl an unwitting cast of miscellaneous others
-dnl
-dnl Process this file with autoconf to create configure.
-
-AC_PREREQ(2.57)
-AC_INIT([xorg-server], 1.9.99.901, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2010-12-06"
-AC_CONFIG_SRCDIR([Makefile.am])
-AM_INIT_AUTOMAKE([foreign dist-bzip2])
-AM_MAINTAINER_MODE
-
-# Require xorg-macros minimum of 1.10 for XORG_CHECK_SGML_DOCTOOLS
-m4_ifndef([XORG_MACROS_VERSION],
- [m4_fatal([must install xorg-macros 1.10 or later before running autoconf/autogen])])
-XORG_MACROS_VERSION(1.10)
-XORG_DEFAULT_OPTIONS
-XORG_WITH_DOXYGEN(1.6.1)
-XORG_CHECK_SGML_DOCTOOLS(1.5)
-
-m4_ifndef([XORG_FONT_MACROS_VERSION], [m4_fatal([must install fontutil 1.1 or later before running autoconf/autogen])])
-XORG_FONT_MACROS_VERSION(1.1)
-
-dnl this gets generated by autoheader, and thus contains all the defines. we
-dnl don't ever actually use it, internally.
-AC_CONFIG_HEADERS(include/do-not-use-config.h)
-dnl xorg-server.h is an external header, designed to be included by loadable
-dnl drivers.
-AC_CONFIG_HEADERS(include/xorg-server.h)
-dnl dix-config.h covers most of the DIX (i.e. everything but the DDX, not just
-dnl dix/).
-AC_CONFIG_HEADERS(include/dix-config.h)
-dnl xorg-config.h covers the Xorg DDX.
-AC_CONFIG_HEADERS(include/xorg-config.h)
-dnl xkb-config.h covers XKB for the Xorg and Xnest DDXs.
-AC_CONFIG_HEADERS(include/xkb-config.h)
-dnl xwin-config.h covers the XWin DDX.
-AC_CONFIG_HEADERS(include/xwin-config.h)
-dnl kdrive-config.h covers the kdrive DDX
-AC_CONFIG_HEADERS(include/kdrive-config.h)
-dnl version-config.h covers the version numbers so they can be bumped without
-dnl forcing an entire recompile.x
-AC_CONFIG_HEADERS(include/version-config.h)
-
-AM_PROG_AS
-AC_PROG_LN_S
-AC_LIBTOOL_WIN32_DLL
-AC_DISABLE_STATIC
-AC_PROG_LIBTOOL
-AC_PROG_MAKE_SET
-PKG_PROG_PKG_CONFIG
-AC_PROG_LEX
-AC_PROG_YACC
-AC_SYS_LARGEFILE
-XORG_PROG_RAWCPP
-
-# Quoted so that make will expand $(CWARNFLAGS) in makefiles to allow
-# easier overrides at build time.
-XSERVER_CFLAGS='$(CWARNFLAGS)'
-
-dnl Check for dtrace program (needed to build Xserver dtrace probes)
-dnl Also checks for <sys/sdt.h>, since some Linux distros have an
-dnl ISDN trace program named dtrace
-AC_ARG_WITH(dtrace, AS_HELP_STRING([--with-dtrace=PATH],
- [Enable dtrace probes (default: enabled if dtrace found)]),
- [WDTRACE=$withval], [WDTRACE=auto])
-if test "x$WDTRACE" = "xyes" -o "x$WDTRACE" = "xauto" ; then
- AC_PATH_PROG(DTRACE, [dtrace], [not_found], [$PATH:/usr/sbin])
- if test "x$DTRACE" = "xnot_found" ; then
- if test "x$WDTRACE" = "xyes" ; then
- AC_MSG_FAILURE([dtrace requested but not found])
- fi
- WDTRACE="no"
- else
- AC_CHECK_HEADER(sys/sdt.h, [HAS_SDT_H="yes"], [HAS_SDT_H="no"])
- if test "x$WDTRACE" = "xauto" -a "x$HAS_SDT_H" = "xno" ; then
- WDTRACE="no"
- fi
- fi
-fi
-if test "x$WDTRACE" != "xno" ; then
- AC_DEFINE(XSERVER_DTRACE, 1,
- [Define to 1 if the DTrace Xserver provider probes should be built in.])
-
-# Solaris/OpenSolaris require dtrace -G to build dtrace probe information into
-# object files, and require linking with those as relocatable objects, not .a
-# archives. MacOS X handles all this in the normal compiler toolchain, and on
-# some releases (like Tiger), will error out on dtrace -G. For now, other
-# platforms with Dtrace ports are assumed to support -G (the FreeBSD and Linux
-# ports appear to, based on my web searches, but have not yet been tested).
- case $host_os in
- darwin*) SPECIAL_DTRACE_OBJECTS=no ;;
- *) SPECIAL_DTRACE_OBJECTS=yes ;;
- esac
-fi
-AM_CONDITIONAL(XSERVER_DTRACE, [test "x$WDTRACE" != "xno"])
-AM_CONDITIONAL(SPECIAL_DTRACE_OBJECTS, [test "x$SPECIAL_DTRACE_OBJECTS" = "xyes"])
-
-AC_HEADER_DIRENT
-AC_HEADER_STDC
-AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h dlfcn.h stropts.h fnmatch.h sys/utsname.h])
-
-dnl Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-AC_C_BIGENDIAN([ENDIAN="X_BIG_ENDIAN"], [ENDIAN="X_LITTLE_ENDIAN"])
-
-AC_CHECK_SIZEOF([unsigned long])
-if test "$ac_cv_sizeof_unsigned_long" = 8; then
- AC_DEFINE(_XSERVER64, 1, [Define to 1 if unsigned long is 64 bits.])
-fi
-
-AC_TYPE_PID_T
-
-# Checks for headers/macros for byte swapping
-# Known variants:
-# <byteswap.h> bswap_16, bswap_32, bswap_64 (glibc)
-# <sys/endian.h> __swap16, __swap32, __swap64 (OpenBSD)
-# <sys/endian.h> bswap16, bswap32, bswap64 (other BSD's)
-# and a fallback to local macros if none of the above are found
-
-# if <byteswap.h> is found, assume it's the correct version
-AC_CHECK_HEADERS([byteswap.h])
-
-# if <sys/endian.h> is found, have to check which version
-AC_CHECK_HEADER([sys/endian.h], [HAVE_SYS_ENDIAN_H="yes"], [HAVE_SYS_ENDIAN_H="no"])
-
-if test "x$HAVE_SYS_ENDIAN_H" = "xyes" ; then
- AC_MSG_CHECKING([for __swap16 variant of <sys/endian.h> byteswapping macros])
- AC_LINK_IFELSE([AC_LANG_PROGRAM([
-#include <sys/types.h>
-#include <sys/endian.h>
- ], [
-int a = 1, b;
-b = __swap16(a);
- ])
-], [SYS_ENDIAN__SWAP='yes'], [SYS_ENDIAN__SWAP='no'])
- AC_MSG_RESULT([$SYS_ENDIAN__SWAP])
-
- AC_MSG_CHECKING([for bswap16 variant of <sys/endian.h> byteswapping macros])
- AC_LINK_IFELSE([AC_LANG_PROGRAM([
-#include <sys/types.h>
-#include <sys/endian.h>
- ], [
-int a = 1, b;
-b = bswap16(a);
- ])
-], [SYS_ENDIAN_BSWAP='yes'], [SYS_ENDIAN_BSWAP='no'])
- AC_MSG_RESULT([$SYS_ENDIAN_BSWAP])
-
- if test "$SYS_ENDIAN_BSWAP" = "yes" ; then
- USE_SYS_ENDIAN_H=yes
- BSWAP=bswap
- else
- if test "$SYS_ENDIAN__SWAP" = "yes" ; then
- USE_SYS_ENDIAN_H=yes
- BSWAP=__swap
- else
- USE_SYS_ENDIAN_H=no
- fi
- fi
-
- if test "$USE_SYS_ENDIAN_H" = "yes" ; then
- AC_DEFINE([USE_SYS_ENDIAN_H], 1,
- [Define to use byteswap macros from <sys/endian.h>])
- AC_DEFINE_UNQUOTED([bswap_16], ${BSWAP}16,
- [Define to 16-bit byteswap macro])
- AC_DEFINE_UNQUOTED([bswap_32], ${BSWAP}32,
- [Define to 32-bit byteswap macro])
- AC_DEFINE_UNQUOTED([bswap_64], ${BSWAP}64,
- [Define to 64-bit byteswap macro])
- fi
-fi
-
-dnl Check to see if dlopen is in default libraries (like Solaris, which
-dnl has it in libc), or if libdl is needed to get it.
-AC_CHECK_FUNC([dlopen], [],
- AC_CHECK_LIB([dl], [dlopen], DLOPEN_LIBS="-ldl"))
-AC_SUBST(DLOPEN_LIBS)
-
-dnl Checks for library functions.
-AC_FUNC_VPRINTF
-AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr \
- strtol getopt getopt_long vsnprintf walkcontext backtrace \
- getisax getzoneid shmctl64 strcasestr ffs vasprintf])
-AC_FUNC_ALLOCA
-dnl Old HAS_* names used in os/*.c.
-AC_CHECK_FUNC([getdtablesize],
- AC_DEFINE(HAS_GETDTABLESIZE, 1, [Have the 'getdtablesize' function.]))
-AC_CHECK_FUNC([getifaddrs],
- AC_DEFINE(HAS_GETIFADDRS, 1, [Have the 'getifaddrs' function.]))
-AC_CHECK_FUNC([getpeereid],
- AC_DEFINE(HAS_GETPEEREID, 1, [Have the 'getpeereid' function.]))
-AC_CHECK_FUNC([getpeerucred],
- AC_DEFINE(HAS_GETPEERUCRED, 1, [Have the 'getpeerucred' function.]))
-AC_CHECK_FUNC([strlcat], HAVE_STRLCAT=yes, HAVE_STRLCAT=no)
-AM_CONDITIONAL(NEED_STRLCAT, [test x$HAVE_STRLCAT = xno])
-AC_CHECK_FUNC([strlcpy], AC_DEFINE(HAS_STRLCPY, 1, [Have the 'strlcpy' function]))
-
-AM_CONDITIONAL(NEED_VSNPRINTF, [test x$HAVE_VSNPRINTF = xno])
-
-dnl Check for mmap support for Xvfb
-AC_CHECK_FUNC([mmap], AC_DEFINE(HAS_MMAP, 1, [Have the 'mmap' function.]))
-
-dnl Find the math libary
-AC_CHECK_LIB(m, sqrt)
-AC_CHECK_LIB(m, cbrt, AC_DEFINE(HAVE_CBRT, 1, [Have the 'cbrt' function]))
-
-AC_CHECK_HEADERS([ndbm.h dbm.h rpcsvc/dbm.h])
-
-dnl AGPGART headers
-AC_CHECK_HEADERS([linux/agpgart.h sys/agpio.h sys/agpgart.h], AGP=yes)
-AM_CONDITIONAL(AGP, [test "x$AGP" = xyes])
-
-dnl APM header
-AC_CHECK_HEADERS([linux/apm_bios.h], LNXAPM=yes)
-AM_CONDITIONAL(LNXAPM, [test "x$LNXAPM" = xyes])
-
-dnl fbdev header
-AC_CHECK_HEADERS([linux/fb.h], FBDEV=yes)
-AM_CONDITIONAL(FBDEVHW, [test "x$FBDEV" = xyes])
-
-dnl MTRR header
-AC_CHECK_HEADERS([asm/mtrr.h], ac_cv_asm_mtrr_h=yes)
-if test "x$ac_cv_asm_mtrr_h" = xyes; then
- HAVE_MTRR=yes
-fi
-
-dnl BSD MTRR header
-AC_CHECK_HEADERS([sys/memrange.h], ac_cv_memrange_h=yes)
-if test "x$ac_cv_memrange_h" = xyes; then
- HAVE_MTRR=yes
-fi
-
-if test "x$HAVE_MTRR" = xyes; then
- AC_DEFINE(HAS_MTRR_SUPPORT, 1, [MTRR support available])
-fi
-
-dnl A NetBSD MTRR header
-AC_CHECK_HEADERS([machine/mtrr.h], ac_cv_machine_mtrr_h=yes)
-if test "x$ac_cv_machine_mtrr_h" = xyes; then
- AC_DEFINE(HAS_MTRR_BUILTIN, 1, [Define to 1 if NetBSD built-in MTRR
- support is available])
-fi
-
-dnl FreeBSD kldload support (sys/linker.h)
-AC_CHECK_HEADERS([sys/linker.h],
- [ac_cv_sys_linker_h=yes],
- [ac_cv_sys_linker_h=no],
- [#include <sys/param.h>])
-AM_CONDITIONAL(FREEBSD_KLDLOAD, [test "x$ac_cv_sys_linker_h" = xyes])
-
-AC_CACHE_CHECK([for SYSV IPC],
- ac_cv_sysv_ipc,
- [AC_TRY_LINK([
-#include <sys/types.h>
-#include <sys/ipc.h>
-#include <sys/shm.h>
-],[
-{
- int id;
- id = shmget(IPC_PRIVATE, 512, SHM_W | SHM_R);
- if (id < 0) return -1;
- return shmctl(id, IPC_RMID, 0);
-}],
- [ac_cv_sysv_ipc=yes],
- [ac_cv_sysv_ipc=no])])
-if test "x$ac_cv_sysv_ipc" = xyes; then
- AC_DEFINE(HAVE_SYSV_IPC, 1, [Define to 1 if SYSV IPC is available])
-fi
-
-dnl OpenBSD /dev/xf86 aperture driver
-if test -c /dev/xf86 ; then
- AC_DEFINE(HAS_APERTURE_DRV, 1, [System has /dev/xf86 aperture driver])
-fi
-
-dnl BSD APM support
-AC_CHECK_HEADER([machine/apmvar.h],[
- AC_CHECK_HEADER([sys/event.h],
- ac_cv_BSD_KQUEUE_APM=yes,
- ac_cv_BSD_APM=yes)])
-
-AM_CONDITIONAL(BSD_APM, [test "x$ac_cv_BSD_APM" = xyes])
-AM_CONDITIONAL(BSD_KQUEUE_APM, [test "x$ac_cv_BSD_KQUEUE_APM" = xyes])
-
-dnl glibc backtrace support check (hw/xfree86/common/xf86Events.c)
-AC_CHECK_HEADER([execinfo.h],[
- AC_CHECK_LIB(c, backtrace, [
- AC_DEFINE(HAVE_BACKTRACE, 1, [Has backtrace support])
- AC_DEFINE(HAVE_EXECINFO_H, 1, [Have execinfo.h])
- ])]
-)
-
-dnl ARM needs additional compiler flags for proper backtraces if GCC is
-dnl used. Compile a dummy program with the -mapcs-frame option. If it
-dnl succeeds, we know that we are building for ARM with GCC.
-old_CFLAGS="$CFLAGS"
-CFLAGS="-mapcs-frame"
-AC_COMPILE_IFELSE(
- AC_LANG_PROGRAM([[ ]]),
- ARM_BACKTRACE_CFLAGS="$CFLAGS",
- ARM_BACKTRACE_CFLAGS=""
-)
-CFLAGS="$old_CFLAGS"
-AC_SUBST(ARM_BACKTRACE_CFLAGS)
-
-dnl ---------------------------------------------------------------------------
-dnl Bus options and CPU capabilities. Replaces logic in
-dnl hw/xfree86/os-support/bus/Makefile.am, among others.
-dnl ---------------------------------------------------------------------------
-DEFAULT_INT10="x86emu"
-
-dnl Override defaults as needed for specific platforms:
-
-case $host_cpu in
- alpha*)
- ALPHA_VIDEO=yes
- case $host_os in
- *freebsd*) SYS_LIBS=-lio ;;
- *netbsd*) AC_DEFINE(USE_ALPHA_PIO, 1, [NetBSD PIO alpha IO]) ;;
- esac
- GLX_ARCH_DEFINES="-D__GLX_ALIGN64 -mieee"
- ;;
- arm*)
- ARM_VIDEO=yes
- ;;
- i*86)
- I386_VIDEO=yes
- case $host_os in
- *freebsd*) AC_DEFINE(USE_DEV_IO) ;;
- *dragonfly*) AC_DEFINE(USE_DEV_IO) ;;
- *netbsd*) AC_DEFINE(USE_I386_IOPL)
- SYS_LIBS=-li386
- ;;
- *openbsd*) AC_DEFINE(USE_I386_IOPL)
- SYS_LIBS=-li386
- ;;
- esac
- ;;
- powerpc*)
- PPC_VIDEO=yes
- case $host_os in
- *freebsd*) DEFAULT_INT10=stub ;;
- esac
- ;;
- sparc*)
- SPARC64_VIDEO=yes
- BSD_ARCH_SOURCES="sparc64_video.c ioperm_noop.c"
- GLX_ARCH_DEFINES="-D__GLX_ALIGN64"
- ;;
- x86_64*|amd64*)
- I386_VIDEO=yes
- case $host_os in
- *freebsd*) AC_DEFINE(USE_DEV_IO, 1, [BSD /dev/io]) ;;
- *dragonfly*) AC_DEFINE(USE_DEV_IO, 1, [BSD /dev/io]) ;;
- *netbsd*) AC_DEFINE(USE_I386_IOPL, 1, [BSD i386 iopl])
- SYS_LIBS=-lx86_64
- ;;
- *openbsd*) AC_DEFINE(USE_AMD64_IOPL, 1, [BSD AMD64 iopl])
- SYS_LIBS=-lamd64
- ;;
- esac
- GLX_ARCH_DEFINES="-D__GLX_ALIGN64"
- ;;
- ia64*)
- GLX_ARCH_DEFINES="-D__GLX_ALIGN64"
- ;;
- s390*)
- GLX_ARCH_DEFINES="-D__GLX_ALIGN64"
- ;;
-esac
-AC_SUBST(GLX_ARCH_DEFINES)
-
-dnl BSD *_video.c selection
-AM_CONDITIONAL(ALPHA_VIDEO, [test "x$ALPHA_VIDEO" = xyes])
-AM_CONDITIONAL(ARM_VIDEO, [test "x$ARM_VIDEO" = xyes])
-AM_CONDITIONAL(I386_VIDEO, [test "x$I386_VIDEO" = xyes])
-AM_CONDITIONAL(PPC_VIDEO, [test "x$PPC_VIDEO" = xyes])
-AM_CONDITIONAL(SPARC64_VIDEO, [test "x$SPARC64_VIDEO" = xyes])
-
-DRI=no
-USE_SIGIO_BY_DEFAULT="yes"
-dnl it would be nice to autodetect these *CONS_SUPPORTs
-case $host_os in
- *freebsd* | *dragonfly*)
- case $host_os in
- kfreebsd*-gnu) ;;
- *) AC_DEFINE(CSRG_BASED, 1, [System is BSD-like]) ;;
- esac
- AC_DEFINE(PCCONS_SUPPORT, 1, [System has PC console])
- AC_DEFINE(PCVT_SUPPORT, 1, [System has PCVT console])
- AC_DEFINE(SYSCONS_SUPPORT, 1, [System has syscons console])
- DRI=yes
- ;;
- *netbsd*)
- AC_DEFINE(CSRG_BASED, 1, [System is BSD-like])
- AC_DEFINE(PCCONS_SUPPORT, 1, [System has PC console])
- AC_DEFINE(PCVT_SUPPORT, 1, [System has PCVT console])
- AC_DEFINE(WSCONS_SUPPORT, 1, [System has wscons console])
- DRI=yes
- ;;
- *openbsd*)
- AC_DEFINE(CSRG_BASED, 1, [System is BSD-like])
- AC_DEFINE(PCVT_SUPPORT, 1, [System has PC console])
- AC_DEFINE(WSCONS_SUPPORT, 1, [System has wscons console])
- ;;
- *linux*)
- DRI=yes
- ;;
- *solaris*)
- PKG_CHECK_EXISTS(libdrm, DRI=yes, DRI=no)
- # Disable use of SIGIO by default until some system bugs are
- # fixed - see Sun/OpenSolaris bug id 6879897
- USE_SIGIO_BY_DEFAULT="no"
- ;;
- darwin*)
- AC_DEFINE(CSRG_BASED, 1, [System is BSD-like])
- ;;
- cygwin*)
- CFLAGS="$CFLAGS -DFD_SETSIZE=256"
- ;;
-esac
-
-dnl augment XORG_RELEASE_VERSION for our snapshot number and to expose the
-dnl major number
-PVMAJOR=`echo $PACKAGE_VERSION | cut -d . -f 1`
-PVS=`echo $PACKAGE_VERSION | cut -d . -f 4 | cut -d - -f 1`
-if test "x$PVS" = "x"; then
- PVS="0"
-fi
-
-VENDOR_RELEASE="((($PVMAJOR) * 10000000) + (($PVM) * 100000) + (($PVP) * 1000) + $PVS)"
-VENDOR_MAN_VERSION="Version ${PACKAGE_VERSION}"
-
-VENDOR_NAME="The X.Org Foundation"
-VENDOR_NAME_SHORT="X.Org"
-VENDOR_WEB="http://wiki.x.org"
-
-m4_ifdef([AS_HELP_STRING], , [m4_define([AS_HELP_STRING], m4_defn([AC_HELP_STRING]))])
-
-dnl Build options.
-AC_ARG_ENABLE(werror, AS_HELP_STRING([--enable-werror],
- [Obsolete - use --enable-strict-compilation instead]),
- AC_MSG_ERROR([--enable-werror has been replaced by --enable-strict-compilation]))
-
-AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug],
- [Enable debugging (default: disabled)]),
- [DEBUGGING=$enableval], [DEBUGGING=no])
-AC_ARG_ENABLE(unit-tests, AS_HELP_STRING([--enable-unit-tests],
- [Enable unit-tests (default: auto)]),
- [UNITTESTS=$enableval], [UNITTESTS=auto])
-AC_ARG_ENABLE(use-sigio-by-default, AS_HELP_STRING([--enable-use-sigio-by-default]
- [Enable SIGIO input handlers by default (default: $USE_SIGIO_BY_DEFAULT)]),
- [USE_SIGIO_BY_DEFAULT=$enableval], [])
-AC_ARG_WITH(int10, AS_HELP_STRING([--with-int10=BACKEND], [int10 backend: vm86, x86emu or stub]),
- [INT10="$withval"],
- [INT10="$DEFAULT_INT10"])
-AC_ARG_WITH(vendor-name, AS_HELP_STRING([--with-vendor-name=VENDOR],
- [Vendor string reported by the server]),
- [ VENDOR_NAME="$withval" ], [])
-AC_ARG_WITH(vendor-name-short, AS_HELP_STRING([--with-vendor-name-short=VENDOR],
- [Short version of vendor string reported by the server]),
- [ VENDOR_NAME_SHORT="$withval" ], [])
-AC_ARG_WITH(vendor-web, AS_HELP_STRING([--with-vendor-web=URL],
- [Vendor web address reported by the server]),
- [ VENDOR_WEB="$withval" ], [])
-AC_ARG_WITH(module-dir, AS_HELP_STRING([--with-module-dir=DIR],
- [Directory where modules are installed (default: $libdir/xorg/modules)]),
- [ moduledir="$withval" ],
- [ moduledir="${libdir}/xorg/modules" ])
-AC_ARG_WITH(log-dir, AS_HELP_STRING([--with-log-dir=DIR],
- [Directory where log files are kept (default: $localstatedir/log)]),
- [ logdir="$withval" ],
- [ logdir="$localstatedir/log" ])
-AC_ARG_WITH(builder-addr, AS_HELP_STRING([--with-builder-addr=ADDRESS],
- [Builder address (default: xorg@lists.freedesktop.org)]),
- [ BUILDERADDR="$withval" ],
- [ BUILDERADDR="xorg@lists.freedesktop.org" ])
-AC_ARG_WITH(os-name, AS_HELP_STRING([--with-os-name=OSNAME], [Name of OS (default: output of "uname -srm")]),
- [ OSNAME="$withval" ],
- [ OSNAME=`uname -srm` ])
-AC_ARG_WITH(os-vendor, AS_HELP_STRING([--with-os-vendor=OSVENDOR], [Name of OS vendor]),
- [ OSVENDOR="$withval" ],
- [ OSVENDOR="" ])
-AC_ARG_WITH(builderstring, AS_HELP_STRING([--with-builderstring=BUILDERSTRING], [Additional builder string]),
- [ BUILDERSTRING="$withval" ]
- [ ])
-
-dnl Determine font path
-XORG_FONTROOTDIR
-XORG_FONTSUBDIR(FONTMISCDIR, fontmiscdir, misc)
-XORG_FONTSUBDIR(FONTOTFDIR, fontotfdir, OTF)
-XORG_FONTSUBDIR(FONTTTFDIR, fontttfdir, TTF)
-XORG_FONTSUBDIR(FONTTYPE1DIR, fonttype1dir, Type1)
-XORG_FONTSUBDIR(FONT75DPIDIR, font75dpidir, 75dpi)
-XORG_FONTSUBDIR(FONT100DPIDIR, font100dpidir, 100dpi)
-
-dnl Uses --default-font-path if set, otherwise checks for /etc/X11/fontpath.d,
-dnl otherwise uses standard subdirectories of FONTROOTDIR. When cross
-dnl compiling, assume default font path uses standard FONTROOTDIR directories.
-DEFAULT_FONT_PATH="${FONTMISCDIR}/,${FONTTTFDIR}/,${FONTOTFDIR}/,${FONTTYPE1DIR}/,${FONT100DPIDIR}/,${FONT75DPIDIR}/"
-if test "$cross_compiling" != yes; then
- AC_CHECK_FILE([${sysconfdir}/X11/fontpath.d],
- [DEFAULT_FONT_PATH='catalogue:${sysconfdir}/X11/fontpath.d'],
- [case $host_os in
- darwin*) DEFAULT_FONT_PATH="${DEFAULT_FONT_PATH},/Library/Fonts,/System/Library/Fonts" ;;
- esac])
-fi
-AC_ARG_WITH(default-font-path, AS_HELP_STRING([--with-default-font-path=PATH], [Comma separated list of font dirs]),
- [ FONTPATH="$withval" ],
- [ FONTPATH="${DEFAULT_FONT_PATH}" ])
-
-AC_MSG_CHECKING([for default font path])
-AC_MSG_RESULT([$FONTPATH])
-
-AC_ARG_WITH(xkb-path, AS_HELP_STRING([--with-xkb-path=PATH], [Path to XKB base dir (default: ${datadir}/X11/xkb)]),
- [ XKBPATH="$withval" ],
- [ XKBPATH="${datadir}/X11/xkb" ])
-AC_ARG_WITH(xkb-output, AS_HELP_STRING([--with-xkb-output=PATH], [Path to XKB output dir (default: ${datadir}/X11/xkb/compiled)]),
- [ XKBOUTPUT="$withval" ],
- [ XKBOUTPUT="compiled" ])
-AC_ARG_WITH(default-xkb-rules, AS_HELP_STRING([--with-default-xkb-rules=RULES],
- [Keyboard ruleset (default: base/evdev)]),
- [ XKB_DFLT_RULES="$withval" ],
- [ XKB_DFLT_RULES="" ])
-AC_ARG_WITH(default-xkb-model, AS_HELP_STRING([--with-default-xkb-model=MODEL],
- [Keyboard model (default: pc105)]),
- [ XKB_DFLT_MODEL="$withval" ],
- [ XKB_DFLT_MODEL="pc105" ])
-AC_ARG_WITH(default-xkb-layout, AS_HELP_STRING([--with-default-xkb-layout=LAYOUT],
- [Keyboard layout (default: us)]),
- [ XKB_DFLT_LAYOUT="$withval" ],
- [ XKB_DFLT_LAYOUT="us" ])
-AC_ARG_WITH(default-xkb-variant, AS_HELP_STRING([--with-default-xkb-variant=VARIANT],
- [Keyboard variant (default: (none))]),
- [ XKB_DFLT_VARIANT="$withval" ],
- [ XKB_DFLT_VARIANT="" ])
-AC_ARG_WITH(default-xkb-options, AS_HELP_STRING([--with-default-xkb-options=OPTIONS],
- [Keyboard layout options (default: (none))]),
- [ XKB_DFLT_OPTIONS="$withval" ],
- [ XKB_DFLT_OPTIONS="" ])
-AC_ARG_WITH(serverconfig-path, AS_HELP_STRING([--with-serverconfig-path=PATH],
- [Directory where ancillary server config files are installed (default: ${libdir}/xorg)]),
- [ SERVERCONFIG="$withval" ],
- [ SERVERCONFIG="${libdir}/xorg" ])
-AC_ARG_WITH(apple-applications-dir,AS_HELP_STRING([--with-apple-applications-dir=PATH], [Path to the Applications directory (default: /Applications/Utilities)]),
- [ APPLE_APPLICATIONS_DIR="${withval}" ],
- [ APPLE_APPLICATIONS_DIR="/Applications/Utilities" ])
-AC_SUBST([APPLE_APPLICATIONS_DIR])
-AC_ARG_WITH(apple-application-name,AS_HELP_STRING([--with-apple-application-name=NAME], [Name for the .app (default: X11)]),
- [ APPLE_APPLICATION_NAME="${withval}" ],
- [ APPLE_APPLICATION_NAME="X11" ])
-AC_SUBST([APPLE_APPLICATION_NAME])
-AC_ARG_WITH(launchd-id-prefix, AS_HELP_STRING([--with-launchd-id-prefix=PATH], [Prefix to use for launchd identifiers (default: org.x)]),
- [ LAUNCHD_ID_PREFIX="${withval}" ],
- [ LAUNCHD_ID_PREFIX="org.x" ])
-AC_SUBST([LAUNCHD_ID_PREFIX])
-AC_DEFINE_UNQUOTED(LAUNCHD_ID_PREFIX, "$LAUNCHD_ID_PREFIX", [Prefix to use for launchd identifiers])
-AC_ARG_ENABLE(sparkle,AS_HELP_STRING([--enable-sparkle], [Enable updating of X11.app using the Sparkle Framework (default: disabled)]),
- [ XQUARTZ_SPARKLE="${enableval}" ],
- [ XQUARTZ_SPARKLE="no" ])
-AC_SUBST([XQUARTZ_SPARKLE])
-AC_ARG_ENABLE(install-libxf86config,
- AS_HELP_STRING([--enable-install-libxf86config],
- [Install libxf86config (default: disabled)]),
- [INSTALL_LIBXF86CONFIG=$enableval],
- [INSTALL_LIBXF86CONFIG=no])
-AC_ARG_ENABLE(visibility, AC_HELP_STRING([--enable-visibility], [Enable symbol visibility (default: auto)]),
- [SYMBOL_VISIBILITY=$enableval],
- [SYMBOL_VISIBILITY=auto])
-AC_ARG_ENABLE(pc98, AC_HELP_STRING([--enable-pc98], [Enable PC98 support in Xorg (default: auto)]),
- [SUPPORT_PC98=$enableval],
- [SUPPORT_PC98=auto])
-
-dnl GLX build options
-AC_ARG_ENABLE(aiglx, AS_HELP_STRING([--enable-aiglx], [Build accelerated indirect GLX (default: enabled)]),
- [AIGLX=$enableval],
- [AIGLX=yes])
-AX_TLS
-AC_ARG_ENABLE(glx-tls, AS_HELP_STRING([--enable-glx-tls], [Build GLX with TLS support (default: auto)]),
- [GLX_USE_TLS=$enableval],
- [GLX_USE_TLS=no
- if test "${ac_cv_tls}" != "none" ; then
- GLX_USE_TLS=yes
- fi])
-AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
-
-dnl Extensions.
-AC_ARG_ENABLE(registry, AS_HELP_STRING([--disable-registry], [Build string registry module (default: enabled)]), [XREGISTRY=$enableval], [XREGISTRY=yes])
-AC_ARG_ENABLE(composite, AS_HELP_STRING([--disable-composite], [Build Composite extension (default: enabled)]), [COMPOSITE=$enableval], [COMPOSITE=yes])
-AC_ARG_ENABLE(mitshm, AS_HELP_STRING([--disable-shm], [Build SHM extension (default: enabled)]), [MITSHM=$enableval], [MITSHM=yes])
-AC_ARG_ENABLE(xres, AS_HELP_STRING([--disable-xres], [Build XRes extension (default: enabled)]), [RES=$enableval], [RES=yes])
-AC_ARG_ENABLE(record, AS_HELP_STRING([--disable-record], [Build Record extension (default: enabled)]), [RECORD=$enableval], [RECORD=yes])
-AC_ARG_ENABLE(xv, AS_HELP_STRING([--disable-xv], [Build Xv extension (default: enabled)]), [XV=$enableval], [XV=yes])
-AC_ARG_ENABLE(xvmc, AS_HELP_STRING([--disable-xvmc], [Build XvMC extension (default: enabled)]), [XVMC=$enableval], [XVMC=yes])
-AC_ARG_ENABLE(dga, AS_HELP_STRING([--disable-dga], [Build DGA extension (default: auto)]), [DGA=$enableval], [DGA=auto])
-AC_ARG_ENABLE(screensaver, AS_HELP_STRING([--disable-screensaver], [Build ScreenSaver extension (default: enabled)]), [SCREENSAVER=$enableval], [SCREENSAVER=yes])
-AC_ARG_ENABLE(xdmcp, AS_HELP_STRING([--disable-xdmcp], [Build XDMCP extension (default: auto)]), [XDMCP=$enableval], [XDMCP=auto])
-AC_ARG_ENABLE(xdm-auth-1, AS_HELP_STRING([--disable-xdm-auth-1], [Build XDM-Auth-1 extension (default: auto)]), [XDMAUTH=$enableval], [XDMAUTH=auto])
-AC_ARG_ENABLE(glx, AS_HELP_STRING([--disable-glx], [Build GLX extension (default: enabled)]), [GLX=$enableval], [GLX=yes])
-AC_ARG_ENABLE(dri, AS_HELP_STRING([--enable-dri], [Build DRI extension (default: auto)]), [DRI=$enableval])
-AC_ARG_ENABLE(dri2, AS_HELP_STRING([--enable-dri2], [Build DRI2 extension (default: auto)]), [DRI2=$enableval], [DRI2=auto])
-AC_ARG_ENABLE(xinerama, AS_HELP_STRING([--disable-xinerama], [Build Xinerama extension (default: enabled)]), [XINERAMA=$enableval], [XINERAMA=yes])
-AC_ARG_ENABLE(xf86vidmode, AS_HELP_STRING([--disable-xf86vidmode], [Build XF86VidMode extension (default: auto)]), [XF86VIDMODE=$enableval], [XF86VIDMODE=auto])
-AC_ARG_ENABLE(xace, AS_HELP_STRING([--disable-xace], [Build X-ACE extension (default: enabled)]), [XACE=$enableval], [XACE=yes])
-AC_ARG_ENABLE(xselinux, AS_HELP_STRING([--enable-xselinux], [Build SELinux extension (default: disabled)]), [XSELINUX=$enableval], [XSELINUX=no])
-AC_ARG_ENABLE(xcsecurity, AS_HELP_STRING([--enable-xcsecurity], [Build Security extension (default: disabled)]), [XCSECURITY=$enableval], [XCSECURITY=no])
-AC_ARG_ENABLE(xcalibrate, AS_HELP_STRING([--enable-xcalibrate], [Build XCalibrate extension (default: disabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=no])
-AC_ARG_ENABLE(tslib, AS_HELP_STRING([--enable-tslib], [Build kdrive tslib touchscreen support (default: disabled)]), [TSLIB=$enableval], [TSLIB=no])
-AC_ARG_ENABLE(dbe, AS_HELP_STRING([--disable-dbe], [Build DBE extension (default: enabled)]), [DBE=$enableval], [DBE=yes])
-AC_ARG_ENABLE(xf86bigfont, AS_HELP_STRING([--enable-xf86bigfont], [Build XF86 Big Font extension (default: disabled)]), [XF86BIGFONT=$enableval], [XF86BIGFONT=no])
-AC_ARG_ENABLE(dpms, AS_HELP_STRING([--disable-dpms], [Build DPMS extension (default: enabled)]), [DPMSExtension=$enableval], [DPMSExtension=yes])
-AC_ARG_ENABLE(config-udev, AS_HELP_STRING([--enable-config-udev], [Build udev support (default: auto)]), [CONFIG_UDEV=$enableval], [CONFIG_UDEV=auto])
-AC_ARG_ENABLE(config-dbus, AS_HELP_STRING([--enable-config-dbus], [Build D-BUS API support (default: no)]), [CONFIG_DBUS_API=$enableval], [CONFIG_DBUS_API=no])
-AC_ARG_ENABLE(config-hal, AS_HELP_STRING([--disable-config-hal], [Build HAL support (default: auto)]), [CONFIG_HAL=$enableval], [CONFIG_HAL=auto])
-AC_ARG_ENABLE(xfree86-utils, AS_HELP_STRING([--enable-xfree86-utils], [Build xfree86 DDX utilities (default: enabled)]), [XF86UTILS=$enableval], [XF86UTILS=yes])
-AC_ARG_ENABLE(xaa, AS_HELP_STRING([--enable-xaa], [Build XAA (default: enabled)]), [XAA=$enableval], [XAA=yes])
-AC_ARG_ENABLE(vgahw, AS_HELP_STRING([--enable-vgahw], [Build Xorg with vga access (default: enabled)]), [VGAHW=$enableval], [VGAHW=yes])
-AC_ARG_ENABLE(vbe, AS_HELP_STRING([--enable-vbe], [Build Xorg with VBE module (default: enabled)]), [VBE=$enableval], [VBE=yes])
-AC_ARG_ENABLE(int10-module, AS_HELP_STRING([--enable-int10-module], [Build Xorg with int10 module (default: enabled)]), [INT10MODULE=$enableval], [INT10MODULE=yes])
-AC_ARG_ENABLE(windowswm, AS_HELP_STRING([--enable-windowswm], [Build XWin with WindowsWM extension (default: no)]), [WINDOWSWM=$enableval], [WINDOWSWM=no])
-AC_ARG_ENABLE(libdrm, AS_HELP_STRING([--enable-libdrm], [Build Xorg with libdrm support (default: enabled)]), [DRM=$enableval],[DRM=yes])
-
-dnl DDXes.
-AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto])
-AC_ARG_ENABLE(dmx, AS_HELP_STRING([--enable-dmx], [Build DMX server (default: auto)]), [DMX=$enableval], [DMX=auto])
-AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server (default: yes)]), [XVFB=$enableval], [XVFB=yes])
-AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: auto)]), [XNEST=$enableval], [XNEST=auto])
-AC_ARG_ENABLE(xquartz, AS_HELP_STRING([--enable-xquartz], [Build Xquartz server for OS-X (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto])
-AC_ARG_ENABLE(standalone-xpbproxy, AS_HELP_STRING([--enable-standalone-xpbproxy], [Build a standalone xpbproxy (in addition to the one integrated into Xquartz as a separate thread) (default: no)]), [STANDALONE_XPBPROXY=$enableval], [STANDALONE_XPBPROXY=no])
-AC_ARG_ENABLE(xwin, AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto])
-dnl kdrive and its subsystems
-AC_ARG_ENABLE(kdrive, AS_HELP_STRING([--enable-kdrive], [Build kdrive servers (default: no)]), [KDRIVE=$enableval], [KDRIVE=no])
-AC_ARG_ENABLE(xephyr, AS_HELP_STRING([--enable-xephyr], [Build the kdrive Xephyr server (default: auto)]), [XEPHYR=$enableval], [XEPHYR=auto])
-AC_ARG_ENABLE(xfake, AS_HELP_STRING([--enable-xfake], [Build the kdrive 'fake' server (default: auto)]), [XFAKE=$enableval], [XFAKE=auto])
-AC_ARG_ENABLE(xfbdev, AS_HELP_STRING([--enable-xfbdev], [Build the kdrive framebuffer device server (default: auto)]), [XFBDEV=$enableval], [XFBDEV=auto])
-dnl kdrive options
-AC_ARG_ENABLE(kdrive-kbd, AS_HELP_STRING([--enable-kdrive-kbd], [Build kbd driver for kdrive (default: auto)]), [KDRIVE_KBD=$enableval], [KDRIVE_KBD=auto])
-AC_ARG_ENABLE(kdrive-mouse, AC_HELP_STRING([--enable-kdrive-mouse], [Build mouse driver for kdrive (default: auto)]), [KDRIVE_MOUSE=$enableval], [KDRIVE_MOUSE=auto])
-AC_ARG_ENABLE(kdrive-evdev, AC_HELP_STRING([--enable-kdrive-evdev], [Build evdev driver for kdrive (default: auto)]), [KDRIVE_EVDEV=$enableval], [KDRIVE_EVDEV=auto])
-
-
-dnl chown/chmod to be setuid root as part of build
-dnl Replaces InstallXserverSetUID in imake
-AC_ARG_ENABLE(install-setuid,
- AS_HELP_STRING([--enable-install-setuid],
- [Install Xorg server as owned by root with setuid bit (default: auto)]),
- [SETUID=$enableval], [SETUID=auto])
-AC_MSG_CHECKING([to see if we can install the Xorg server as root])
-if test "x$SETUID" = "xauto" ; then
- case $host_os in
- cygwin*) SETUID="no" ;;
- darwin*) SETUID="no" ;;
- *)
- case $host_cpu in
- sparc) SETUID="no" ;;
- *) SETUID="yes" ;;
- esac
- esac
- if test "x$SETUID" = xyes; then
- touch testfile
- chown root testfile > /dev/null 2>&1 || SETUID="no"
- rm -f testfile
- fi
-fi
-AC_MSG_RESULT([$SETUID])
-AM_CONDITIONAL(INSTALL_SETUID, [test "x$SETUID" = "xyes"])
-
-dnl Issue an error if xtrans.m4 was not found and XTRANS_CONNECTION_FLAGS macro
-dnl was not expanded, since xorg-server with no transport types is rather useless.
-dnl
-dnl If you're seeing an error here, be sure you installed the lib/xtrans module
-dnl first and if it's not in the default location, that you set the ACLOCAL
-dnl environment variable to find it, such as:
-dnl ACLOCAL="aclocal -I ${PREFIX}/share/aclocal"
-m4_pattern_forbid([^XTRANS_CONNECTION_FLAGS$])
-
-# Transport selection macro from xtrans.m4
-XTRANS_CONNECTION_FLAGS
-
-# Secure RPC detection macro from xtrans.m4
-XTRANS_SECURE_RPC_FLAGS
-AM_CONDITIONAL(SECURE_RPC, [test "x$SECURE_RPC" = xyes])
-
-AM_CONDITIONAL(INT10_VM86, [test "x$INT10" = xvm86])
-AM_CONDITIONAL(INT10_X86EMU, [test "x$INT10" = xx86emu])
-AM_CONDITIONAL(INT10_STUB, [test "x$INT10" = xstub])
-if test "x$INT10" = xyes; then
- dnl VM86 headers
- AC_CHECK_HEADERS([sys/vm86.h sys/io.h])
-fi
-
-XORG_ENABLE_DOCS
-XORG_ENABLE_DEVEL_DOCS
-XORG_WITH_XMLTO(0.0.20)
-XORG_WITH_FOP
-
-dnl Handle installing libxf86config
-AM_CONDITIONAL(INSTALL_LIBXF86CONFIG, [test "x$INSTALL_LIBXF86CONFIG" = xyes])
-
-dnl DDX Detection... Yes, it's ugly to have it here... but we need to
-dnl handle this early on so that we don't require unsupported extensions
-case $host_os in
- cygwin*)
- DGA=no
- DRI2=no
- XF86VIDMODE=no
- XSELINUX=no
- XV=no
- ;;
- darwin*)
- DRI2=no
-
- if test x$XQUARTZ = xauto; then
- AC_CACHE_CHECK([whether to build Xquartz],xorg_cv_Carbon_framework,[
- save_LDFLAGS=$LDFLAGS
- LDFLAGS="$LDFLAGS -framework Carbon"
- AC_LINK_IFELSE([char FSFindFolder(); int main() { FSFindFolder(); return 0;}],
- [xorg_cv_Carbon_framework=yes],
- [xorg_cv_Carbon_framework=no])
- LDFLAGS=$save_LDFLAGS])
-
- if test "X$xorg_cv_Carbon_framework" = Xyes; then
- XQUARTZ=yes
- else
- XQUARTZ=no
- fi
- fi
-
- if test "x$XQUARTZ" = xyes ; then
- XQUARTZ=yes
- XVFB=no
- XNEST=no
-
- COMPOSITE=no
- DGA=no
- DPMSExtension=no
- XF86VIDMODE=no
- fi
- ;;
- *) XQUARTZ=no ;;
-esac
-
-dnl ---------------------------------------------------------------------------
-dnl Extension section
-dnl ---------------------------------------------------------------------------
-XEXT_INC='-I$(top_srcdir)/Xext'
-XEXT_LIB='$(top_builddir)/Xext/libXext.la'
-XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la'
-
-dnl Optional modules
-VIDEOPROTO="videoproto"
-COMPOSITEPROTO="compositeproto >= 0.4"
-RECORDPROTO="recordproto >= 1.13.99.1"
-SCRNSAVERPROTO="scrnsaverproto >= 1.1"
-RESOURCEPROTO="resourceproto"
-DRIPROTO="xf86driproto >= 2.1.0"
-DRI2PROTO="dri2proto >= 2.3"
-XINERAMAPROTO="xineramaproto"
-BIGFONTPROTO="xf86bigfontproto >= 1.2.0"
-XCALIBRATEPROTO="xcalibrateproto"
-DGAPROTO="xf86dgaproto >= 2.0.99.1"
-GLPROTO="glproto >= 1.4.10"
-DMXPROTO="dmxproto >= 2.2.99.1"
-VIDMODEPROTO="xf86vidmodeproto >= 2.2.99.1"
-WINDOWSWMPROTO="windowswmproto"
-APPLEWMPROTO="applewmproto >= 1.4"
-
-dnl Core modules for most extensions, et al.
-SDK_REQUIRED_MODULES="[xproto >= 7.0.17] [randrproto >= 1.4] [renderproto >= 0.11] [xextproto >= 7.1.99] [inputproto >= 1.9.99.902] [kbproto >= 1.0.3] fontsproto"
-# Make SDK_REQUIRED_MODULES available for inclusion in xorg-server.pc
-AC_SUBST(SDK_REQUIRED_MODULES)
-
-dnl List of libraries that require a specific version
-LIBAPPLEWM="applewm >= 1.4"
-LIBDMX="dmx >= 1.0.99.1"
-LIBDRI="dri >= 7.8.0"
-LIBDRM="libdrm >= 2.3.0"
-LIBGL="gl >= 7.1.0"
-LIBXEXT="xext >= 1.0.99.4"
-LIBXFONT="xfont >= 1.4.2"
-LIBXI="xi >= 1.2.99.1"
-LIBXTST="xtst >= 1.0.99.2"
-LIBPCIACCESS="pciaccess >= 0.8.0"
-LIBGLIB="glib-2.0 >= 2.16"
-LIBUDEV="libudev >= 143"
-LIBSELINUX="libselinux >= 2.0.86"
-LIBDBUS="dbus-1 >= 1.0"
-LIBPIXMAN="pixman-1 >= 0.15.20"
-
-dnl Pixman is always required, but we separate it out so we can link
-dnl specific modules against it
-PKG_CHECK_MODULES(PIXMAN, $LIBPIXMAN)
-REQUIRED_LIBS="$REQUIRED_LIBS $LIBPIXMAN $LIBXFONT xau"
-
-REQUIRED_MODULES="[fixesproto >= 4.1] [damageproto >= 1.1] [xcmiscproto >= 1.2.0] [xtrans >= 1.2.2] [bigreqsproto >= 1.1.0] $SDK_REQUIRED_MODULES"
-
-if test "x$CONFIG_UDEV" = xyes &&
- { test "x$CONFIG_DBUS_API" = xyes || test "x$CONFIG_HAL" = xyes; }; then
- AC_MSG_ERROR([Hotplugging through both libudev and dbus/hal not allowed])
-fi
-
-PKG_CHECK_MODULES(UDEV, $LIBUDEV, [HAVE_LIBUDEV=yes], [HAVE_LIBUDEV=no])
-if test "x$CONFIG_UDEV" = xauto; then
- CONFIG_UDEV="$HAVE_LIBUDEV"
-fi
-AM_CONDITIONAL(CONFIG_UDEV, [test "x$CONFIG_UDEV" = xyes])
-if test "x$CONFIG_UDEV" = xyes; then
- CONFIG_DBUS_API=no
- CONFIG_HAL=no
- if ! test "x$HAVE_LIBUDEV" = xyes; then
- AC_MSG_ERROR([udev configuration API requested, but libudev is not installed])
- fi
- AC_DEFINE(CONFIG_UDEV, 1, [Use libudev for input hotplug])
-fi
-
-dnl HAVE_DBUS is true if we actually have the D-Bus library, whereas
-dnl CONFIG_DBUS_API is true if we want to enable the D-Bus config
-dnl API.
-PKG_CHECK_MODULES(DBUS, $LIBDBUS, [HAVE_DBUS=yes], [HAVE_DBUS=no])
-if test "x$HAVE_DBUS" = xyes; then
- AC_DEFINE(HAVE_DBUS, 1, [Have D-Bus support])
-fi
-AM_CONDITIONAL(HAVE_DBUS, [test "x$HAVE_DBUS" = xyes])
-
-if test "x$CONFIG_DBUS_API" = xauto; then
- CONFIG_DBUS_API="$HAVE_DBUS"
-fi
-if test "x$CONFIG_DBUS_API" = xyes; then
- if ! test "x$HAVE_DBUS" = xyes; then
- AC_MSG_ERROR([D-Bus configuration API requested, but D-Bus is not installed.])
- fi
-
- AC_DEFINE(CONFIG_DBUS_API, 1, [Use the D-Bus input configuration API])
- CONFIG_NEED_DBUS="yes"
-fi
-AM_CONDITIONAL(CONFIG_DBUS_API, [test "x$CONFIG_DBUS_API" = xyes])
-
-PKG_CHECK_MODULES(HAL, hal, [HAVE_HAL=yes], [HAVE_HAL=no])
-if test "x$CONFIG_HAL" = xauto; then
- CONFIG_HAL="$HAVE_HAL"
-fi
-if test "x$CONFIG_HAL" = xyes; then
- if ! test "x$HAVE_HAL" = xyes; then
- AC_MSG_ERROR([HAL hotplug API requested, but HAL is not installed.])
- fi
-
- AC_DEFINE(CONFIG_HAL, 1, [Use the HAL hotplug API])
- CONFIG_NEED_DBUS="yes"
-fi
-AM_CONDITIONAL(CONFIG_HAL, [test "x$CONFIG_HAL" = xyes])
-
-if test "x$CONFIG_NEED_DBUS" = xyes; then
- AC_DEFINE(CONFIG_NEED_DBUS, 1, [Use D-Bus for input hotplug])
-fi
-AM_CONDITIONAL(CONFIG_NEED_DBUS, [test "x$CONFIG_NEED_DBUS" = xyes])
-
-if test "x$USE_SIGIO_BY_DEFAULT" = xyes; then
- USE_SIGIO_BY_DEFAULT_VALUE=TRUE
-else
- USE_SIGIO_BY_DEFAULT_VALUE=FALSE
-fi
-AC_DEFINE_UNQUOTED([USE_SIGIO_BY_DEFAULT], [$USE_SIGIO_BY_DEFAULT_VALUE],
- [Use SIGIO handlers for input device events by default])
-
-AC_MSG_CHECKING([for glibc...])
-AC_PREPROC_IFELSE([
-#include <features.h>
-#ifndef __GLIBC__
-#error
-#endif
-], glibc=yes, glibc=no)
-AC_MSG_RESULT([$glibc])
-
-AC_CHECK_FUNCS([clock_gettime], [have_clock_gettime=yes],
- [AC_CHECK_LIB([rt], [clock_gettime], [have_clock_gettime=-lrt],
- [have_clock_gettime=no])])
-
-AC_MSG_CHECKING([for a useful monotonic clock ...])
-
-if ! test "x$have_clock_gettime" = xno; then
- if ! test "x$have_clock_gettime" = xyes; then
- CLOCK_LIBS="$have_clock_gettime"
- else
- CLOCK_LIBS=""
- fi
-
- LIBS_SAVE="$LIBS"
- LIBS="$CLOCK_LIBS"
- CPPFLAGS_SAVE="$CPPFLAGS"
-
- if test x"$glibc" = xyes; then
- CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
- fi
-
- AC_RUN_IFELSE([
-#include <time.h>
-
-int main(int argc, char *argv[[]]) {
- struct timespec tp;
-
- if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
- return 0;
- else
- return 1;
-}
- ], [MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no],
- [MONOTONIC_CLOCK="cross compiling"])
-
- LIBS="$LIBS_SAVE"
- CPPFLAGS="$CPPFLAGS_SAVE"
-else
- MONOTONIC_CLOCK=no
-fi
-
-AC_MSG_RESULT([$MONOTONIC_CLOCK])
-
-if test "x$MONOTONIC_CLOCK" = xyes; then
- AC_DEFINE(MONOTONIC_CLOCK, 1, [Have monotonic clock from clock_gettime()])
- LIBS="$LIBS $CLOCK_LIBS"
-fi
-
-AM_CONDITIONAL(XV, [test "x$XV" = xyes])
-if test "x$XV" = xyes; then
- AC_DEFINE(XV, 1, [Support Xv extension])
- AC_DEFINE(XvExtension, 1, [Build Xv extension])
- REQUIRED_MODULES="$REQUIRED_MODULES $VIDEOPROTO"
- SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $VIDEOPROTO"
-else
- XVMC=no
-fi
-
-AM_CONDITIONAL(XVMC, [test "x$XVMC" = xyes])
-if test "x$XVMC" = xyes; then
- AC_DEFINE(XvMCExtension, 1, [Build XvMC extension])
-fi
-
-AM_CONDITIONAL(XREGISTRY, [test "x$XREGISTRY" = xyes])
-if test "x$XREGISTRY" = xyes; then
- AC_DEFINE(XREGISTRY, 1, [Build registry module])
-fi
-
-AM_CONDITIONAL(COMPOSITE, [test "x$COMPOSITE" = xyes])
-if test "x$COMPOSITE" = xyes; then
- AC_DEFINE(COMPOSITE, 1, [Support Composite Extension])
- REQUIRED_MODULES="$REQUIRED_MODULES $COMPOSITEPROTO"
- COMPOSITE_LIB='$(top_builddir)/composite/libcomposite.la'
- COMPOSITE_INC='-I$(top_srcdir)/composite'
-fi
-
-AM_CONDITIONAL(MITSHM, [test "x$MITSHM" = xyes])
-if test "x$MITSHM" = xyes; then
- AC_DEFINE(MITSHM, 1, [Support MIT-SHM extension])
- AC_DEFINE(HAS_SHM, 1, [Support SHM])
-fi
-
-AM_CONDITIONAL(RECORD, [test "x$RECORD" = xyes])
-if test "x$RECORD" = xyes; then
- AC_DEFINE(XRECORD, 1, [Support Record extension])
- REQUIRED_MODULES="$REQUIRED_MODULES $RECORDPROTO"
- RECORD_LIB='$(top_builddir)/record/librecord.la'
-fi
-
-AM_CONDITIONAL(SCREENSAVER, [test "x$SCREENSAVER" = xyes])
-if test "x$SCREENSAVER" = xyes; then
- AC_DEFINE(SCREENSAVER, 1, [Support MIT-SCREEN-SAVER extension])
- REQUIRED_MODULES="$REQUIRED_MODULES $SCRNSAVERPROTO"
-fi
-
-AM_CONDITIONAL(RES, [test "x$RES" = xyes])
-if test "x$RES" = xyes; then
- AC_DEFINE(RES, 1, [Support X resource extension])
- REQUIRED_MODULES="$REQUIRED_MODULES $RESOURCEPROTO"
-fi
-
-if test "x$GLX" = xyes; then
- PKG_CHECK_MODULES([XLIB], [x11])
- PKG_CHECK_MODULES([GL], $GLPROTO $LIBGL)
- AC_SUBST(XLIB_CFLAGS)
- AC_DEFINE(GLXEXT, 1, [Build GLX extension])
- GLX_LIBS='$(top_builddir)/glx/libglx.la'
- GLX_SYS_LIBS="$GLX_SYS_LIBS"
-else
- GLX=no
-fi
-AM_CONDITIONAL(GLX, test "x$GLX" = xyes)
-
-if test "x$AIGLX" = xyes -a "x$GLX" = xyes -a "x$DRI" = xyes; then
- AC_DEFINE(AIGLX, 1, [Build AIGLX loader])
-else
- AIGLX=no
-fi
-AM_CONDITIONAL(AIGLX, test "x$AIGLX" = xyes)
-
-if test "x$GLX_USE_TLS" = xyes ; then
- GLX_DEFINES="-DGLX_USE_TLS -DPTHREADS"
- GLX_SYS_LIBS="$GLX_SYS_LIBS -lpthread"
-fi
-AC_SUBST([GLX_DEFINES])
-
-AM_CONDITIONAL(DRI, test "x$DRI" = xyes)
-if test "x$DRI" = xyes; then
- AC_DEFINE(XF86DRI, 1, [Build DRI extension])
- PKG_CHECK_MODULES([DRIPROTO], [$DRIPROTO])
- PKG_CHECK_MODULES([DRI], $GLPROTO $LIBDRI)
- AC_SUBST(DRIPROTO_CFLAGS)
-fi
-
-PKG_CHECK_MODULES([DRI2PROTO], $DRI2PROTO,
- [HAVE_DRI2PROTO=yes], [HAVE_DRI2PROTO=no])
-case "$DRI2,$HAVE_DRI2PROTO" in
- yes,no)
- AC_MSG_ERROR([DRI2 requested, but dri2proto not found.])
- ;;
- yes,yes | auto,yes)
- AC_DEFINE(DRI2, 1, [Build DRI2 extension])
- DRI2=yes
- SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $DRI2PROTO"
- ;;
-esac
-AM_CONDITIONAL(DRI2, test "x$DRI2" = xyes)
-
-if test "x$DRI" = xyes || test "x$DRI2" = xyes; then
- if test "x$DRM" = xyes; then
- AC_DEFINE(WITH_LIBDRM, 1, [Building with libdrm support])
- PKG_CHECK_MODULES([LIBDRM], $LIBDRM)
- fi
-fi
-
-if test "x$DRI2" = xyes; then
- save_CFLAGS=$CFLAGS
- CFLAGS="$GL_CFLAGS $LIBDRM_CFLAGS"
- AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <GL/gl.h>
-#include <GL/internal/dri_interface.h>
-#ifndef __DRI_DRI2
-#error DRI2 extension not available.
-#endif]])],
- [HAVE_DRI2EXTENSION=yes],
- [HAVE_DRI2EXTENSION=no])
- CFLAGS=$save_CFLAGS
- if test "x$HAVE_DRI2EXTENSION" = xyes; then
- AC_DEFINE(DRI2_AIGLX, 1, [Build DRI2 AIGLX loader])
- DRI2_AIGLX=yes
- else
- AC_MSG_NOTICE([DRI2 AIGLX disabled, __DRI_DRI2 not defined in dri_interface.h.])
- DRI2_AIGLX=no
- fi
-fi
-AM_CONDITIONAL(DRI2_AIGLX, test "x$DRI2_AIGLX" = xyes)
-
-
-AM_CONDITIONAL(XINERAMA, [test "x$XINERAMA" = xyes])
-if test "x$XINERAMA" = xyes; then
- AC_DEFINE(XINERAMA, 1, [Support Xinerama extension])
- AC_DEFINE(PANORAMIX, 1, [Internal define for Xinerama])
- REQUIRED_MODULES="$REQUIRED_MODULES $XINERAMAPROTO"
- SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $XINERAMAPROTO"
-fi
-
-AM_CONDITIONAL(XACE, [test "x$XACE" = xyes])
-if test "x$XACE" = xyes; then
- AC_DEFINE(XACE, 1, [Build X-ACE extension])
-fi
-
-AM_CONDITIONAL(XSELINUX, [test "x$XSELINUX" = xyes])
-if test "x$XSELINUX" = xyes; then
- if test "x$XACE" != xyes; then
- AC_MSG_ERROR([cannot build SELinux extension without X-ACE])
- fi
- AC_CHECK_HEADERS([libaudit.h], [], AC_MSG_ERROR([SELinux extension requires audit system headers]))
- AC_CHECK_LIB(audit, audit_open, [], AC_MSG_ERROR([SELinux extension requires audit system library]))
- PKG_CHECK_MODULES([SELINUX], $LIBSELINUX)
- SELINUX_LIBS="$SELINUX_LIBS -laudit"
- AC_DEFINE(XSELINUX, 1, [Build SELinux extension])
-fi
-
-AM_CONDITIONAL(XCSECURITY, [test "x$XCSECURITY" = xyes])
-if test "x$XCSECURITY" = xyes; then
- if test "x$XACE" != xyes; then
- AC_MSG_ERROR([cannot build Security extension without X-ACE])
- fi
- AC_DEFINE(XCSECURITY, 1, [Build Security extension])
-fi
-
-AM_CONDITIONAL(DBE, [test "x$DBE" = xyes])
-if test "x$DBE" = xyes; then
- AC_DEFINE(DBE, 1, [Support DBE extension])
- DBE_LIB='$(top_builddir)/dbe/libdbe.la'
-fi
-
-AM_CONDITIONAL(XF86BIGFONT, [test "x$XF86BIGFONT" = xyes])
-if test "x$XF86BIGFONT" = xyes; then
- AC_DEFINE(XF86BIGFONT, 1, [Support XF86 Big font extension])
- REQUIRED_MODULES="$REQUIRED_MODULES $BIGFONTPROTO"
-fi
-
-AM_CONDITIONAL(DPMSExtension, [test "x$DPMSExtension" = xyes])
-if test "x$DPMSExtension" = xyes; then
- AC_DEFINE(DPMSExtension, 1, [Support DPMS extension])
-fi
-
-if test "x$XCALIBRATE" = xyes && test "$KDRIVE" = yes; then
- AC_DEFINE(XCALIBRATE, 1, [Build XCalibrate extension])
- REQUIRED_MODULES="$REQUIRED_MODULES $XCALIBRATEPROTO"
-else
- XCALIBRATE=no
-fi
-AM_CONDITIONAL(XCALIBRATE, [test "x$XCALIBRATE" = xyes])
-
-AC_DEFINE(RENDER, 1, [Support RENDER extension])
-RENDER_LIB='$(top_builddir)/render/librender.la'
-RENDER_INC='-I$(top_srcdir)/render'
-
-AC_DEFINE(RANDR, 1, [Support RANDR extension])
-RANDR_LIB='$(top_builddir)/randr/librandr.la'
-RANDR_INC='-I$(top_srcdir)/randr'
-
-AC_DEFINE(XFIXES,1,[Support XFixes extension])
-FIXES_LIB='$(top_builddir)/xfixes/libxfixes.la'
-FIXES_INC='-I$(top_srcdir)/xfixes'
-
-AC_DEFINE(DAMAGE,1,[Support Damage extension])
-DAMAGE_LIB='$(top_builddir)/damageext/libdamageext.la'
-DAMAGE_INC='-I$(top_srcdir)/damageext'
-MIEXT_DAMAGE_LIB='$(top_builddir)/miext/damage/libdamage.la'
-MIEXT_DAMAGE_INC='-I$(top_srcdir)/miext/damage'
-
-# XINPUT extension is integral part of the server
-AC_DEFINE(XINPUT, 1, [Support X Input extension])
-XI_LIB='$(top_builddir)/Xi/libXi.la'
-XI_INC='-I$(top_srcdir)/Xi'
-
-AM_CONDITIONAL(XF86UTILS, test "x$XF86UTILS" = xyes)
-AM_CONDITIONAL(XAA, test "x$XAA" = xyes)
-AM_CONDITIONAL(VGAHW, test "x$VGAHW" = xyes)
-AM_CONDITIONAL(VBE, test "x$VBE" = xyes)
-AM_CONDITIONAL(INT10MODULE, test "x$INT10MODULE" = xyes)
-
-AC_DEFINE(SHAPE, 1, [Support SHAPE extension])
-
-AC_DEFINE_DIR(XKB_BASE_DIRECTORY, XKBPATH, [Path to XKB data])
-AC_ARG_WITH(xkb-bin-directory,
- AS_HELP_STRING([--with-xkb-bin-directory=DIR], [Directory containing xkbcomp program]),
- [XKB_BIN_DIRECTORY="$withval"],
- [XKB_BIN_DIRECTORY="$bindir"])
-
-AC_DEFINE_DIR(XKB_BIN_DIRECTORY, XKB_BIN_DIRECTORY, [Path to XKB bin dir])
-
-dnl Make sure XKM_OUTPUT_DIR is an absolute path
-XKBOUTPUT_FIRSTCHAR=`echo $XKBOUTPUT | cut -b 1`
-if [[ x$XKBOUTPUT_FIRSTCHAR != x/ -a x$XKBOUTPUT_FIRSTCHAR != 'x$' ]] ; then
- XKBOUTPUT="$XKB_BASE_DIRECTORY/$XKBOUTPUT"
-fi
-
-dnl XKM_OUTPUT_DIR (used in code) must end in / or file names get hosed
-dnl XKB_COMPILED_DIR (used in Makefiles) must not or install-sh gets confused
-
-XKBOUTPUT=`echo $XKBOUTPUT/ | $SED 's|/*$|/|'`
-XKB_COMPILED_DIR=`echo $XKBOUTPUT | $SED 's|/*$||'`
-AC_DEFINE_DIR(XKM_OUTPUT_DIR, XKBOUTPUT, [Path to XKB output dir])
-AC_SUBST(XKB_COMPILED_DIR)
-
-if test "x$XKB_DFLT_RULES" = x; then
- case $host_os in
- linux*)
- dnl doesn't take AutoAddDevices into account, but whatever.
- if test "x$CONFIG_HAL" = xyes; then
- XKB_DFLT_RULES="evdev"
- else
- XKB_DFLT_RULES="base"
- fi
- ;;
- *)
- XKB_DFLT_RULES="base"
- ;;
- esac
-fi
-AC_DEFINE_UNQUOTED(XKB_DFLT_RULES, ["$XKB_DFLT_RULES"], [Default XKB ruleset])
-AC_DEFINE_UNQUOTED(XKB_DFLT_MODEL, ["$XKB_DFLT_MODEL"], [Default XKB model])
-AC_DEFINE_UNQUOTED(XKB_DFLT_LAYOUT, ["$XKB_DFLT_LAYOUT"], [Default XKB layout])
-AC_DEFINE_UNQUOTED(XKB_DFLT_VARIANT, ["$XKB_DFLT_VARIANT"], [Default XKB variant])
-AC_DEFINE_UNQUOTED(XKB_DFLT_OPTIONS, ["$XKB_DFLT_OPTIONS"], [Default XKB options])
-
-XKB_LIB='$(top_builddir)/xkb/libxkb.la'
-XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
-REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
-
-AC_CHECK_FUNC(strcasecmp, [], AC_DEFINE([NEED_STRCASECMP], 1,
- [Do not have 'strcasecmp'.]))
-AC_CHECK_FUNC(strncasecmp, [], AC_DEFINE([NEED_STRNCASECMP], 1,
- [Do not have 'strncasecmp'.]))
-AC_CHECK_FUNC(strcasestr, [], AC_DEFINE([NEED_STRCASESTR], 1,
- [Do not have 'strcasestr'.]))
-
-PKG_CHECK_MODULES([XDMCP], [xdmcp], [have_libxdmcp="yes"], [have_libxdmcp="no"])
-if test "x$have_libxdmcp" = xyes; then
- AC_CHECK_LIB(Xdmcp, XdmcpWrap, [have_xdmcpwrap="yes"], [have_xdmcpwrap="no"], [$XDMCP_LIBS])
-fi
-if test "x$XDMCP" = xauto; then
- if test "x$have_libxdmcp" = xyes; then
- XDMCP=yes
- else
- XDMCP=no
- fi
-fi
-if test "x$XDMAUTH" = xauto; then
- if test "x$have_libxdmcp" = xyes && test "x$have_xdmcpwrap" = xyes; then
- XDMAUTH=yes
- else
- XDMAUTH=no
- fi
-fi
-
-AM_CONDITIONAL(XDMCP, [test "x$XDMCP" = xyes])
-if test "x$XDMCP" = xyes; then
- AC_DEFINE(XDMCP, 1, [Support XDM Control Protocol])
- REQUIRED_LIBS="$REQUIRED_LIBS xdmcp"
- XDMCP_MODULES="xdmcp"
-fi
-
-AM_CONDITIONAL(XDMAUTH, [test "x$XDMAUTH" = xyes])
-if test "x$XDMAUTH" = xyes; then
- AC_DEFINE(HASXDMAUTH,1,[Support XDM-AUTH*-1])
- if ! test "x$XDMCP" = xyes; then
- REQUIRED_LIBS="$REQUIRED_LIBS xdmcp"
- XDMCP_MODULES="xdmcp"
- fi
-fi
-
-AC_DEFINE_DIR(COMPILEDDEFAULTFONTPATH, FONTPATH, [Default font path])
-AC_DEFINE_DIR(PCI_TXT_IDS_PATH, PCI_TXT_IDS_DIR, [Default PCI text file ID path])
-AC_DEFINE_DIR(SERVER_MISC_CONFIG_PATH, SERVERCONFIG, [Server miscellaneous config path])
-AC_DEFINE_DIR(BASE_FONT_PATH, FONTROOTDIR, [Default base font path])
-dridriverdir=`$PKG_CONFIG --variable=dridriverdir dri`
-AC_DEFINE_DIR(DRI_DRIVER_PATH, dridriverdir, [Default DRI driver path])
-AC_DEFINE_UNQUOTED(XVENDORNAME, ["$VENDOR_NAME"], [Vendor name])
-AC_DEFINE_UNQUOTED(XVENDORNAMESHORT, ["$VENDOR_NAME_SHORT"], [Short vendor name])
-AC_DEFINE_UNQUOTED(XORG_DATE, ["$RELEASE_DATE"], [Vendor release])
-AC_DEFINE_UNQUOTED(XORG_MAN_VERSION, ["$VENDOR_MAN_VERSION"], [Vendor man version])
-AC_DEFINE_UNQUOTED(BUILDERADDR, ["$BUILDERADDR"], [Builder address])
-
-if test -z "$OSNAME"; then
- OSNAME="UNKNOWN"
-fi
-
-AC_DEFINE_UNQUOTED(OSNAME, ["$OSNAME"], [Operating System Name])
-AC_DEFINE_UNQUOTED(OSVENDOR, ["$OSVENDOR"], [Operating System Vendor])
-AC_DEFINE_UNQUOTED(BUILDERSTRING, ["$BUILDERSTRING"], [Builder string])
-
-AC_SUBST([VENDOR_NAME_SHORT])
-AC_DEFINE_UNQUOTED(VENDOR_NAME, ["$VENDOR_NAME"], [Vendor name])
-AC_DEFINE_UNQUOTED(VENDOR_NAME_SHORT, ["$VENDOR_NAME_SHORT"], [Vendor name])
-AC_DEFINE_UNQUOTED(VENDOR_RELEASE, [$VENDOR_RELEASE], [Vendor release])
-AC_DEFINE_UNQUOTED(VENDOR_MAN_VERSION, ["$VENDOR_MAN_VERSION"], [Vendor man version])
-
-AC_DEFINE(NO_LIBCWRAPPER, 1, [Define to 1 if modules should avoid the libcwrapper])
-
-if test "x$DEBUGGING" = xyes; then
- AC_DEFINE(DEBUG, 1, [Enable debugging code])
-fi
-AM_CONDITIONAL(DEBUG, [test "x$DEBUGGING" = xyes])
-
-# If unittests aren't explicitly disabled, check for required support
-if test "x$UNITTESTS" != xno ; then
- PKG_CHECK_MODULES([GLIB], $LIBGLIB,
- [HAVE_GLIB=yes], [HAVE_GLIB=no])
-
- # Check if linker supports -wrap, passed via compiler flags
- # When cross-compiling, reports no, since unit tests run from
- # "make check", so would be running on build machine, not target
- AC_MSG_CHECKING([whether the linker supports -wrap])
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS -Wl,-wrap,exit"
- AC_RUN_IFELSE([AC_LANG_PROGRAM([[
- void __wrap_exit (int s)
- {
- __real_exit (0);
- }]],
- [[exit (1);]])],
- [linker_can_wrap="yes"],
- [linker_can_wrap="no"],
- [linker_can_wrap="no"])
- AC_MSG_RESULT([$linker_can_wrap])
- LDFLAGS="$save_LDFLAGS"
-fi
-
-if test "x$UNITTESTS" = xauto; then
- if test "x$HAVE_GLIB" = xyes && test "x$linker_can_wrap" = xyes; then
- UNITTESTS=yes
- else
- UNITTESTS=no
- fi
-fi
-if test "x$UNITTESTS" = xyes; then
- if test "x$HAVE_GLIB" = xno; then
- AC_MSG_ERROR([glib required to build unit tests])
- fi
- if test "x$linker_can_wrap" = xno; then
- AC_MSG_ERROR([ld -wrap support required to build unit tests])
- fi
- AC_DEFINE(UNITTESTS, 1, [Enable unit tests])
- AC_SUBST([GLIB_LIBS])
- AC_SUBST([GLIB_CFLAGS])
-fi
-AM_CONDITIONAL(UNITTESTS, [test "x$UNITTESTS" = xyes])
-
-AC_DEFINE(XTEST, 1, [Support XTest extension])
-AC_DEFINE(XSYNC, 1, [Support XSync extension])
-AC_DEFINE(XCMISC, 1, [Support XCMisc extension])
-AC_DEFINE(BIGREQS, 1, [Support BigRequests extension])
-
-if test "x$SPECIAL_DTRACE_OBJECTS" = "xyes" ; then
- DIX_LIB='$(top_builddir)/dix/dix.O'
- OS_LIB='$(top_builddir)/os/os.O $(SHA1_LIBS) $(DLOPEN_LIBS)'
-else
- DIX_LIB='$(top_builddir)/dix/libdix.la'
- OS_LIB='$(top_builddir)/os/libos.la'
-fi
-AC_SUBST([DIX_LIB])
-AC_SUBST([OS_LIB])
-
-MAIN_LIB='$(top_builddir)/dix/libmain.la'
-AC_SUBST([MAIN_LIB])
-
-MI_LIB='$(top_builddir)/mi/libmi.la'
-MI_EXT_LIB='$(top_builddir)/mi/libmiext.la'
-MI_INC='-I$(top_srcdir)/mi'
-FB_LIB='$(top_builddir)/fb/libfb.la'
-FB_INC='-I$(top_srcdir)/fb'
-MIEXT_SHADOW_INC='-I$(top_srcdir)/miext/shadow'
-MIEXT_SHADOW_LIB='$(top_builddir)/miext/shadow/libshadow.la'
-MIEXT_SYNC_INC='-I$(top_srcdir)/miext/sync'
-MIEXT_SYNC_LIB='$(top_builddir)/miext/sync/libsync.la'
-CORE_INCS='-I$(top_srcdir)/include -I$(top_builddir)/include'
-
-# SHA1 hashing
-AC_ARG_WITH([sha1],
- [AS_HELP_STRING([--with-sha1=libc|libmd|libgcrypt|libcrypto|libsha1|CommonCrypto],
- [choose SHA1 implementation])])
-AC_CHECK_FUNC([SHA1Init], [HAVE_SHA1_IN_LIBC=yes])
-if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_LIBC" = xyes; then
- with_sha1=libc
-fi
-if test "x$with_sha1" = xlibc && test "x$HAVE_SHA1_IN_LIBC" != xyes; then
- AC_MSG_ERROR([libc requested but not found])
-fi
-if test "x$with_sha1" = xlibc; then
- AC_DEFINE([HAVE_SHA1_IN_LIBC], [1],
- [Use libc SHA1 functions])
- SHA1_LIBS=""
-fi
-AC_CHECK_FUNC([CC_SHA1_Init], [HAVE_SHA1_IN_COMMONCRYPTO=yes])
-if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_COMMONCRYPTO" = xyes; then
- with_sha1=CommonCrypto
-fi
-if test "x$with_sha1" = xCommonCrypto && test "x$HAVE_SHA1_IN_COMMONCRYPTO" != xyes; then
- AC_MSG_ERROR([CommonCrypto requested but not found])
-fi
-if test "x$with_sha1" = xCommonCrypto; then
- AC_DEFINE([HAVE_SHA1_IN_COMMONCRYPTO], [1],
- [Use CommonCrypto SHA1 functions])
- SHA1_LIBS=""
-fi
-AC_CHECK_LIB([md], [SHA1Init], [HAVE_LIBMD=yes])
-if test "x$with_sha1" = x && test "x$HAVE_LIBMD" = xyes; then
- with_sha1=libmd
-fi
-if test "x$with_sha1" = xlibmd && test "x$HAVE_LIBMD" != xyes; then
- AC_MSG_ERROR([libmd requested but not found])
-fi
-if test "x$with_sha1" = xlibmd; then
- AC_DEFINE([HAVE_SHA1_IN_LIBMD], [1],
- [Use libmd SHA1 functions])
- SHA1_LIBS=-lmd
-fi
-PKG_CHECK_MODULES([LIBSHA1], [libsha1], [HAVE_LIBSHA1=yes], [HAVE_LIBSHA1=no])
-if test "x$with_sha1" = x && test "x$HAVE_LIBSHA1" = xyes; then
- with_sha1=libsha1
-fi
-if test "x$with_sha1" = xlibsha1 && test "x$HAVE_LIBSHA1" != xyes; then
- AC_MSG_ERROR([libsha1 requested but not found])
-fi
-if test "x$with_sha1" = xlibsha1; then
- AC_DEFINE([HAVE_SHA1_IN_LIBSHA1], [1],
- [Use libsha1 for SHA1])
- SHA1_LIBS=-lsha1
-fi
-AC_CHECK_LIB([gcrypt], [gcry_md_open], [HAVE_LIBGCRYPT=yes])
-if test "x$with_sha1" = x && test "x$HAVE_LIBGCRYPT" = xyes; then
- with_sha1=libgcrypt
-fi
-if test "x$with_sha1" = xlibgcrypt && test "x$HAVE_LIBGCRYPT" != xyes; then
- AC_MSG_ERROR([libgcrypt requested but not found])
-fi
-if test "x$with_sha1" = xlibgcrypt; then
- AC_DEFINE([HAVE_SHA1_IN_LIBGCRYPT], [1],
- [Use libgcrypt SHA1 functions])
- SHA1_LIBS=-lgcrypt
-fi
-# We don't need all of the OpenSSL libraries, just libcrypto
-AC_CHECK_LIB([crypto], [SHA1_Init], [HAVE_LIBCRYPTO=yes])
-PKG_CHECK_MODULES([OPENSSL], [openssl], [HAVE_OPENSSL_PKC=yes],
- [HAVE_OPENSSL_PKC=no])
-if test "x$HAVE_LIBCRYPTO" = xyes || test "x$HAVE_OPENSSL_PKC" = xyes; then
- if test "x$with_sha1" = x; then
- with_sha1=libcrypto
- fi
-else
- if test "x$with_sha1" = xlibcrypto; then
- AC_MSG_ERROR([OpenSSL libcrypto requested but not found])
- fi
-fi
-if test "x$with_sha1" = xlibcrypto; then
- if test "x$HAVE_LIBCRYPTO" = xyes; then
- SHA1_LIBS=-lcrypto
- else
- SHA1_LIBS="$OPENSSL_LIBS"
- SHA1_CFLAGS="$OPENSSL_CFLAGS"
- fi
-fi
-AC_MSG_CHECKING([for SHA1 implementation])
-if test "x$with_sha1" = x; then
- AC_MSG_ERROR([No suitable SHA1 implementation found])
-fi
-AC_MSG_RESULT([$with_sha1])
-AC_SUBST(SHA1_LIBS)
-AC_SUBST(SHA1_CFLAGS)
-
-PKG_CHECK_MODULES([XSERVERCFLAGS], [$REQUIRED_MODULES $REQUIRED_LIBS])
-PKG_CHECK_MODULES([XSERVERLIBS], [$REQUIRED_LIBS])
-
-# Autotools has some unfortunate issues with library handling. In order to
-# get a server to rebuild when a dependency in the tree is changed, it must
-# be listed in SERVERNAME_DEPENDENCIES. However, no system libraries may be
-# listed there, or some versions of autotools will break (especially if a -L
-# is required to find the library). So, we keep two sets of libraries
-# detected: NAMESPACE_LIBS for in-tree libraries to be linked against, which
-# will go into the _DEPENDENCIES and _LDADD of the server, and
-# NAMESPACE_SYS_LIBS which will go into only the _LDADD. The
-# NAMESPACEMODULES_LIBS detected from pkgconfig should always go in
-# NAMESPACE_SYS_LIBS.
-#
-# XSERVER_LIBS is the set of in-tree libraries which all servers require.
-# XSERVER_SYS_LIBS is the set of out-of-tree libraries which all servers
-# require.
-#
-XSERVER_CFLAGS="${XSERVER_CFLAGS} ${XSERVERCFLAGS_CFLAGS}"
-XSERVER_LIBS="$DIX_LIB $MI_LIB $OS_LIB"
-XSERVER_SYS_LIBS="${XSERVERLIBS_LIBS} ${SYS_LIBS} ${LIBS}"
-AC_SUBST([XSERVER_LIBS])
-AC_SUBST([XSERVER_SYS_LIBS])
-
-UTILS_SYS_LIBS="${SYS_LIBS}"
-AC_SUBST([UTILS_SYS_LIBS])
-
-# The Xorg binary needs to export symbols so that they can be used from modules
-# Some platforms require extra flags to do this. libtool should set the
-# necessary flags for each platform when -export-dynamic is passed to it.
-LD_EXPORT_SYMBOLS_FLAG="-export-dynamic"
-AC_SUBST([LD_EXPORT_SYMBOLS_FLAG])
-
-dnl Imake defines SVR4 on SVR4 systems, and many files check for it, so
-dnl we need to replicate that here until those can all be fixed
-AC_MSG_CHECKING([if SVR4 needs to be defined])
-AC_EGREP_CPP([I_AM_SVR4],[
-#if defined(SVR4) || defined(__svr4__) || defined(__SVR4)
- I_AM_SVR4
-#endif
-],[
-AC_DEFINE([SVR4],1,[Define to 1 on systems derived from System V Release 4])
-AC_MSG_RESULT([yes])], AC_MSG_RESULT([no]))
-
-XSERVER_CFLAGS="$XSERVER_CFLAGS $CORE_INCS $XEXT_INC $COMPOSITE_INC $DAMAGE_INC $FIXES_INC $XI_INC $MI_INC $MIEXT_SYNC_INC $MIEXT_SHADOW_INC $MIEXT_LAYER_INC $MIEXT_DAMAGE_INC $RENDER_INC $RANDR_INC $FB_INC"
-
-dnl ---------------------------------------------------------------------------
-dnl DDX section.
-dnl ---------------------------------------------------------------------------
-
-dnl Xvfb DDX
-
-AC_MSG_CHECKING([whether to build Xvfb DDX])
-AC_MSG_RESULT([$XVFB])
-AM_CONDITIONAL(XVFB, [test "x$XVFB" = xyes])
-
-if test "x$XVFB" = xyes; then
- XVFB_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB"
- XVFB_SYS_LIBS="$XVFBMODULES_LIBS $GLX_SYS_LIBS"
- AC_SUBST([XVFB_LIBS])
- AC_SUBST([XVFB_SYS_LIBS])
-fi
-
-
-dnl Xnest DDX
-
-PKG_CHECK_MODULES(XNESTMODULES, [$LIBXEXT x11 xau $XDMCP_MODULES], [have_xnest=yes], [have_xnest=no])
-AC_MSG_CHECKING([whether to build Xnest DDX])
-if test "x$XNEST" = xauto; then
- XNEST="$have_xnest"
-fi
-AC_MSG_RESULT([$XNEST])
-AM_CONDITIONAL(XNEST, [test "x$XNEST" = xyes])
-
-if test "x$XNEST" = xyes; then
- if test "x$have_xnest" = xno; then
- AC_MSG_ERROR([Xnest build explicitly requested, but required modules not found.])
- fi
- XNEST_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $DIX_LIB $MAIN_LIB $OS_LIB"
- XNEST_SYS_LIBS="$XNESTMODULES_LIBS $GLX_SYS_LIBS"
- AC_SUBST([XNEST_LIBS])
- AC_SUBST([XNEST_SYS_LIBS])
-fi
-
-
-dnl Xorg DDX
-
-AC_MSG_CHECKING([whether to build Xorg DDX])
-if test "x$XORG" = xauto; then
- XORG="yes"
- case $host_os in
- cygwin*) XORG="no" ;;
- darwin*) XORG="no" ;;
- esac
-fi
-AC_MSG_RESULT([$XORG])
-
-xorg_bus_linuxpci=no
-xorg_bus_bsdpci=no
-xorg_bus_sparc=no
-
-if test "x$XORG" = xyes; then
- XORG_DDXINCS='-I$(top_srcdir)/hw/xfree86 -I$(top_srcdir)/hw/xfree86/include -I$(top_srcdir)/hw/xfree86/common'
- XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
- XORG_INCS="$XORG_DDXINCS $XORG_OSINCS"
- XORG_CFLAGS="$XORGSERVER_CFLAGS -DHAVE_XORG_CONFIG_H"
- XORG_LIBS="$COMPOSITE_LIB $FIXES_LIB $XEXTXORG_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB"
-
- dnl ==================================================================
- dnl symbol visibility
- symbol_visibility=
- have_visibility=disabled
- if test x$SYMBOL_VISIBILITY != xno; then
- AC_MSG_CHECKING(for symbol visibility support)
- if test x$GCC = xyes; then
- VISIBILITY_CFLAGS="-fvisibility=hidden"
- else
- AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
- if test x$SUNCC = xyes; then
- VISIBILITY_CFLAGS="-xldscope=hidden"
- else
- have_visibility=no
- fi
- fi
- if test x$have_visibility != xno; then
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
- AC_TRY_COMPILE(
- [#include <X11/Xfuncproto.h>
- extern _X_HIDDEN int hidden_int;
- extern _X_EXPORT int public_int;
- extern _X_HIDDEN int hidden_int_func(void);
- extern _X_EXPORT int public_int_func(void);],
- [],
- have_visibility=yes,
- have_visibility=no)
- CFLAGS=$save_CFLAGS
- fi
- AC_MSG_RESULT([$have_visibility])
- if test x$have_visibility != xno; then
- symbol_visibility=$VISIBILITY_CFLAGS
- XORG_CFLAGS="$XORG_CFLAGS $VISIBILITY_CFLAGS"
- XSERVER_CFLAGS="$XSERVER_CFLAGS $VISIBILITY_CFLAGS"
- fi
- fi
- dnl added to xorg-server.pc
- AC_SUBST([symbol_visibility])
- dnl ===================================================================
-
- PKG_CHECK_MODULES([PCIACCESS], $LIBPCIACCESS)
- SAVE_LIBS=$LIBS
- SAVE_CFLAGS=$CFLAGS
- CFLAGS=$PCIACCESS_CFLAGS
- LIBS=$PCIACCESS_LIBS
- AC_CHECK_FUNCS([pci_system_init_dev_mem])
- AC_CHECK_FUNCS([pci_device_enable])
- AC_CHECK_FUNCS([pci_device_is_boot_vga])
- AC_CHECK_FUNCS([pci_device_vgaarb_init])
- LIBS=$SAVE_LIBS
- CFLAGS=$SAVE_CFLAGS
- XORG_SYS_LIBS="$XORG_SYS_LIBS $PCIACCESS_LIBS $GLX_SYS_LIBS"
- XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS"
-
- case $host_os in
- linux*)
- if test "x$LNXAPM" = xyes; then
- XORG_CFLAGS="$XORG_CFLAGS -DXF86PM"
- fi
- XORG_OS="linux"
- XORG_OS_SUBDIR="linux"
- xorg_bus_linuxpci="yes"
- linux_acpi="no"
- case $host_cpu in
- ia64*)
- linux_ia64=yes
- linux_acpi="yes"
- ;;
- alpha*)
- linux_alpha=yes
- ;;
- i*86|amd64*|x86_64*)
- linux_acpi="yes"
- ;;
- *)
- ;;
- esac
- ;;
- freebsd* | kfreebsd*-gnu | dragonfly*)
- XORG_OS="freebsd"
- XORG_OS_SUBDIR="bsd"
- xorg_bus_bsdpci="yes"
- ;;
- netbsd*)
- XORG_OS="netbsd"
- XORG_OS_SUBDIR="bsd"
- xorg_bus_bsdpci="yes"
- ;;
- openbsd*)
- if test "x$ac_cv_BSD_APM" = xyes \
- -o "x$ac_cv_BSD_KQUEUE_APM" = xyes; then
- XORG_CFLAGS="$XORG_CFLAGS -DXF86PM"
- fi
- XORG_OS="openbsd"
- XORG_OS_SUBDIR="bsd"
- xorg_bus_bsdpci="yes"
- ;;
- solaris*)
- XORG_OS="solaris"
- XORG_OS_SUBDIR="solaris"
- XORG_CFLAGS="$XORG_CFLAGS -DXF86PM"
- # Use the same stubs as BSD for old functions, since we now
- # use libpciaccess for PCI
- xorg_bus_bsdpci="yes"
- AC_CHECK_HEADERS([sys/kd.h])
- AC_CHECK_HEADERS([sys/vt.h], [solaris_vt=yes], [solaris_vt=no])
- # Check for minimum supported release
- AC_MSG_CHECKING([Solaris version])
- OS_MINOR=`echo ${host_os}|$SED -e 's/^.*solaris2\.//' -e s'/\..*$//'`
- if test "${OS_MINOR}" -ge 7 ; then
- AC_MSG_RESULT(Solaris ${OS_MINOR})
- else
- AC_MSG_RESULT(Solaris `echo ${host_os}|$SED -e 's/^.*solaris//`)
- fi
- if test "${OS_MINOR}" -lt 8 ; then
- AC_MSG_ERROR([This release no longer supports Solaris versions older than Solaris 8.])
- fi
- AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
- if test "x$SUNCC" = "xyes"; then
- solaris_asm_inline="yes"
- fi
- AC_CHECK_DECL([_LP64], [SOLARIS_64="yes"], [SOLARIS_64="no"])
-
- case $host_cpu in
- sparc*)
- SOLARIS_INOUT_ARCH="sparcv8plus"
- ;;
- i*86)
- if test x$SOLARIS_64 = xyes ; then
- SOLARIS_INOUT_ARCH="amd64"
- else
- SOLARIS_INOUT_ARCH="ia32"
- fi
- ;;
- *)
- AC_MSG_ERROR([Unsupported Solaris platform. Only SPARC & x86 \
- are supported on Solaris in this release. If you are \
- interested in porting Xorg to your platform, please email \
- xorg@lists.freedesktop.org.]) ;;
- esac
- AC_SUBST([SOLARIS_INOUT_ARCH])
- if test x$solaris_asm_inline = xyes ; then
- SOLARIS_ASM_CFLAGS='$(top_srcdir)/hw/xfree86/os-support/solaris/solaris-$(SOLARIS_INOUT_ARCH).il'
- XORG_CFLAGS="${XORG_CFLAGS} "'$(SOLARIS_ASM_CFLAGS)'
- fi
- AC_SUBST([SOLARIS_ASM_CFLAGS])
- if test "x$SUPPORT_PC98" = xauto; then
- SUPPORT_PC98="no"
- fi
- ;;
- gnu*)
- XORG_OS="gnu"
- XORG_OS_SUBDIR="hurd"
- # Use the same stubs as BSD for old functions, since we now
- # use libpciaccess for PCI
- xorg_bus_bsdpci="yes"
- ;;
- *)
- XORG_OS="unknown"
- XORG_OS_SUBDIR="unknown"
- AC_MSG_ERROR([m4_text_wrap(m4_join([ ],
- [Your OS is unknown. Xorg currently only supports Linux,],
- [Free/Open/Net/DragonFlyBSD, Solaris/OpenSolaris, & GNU Hurd.],
- [If you are interested in porting Xorg to your platform,],
- [please email xorg@lists.freedesktop.org.]))])
- ;;
- esac
-
- case $host_cpu in
- sparc*)
- xorg_bus_sparc="yes"
- ;;
- i*86)
- if test "x$SUPPORT_PC98" = xauto; then
- SUPPORT_PC98="yes"
- fi
- ;;
- esac
-
- if test "x$SUPPORT_PC98" = xauto; then
- SUPPORT_PC98="no"
- fi
- if test "x$SUPPORT_PC98" = xyes; then
- AC_DEFINE(SUPPORT_PC98, 1, [Support PC98])
- fi
- if test "x$XORG_OS_PCI" = x ; then
- XORG_OS_PCI=$XORG_OS
- fi
- if test "x$DGA" = xauto; then
- PKG_CHECK_MODULES(DGA, $DGAPROTO, [DGA=yes], [DGA=no])
- fi
- if test "x$DGA" = xyes; then
- XORG_MODULES="$XORG_MODULES $DGAPROTO"
- PKG_CHECK_MODULES(DGA, $DGAPROTO)
- AC_DEFINE(DGA, 1, [Support DGA extension])
- AC_DEFINE(XFreeXDGA, 1, [Build XDGA support])
- fi
-
- if test "x$XF86VIDMODE" = xauto; then
- PKG_CHECK_MODULES(XF86VIDMODE, $VIDMODEPROTO, [XF86VIDMODE=yes], [XF86VIDMODE=no])
- fi
- if test "x$XF86VIDMODE" = xyes; then
- XORG_MODULES="$XORG_MODULES $VIDMODEPROTO"
- PKG_CHECK_MODULES(XF86VIDMODE, $VIDMODEPROTO)
- AC_DEFINE(XF86VIDMODE, 1, [Support XFree86 Video Mode extension])
- fi
-
- if test -n "$XORG_MODULES"; then
- PKG_CHECK_MODULES(XORG_MODULES, [$XORG_MODULES])
- XORG_CFLAGS="$XORG_CFLAGS $XORG_MODULES_CFLAGS"
- XORG_SYS_LIBS="$XORG_SYS_LIBS $XORG_MODULES_LIBS"
- fi
-
- AC_SUBST([XORG_LIBS])
- AC_SUBST([XORG_SYS_LIBS])
- AC_SUBST([XORG_INCS])
- AC_SUBST([XORG_OS])
- AC_SUBST([XORG_OS_SUBDIR])
-
- AC_PATH_PROG(PERL, perl, no)
- dnl unlikely as this may be ...
- if test "x$PERL" = xno; then
- AC_MSG_ERROR([Perl is required to build the XFree86/Xorg DDX.])
- fi
- AC_SUBST(PERL)
-
- AC_SUBST([XORG_CFLAGS])
-
- dnl these only go in xorg-config.h
- XF86CONFIGFILE="xorg.conf"
- XF86CONFIGDIR="xorg.conf.d"
- AC_SUBST(XF86CONFIGDIR)
- CONFIGFILE="$sysconfdir/$XF86CONFIGFILE"
- LOGPREFIX="$logdir/Xorg."
- AC_DEFINE(XORG_SERVER, 1, [Building Xorg server])
- AC_DEFINE(XORGSERVER, 1, [Building Xorg server])
- AC_DEFINE(XFree86Server, 1, [Building XFree86 server])
- AC_DEFINE(XFree86LOADER, 1, [Building loadable XFree86 server])
- AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
- AC_DEFINE(NEED_XF86_TYPES, 1, [Need XFree86 typedefs])
- AC_DEFINE(NEED_XF86_PROTOTYPES, 1, [Need XFree86 helper functions])
- AC_DEFINE(__XSERVERNAME__, "Xorg", [Name of X server])
- AC_DEFINE_DIR(__XCONFIGFILE__, XF86CONFIGFILE, [Name of configuration file])
- AC_DEFINE_DIR(XF86CONFIGFILE, XF86CONFIGFILE, [Name of configuration file])
- AC_DEFINE_DIR(__XCONFIGDIR__, XF86CONFIGDIR, [Name of configuration directory])
- AC_DEFINE_DIR(DEFAULT_MODULE_PATH, moduledir, [Default module search path])
- AC_DEFINE_DIR(DEFAULT_LIBRARY_PATH, libdir, [Default library install path])
- AC_DEFINE_DIR(DEFAULT_LOGPREFIX, LOGPREFIX, [Default log location])
- AC_DEFINE_UNQUOTED(__VENDORDWEBSUPPORT__, ["$VENDOR_WEB"], [Vendor web address for support])
- AC_DEFINE(XSERVER_LIBPCIACCESS, 1, [Use libpciaccess for all pci manipulation])
- if test "x$VGAHW" = xyes; then
- AC_DEFINE(WITH_VGAHW, 1, [Building vgahw module])
- fi
-
- driverdir="$moduledir/drivers"
- AC_SUBST([moduledir])
- AC_SUBST([driverdir])
- sdkdir="$includedir/xorg"
- extdir="$includedir/X11/extensions"
- sysconfigdir="$datadir/X11/$XF86CONFIGDIR"
- AC_SUBST([sdkdir])
- AC_SUBST([extdir])
- AC_SUBST([sysconfigdir])
- AC_SUBST([logdir])
-
- # stuff the ABI versions into the pc file too
- extract_abi() {
- grep ^.define.*${1}_VERSION ${srcdir}/hw/xfree86/common/xf86Module.h | tr '(),' ' .' | awk '{ print $4$5 }'
- }
- abi_ansic=`extract_abi ANSIC`
- abi_videodrv=`extract_abi VIDEODRV`
- abi_xinput=`extract_abi XINPUT`
- abi_extension=`extract_abi EXTENSION`
- AC_SUBST([abi_ansic])
- AC_SUBST([abi_videodrv])
- AC_SUBST([abi_xinput])
- AC_SUBST([abi_extension])
-fi
-AM_CONDITIONAL([XORG], [test "x$XORG" = xyes])
-AM_CONDITIONAL([XORG_BUS_LINUXPCI], [test "x$xorg_bus_linuxpci" = xyes])
-AM_CONDITIONAL([XORG_BUS_BSDPCI], [test "x$xorg_bus_bsdpci" = xyes])
-AM_CONDITIONAL([XORG_BUS_SPARC], [test "x$xorg_bus_sparc" = xyes])
-AM_CONDITIONAL([LINUX_IA64], [test "x$linux_ia64" = xyes])
-AM_CONDITIONAL([LINUX_ALPHA], [test "x$linux_alpha" = xyes])
-AM_CONDITIONAL([LNXACPI], [test "x$linux_acpi" = xyes])
-AM_CONDITIONAL([SOLARIS_ASM_INLINE], [test "x$solaris_asm_inline" = xyes])
-AM_CONDITIONAL([SOLARIS_VT], [test "x$solaris_vt" = xyes])
-AM_CONDITIONAL([DGA], [test "x$DGA" = xyes])
-AM_CONDITIONAL([XF86VIDMODE], [test "x$XF86VIDMODE" = xyes])
-
-dnl XWin DDX
-
-AC_MSG_CHECKING([whether to build XWin DDX])
-if test "x$XWIN" = xauto; then
- case $host_os in
- cygwin*) XWIN="yes" ;;
- mingw*) XWIN="yes" ;;
- *) XWIN="no" ;;
- esac
-fi
-AC_MSG_RESULT([$XWIN])
-
-if test "x$XWIN" = xyes; then
- AC_DEFINE_DIR(SYSCONFDIR, sysconfdir, [Location of system.XWinrc])
- AC_DEFINE_DIR(DEFAULT_LOGDIR, logdir, [Default log location])
- AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
- AC_DEFINE_UNQUOTED(__VENDORDWEBSUPPORT__, ["$VENDOR_WEB"], [Vendor web address for support])
- AC_CHECK_TOOL(WINDRES, windres)
-
- PKG_CHECK_MODULES([XWINMODULES],[x11 xdmcp xau])
-
- if test "x$WINDOWSWM" = xauto; then
- PKG_CHECK_EXISTS($WINDOWSWMPROTO, [WINDOWSWM=yes], [WINDOWSWM=no])
- fi
- if test "x$WINDOWSWM" = xyes ; then
- PKG_CHECK_MODULES(WINDOWSWM, $WINDOWSWMPROTO)
- XWINMODULES_CFLAGS="$XWINMODULES_CFLAGS $WINDOWSWM_CFLAGS"
- AC_DEFINE(ROOTLESS,1,[Build Rootless code])
- fi
-
- case $host_os in
- cygwin*)
- XWIN_SERVER_NAME=XWin
- AC_DEFINE(HAS_DEVWINDOWS,1,[Cygwin has /dev/windows for signaling new win32 messages])
- ;;
- mingw*)
- XWIN_SERVER_NAME=Xming
- AC_DEFINE(RELOCATE_PROJECTROOT,1,[Make PROJECT_ROOT relative to the xserver location])
- AC_DEFINE(HAS_WINSOCK,1,[Use Windows sockets])
- XWIN_SYS_LIBS=-lwinsock2
- ;;
- esac
- XWIN_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $RANDR_LIB $RENDER_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $OS_LIB"
- XWIN_SYS_LIBS="$XWIN_SYS_LIBS $XWINMODULES_LIBS"
- AC_SUBST(XWIN_LIBS)
- AC_SUBST(XWIN_SERVER_NAME)
- AC_SUBST(XWIN_SYS_LIBS)
-
- if test "x$DEBUGGING" = xyes; then
- AC_DEFINE(CYGDEBUG, 1, [Simple debug messages])
- AC_DEFINE(CYGWINDOWING_DEBUG, 1, [Debug messages for window handling])
- AC_DEFINE(CYGMULTIWINDOW_DEBUG, 1, [Debug window manager])
- fi
-
- AC_DEFINE(DDXOSVERRORF, 1, [Use OsVendorVErrorF])
- AC_DEFINE(DDXBEFORERESET, 1, [Use ddxBeforeReset ])
-fi
-AM_CONDITIONAL(XWIN, [test "x$XWIN" = xyes])
-AM_CONDITIONAL(XWIN_MULTIWINDOW, [test "x$XWIN" = xyes])
-AM_CONDITIONAL(XWIN_MULTIWINDOWEXTWM, [test "x$XWIN" = xyes && test "x$WINDOWSWM" = xyes])
-AM_CONDITIONAL(XWIN_CLIPBOARD, [test "x$XWIN" = xyes])
-AM_CONDITIONAL(XWIN_GLX_WINDOWS, [test "x$XWIN" = xyes && false])
-AM_CONDITIONAL(XWIN_NATIVEGDI, [test "x$XWIN" = xyes])
-AM_CONDITIONAL(XWIN_PRIMARYFB, [test "x$XWIN" = xyes])
-AM_CONDITIONAL(XWIN_RANDR, [test "x$XWIN" = xyes])
-AM_CONDITIONAL(XWIN_XV, [test "x$XWIN" = xyes && test "x$XV" = xyes])
-
-dnl Darwin / OS X DDX
-if test "x$XQUARTZ" = xyes; then
- AC_DEFINE(XQUARTZ,1,[Have Quartz])
- AC_DEFINE(ROOTLESS,1,[Build Rootless code])
-
- DARWIN_LIBS="$MI_LIB $OS_LIB $DIX_LIB $MAIN_LIB $FB_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $XPSTUBS_LIB"
- AC_SUBST([DARWIN_LIBS])
-
- AC_CHECK_LIB([Xplugin],[xp_init],[:])
-
- CFLAGS="${CFLAGS} -DROOTLESS_SAFEALPHA -DNO_ALLOCA"
-
- PKG_CHECK_MODULES(XPBPROXY, $APPLEWMPROTO $LIBAPPLEWM xfixes x11)
-
- if test "x$XQUARTZ_SPARKLE" = xyes ; then
- AC_DEFINE(XQUARTZ_SPARKLE,1,[Support application updating through sparkle.])
- fi
-
- if test "x$STANDALONE_XPBPROXY" = xyes ; then
- AC_DEFINE(STANDALONE_XPBPROXY,1,[Build a standalone xpbproxy])
- fi
-fi
-
-# Support for objc in autotools is minimal and not documented.
-OBJC='$(CC)'
-OBJCLD='$(CCLD)'
-OBJCLINK='$(LINK)'
-OBJCFLAGS='$(CFLAGS)'
-AC_SUBST([OBJC])
-AC_SUBST([OBJCCLD])
-AC_SUBST([OBJCLINK])
-AC_SUBST([OBJCFLAGS])
-# internal, undocumented automake func follows :(
-_AM_DEPENDENCIES([OBJC])
-AM_CONDITIONAL(XQUARTZ, [test "x$XQUARTZ" = xyes])
-AM_CONDITIONAL(XQUARTZ_SPARKLE, [test "x$XQUARTZ_SPARKLE" != "xno"])
-AM_CONDITIONAL(STANDALONE_XPBPROXY, [test "x$STANDALONE_XPBPROXY" = xyes])
-
-dnl DMX DDX
-PKG_CHECK_MODULES(
- [DMXMODULES],
- [xmuu $LIBXEXT x11 xrender xfixes $LIBXI $DMXPROTO xau $XDMCP_MODULES],
- [PKG_CHECK_MODULES(
- [XDMXCONFIG_DEP],
- [xaw7 xmu xt xpm x11],
- [have_dmx=yes],
- [have_dmx=no])],
- [have_dmx=no])
-AC_MSG_CHECKING([whether to build Xdmx DDX])
-if test "x$DMX" = xauto; then
- DMX="$have_dmx"
- case $host_os in
- cygwin*) DMX="no" ;;
- darwin*) DMX="no" ;;
- esac
-fi
-AC_MSG_RESULT([$DMX])
-AM_CONDITIONAL(DMX, [test "x$DMX" = xyes])
-
-if test "x$DMX" = xyes; then
- if test "x$have_dmx" = xno; then
- AC_MSG_ERROR([Xdmx build explicitly requested, but required
- modules not found.])
- fi
- DMX_INCLUDES="$XEXT_INC $RENDER_INC $RECORD_INC"
- XDMX_CFLAGS="$DMXMODULES_CFLAGS"
- XDMX_LIBS="$FB_LIB $MI_LIB $XEXT_LIB $RENDER_LIB $RECORD_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $MIEXT_SYNC_LIB $MIEXT_SHADOW_LIB $MIEXT_DAMAGE_LIB $COMPOSITE_LIB $DAMAGE_LIB $MAIN_LIB $DIX_LIB $CONFIG_LIB $OS_LIB $FIXES_LIB"
- XDMX_SYS_LIBS="$DMXMODULES_LIBS"
- AC_SUBST([XDMX_CFLAGS])
- AC_SUBST([XDMX_LIBS])
- AC_SUBST([XDMX_SYS_LIBS])
-
-dnl USB sources in DMX require <linux/input.h>
- AC_CHECK_HEADER([linux/input.h], DMX_BUILD_USB="yes",
- DMX_BUILD_USB="no")
-dnl Linux sources in DMX require <linux/keyboard.h>
- AC_CHECK_HEADER([linux/keyboard.h], DMX_BUILD_LNX="yes",
- DMX_BUILD_LNX="no")
- AC_SUBST(XDMXCONFIG_DEP_CFLAGS)
- AC_SUBST(XDMXCONFIG_DEP_LIBS)
- PKG_CHECK_MODULES([DMXEXAMPLES_DEP], [$LIBDMX $LIBXEXT x11])
- AC_SUBST(DMXEXAMPLES_DEP_LIBS)
- PKG_CHECK_MODULES([DMXXMUEXAMPLES_DEP], [$LIBDMX xmu $LIBXEXT x11])
- AC_SUBST(DMXXMUEXAMPLES_DEP_LIBS)
- PKG_CHECK_MODULES([DMXXIEXAMPLES_DEP], [$LIBDMX $LIBXI $LIBXEXT x11])
- AC_SUBST(DMXXIEXAMPLES_DEP_LIBS)
- PKG_CHECK_MODULES([XTSTEXAMPLES_DEP], [$LIBXTST $LIBXEXT x11])
- AC_SUBST(XTSTEXAMPLES_DEP_LIBS)
- PKG_CHECK_MODULES([XRESEXAMPLES_DEP], [xres $LIBXEXT x11])
- AC_SUBST(XRESEXAMPLES_DEP_LIBS)
- PKG_CHECK_MODULES([X11EXAMPLES_DEP], [$LIBXEXT x11])
- AC_SUBST(X11EXAMPLES_DEP_LIBS)
-
-fi
-AM_CONDITIONAL([DMX_BUILD_LNX], [test "x$DMX_BUILD_LNX" = xyes])
-AM_CONDITIONAL([DMX_BUILD_USB], [test "x$DMX_BUILD_USB" = xyes])
-
-dnl kdrive DDX
-
-XEPHYR_LIBS=
-XEPHYR_INCS=
-
-AM_CONDITIONAL(KDRIVE, [test x$KDRIVE = xyes])
-
-if test "$KDRIVE" = yes; then
- AC_DEFINE(KDRIVESERVER,1,[Build Kdrive X server])
- AC_DEFINE(KDRIVEDDXACTIONS,,[Build kdrive ddx])
-
- AC_CHECK_HEADERS([linux/fb.h])
- if test "$ac_cv_header_linux_fb_h" = yes && test "x$XFBDEV" = xauto; then
- XFBDEV=yes
- fi
-
- if test "x$XFBDEV" = xyes; then
- KDRIVEFBDEVLIB=yes
- AC_DEFINE(KDRIVEFBDEV, 1, [Build fbdev-based kdrive server])
- fi
-
-
- PKG_CHECK_MODULES([TSLIB], [tslib-0.0], [HAVE_TSLIB="yes"], [HAVE_TSLIB="no"])
- if test "x$HAVE_TSLIB" = xno; then
- AC_CHECK_LIB(ts, ts_open, [
- HAVE_TSLIB="yes"
- TSLIB_LIBS="-lts"
- ])
- fi
-
- if test "xTSLIB" = xauto; then
- TSLIB="$HAVE_TSLIB"
- fi
-
- if test "x$TSLIB" = xyes; then
- if ! test "x$HAVE_TSLIB" = xyes; then
- AC_MSG_ERROR([tslib must be installed to build the tslib driver. See http://tslib.berlios.de/])
- else
- AC_DEFINE(TSLIB, 1, [Have tslib support])
- fi
- fi
-
- if test "x$KDRIVE_KBD" = xyes; then
- AC_DEFINE(KDRIVE_KBD, 1, [Enable KDrive kbd driver])
- fi
- if test "x$KDRIVE_EVDEV" = xyes; then
- AC_DEFINE(KDRIVE_EVDEV, 1, [Enable KDrive evdev driver])
- fi
- if test "x$KDRIVE_MOUSE" = xyes; then
- AC_DEFINE(KDRIVE_MOUSE, 1, [Enable KDrive mouse driver])
- fi
-
- XEPHYR_REQUIRED_LIBS="x11 $LIBXEXT xau xdmcp"
- if test "x$XV" = xyes; then
- XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS xv"
- fi
- if test "x$DRI" = xyes && test "x$GLX" = xyes; then
- XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS $LIBGL libdrm"
- fi
-
- PKG_CHECK_MODULES(XEPHYR, $XEPHYR_REQUIRED_LIBS, [xephyr="yes"], [xephyr="no"])
- if test "x$XEPHYR" = xauto; then
- XEPHYR=$xephyr
- fi
- if test "x$XEPHYR" = xyes && test "x$xephyr" = xno; then
- AC_MSG_ERROR([Xephyr dependencies missing])
- fi
-
- # Xephyr needs nanosleep() which is in librt on Solaris
- AC_CHECK_FUNC([nanosleep], [],
- AC_CHECK_LIB([rt], [nanosleep], XEPHYR_LIBS="$XEPHYR_LIBS -lrt"))
-
- # damage shadow extension glx (NOTYET) fb mi
- KDRIVE_INC='-I$(top_srcdir)/hw/kdrive/src'
- KDRIVE_PURE_INCS="$KDRIVE_INC $MIEXT_SYNC_INC $MIEXT_DAMAGE_INC $MIEXT_SHADOW_INC $XEXT_INC $FB_INC $MI_INC"
- KDRIVE_OS_INC='-I$(top_srcdir)/hw/kdrive/linux'
- KDRIVE_INCS="$KDRIVE_PURE_INCS $KDRIVE_OS_INC"
-
- KDRIVE_CFLAGS="$XSERVER_CFLAGS -DHAVE_KDRIVE_CONFIG_H $TSLIB_CFLAGS"
-
- KDRIVE_PURE_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $OS_LIB"
- KDRIVE_LIB='$(top_builddir)/hw/kdrive/src/libkdrive.la'
- case $host_os in
- *linux*)
- KDRIVE_OS_LIB='$(top_builddir)/hw/kdrive/linux/liblinux.la'
- KDRIVELINUX=yes
- if test "x$KDRIVE_EVDEV" = xauto; then
- KDRIVE_EVDEV=yes
- fi
- if test "x$KDRIVE_KBD" = xauto; then
- KDRIVE_KBD=yes
- fi
- if test "x$KDRIVE_MOUSE" = xauto; then
- KDRIVE_MOUSE=yes
- fi
- ;;
- *)
- if test "x$KDRIVE_EVDEV" = xauto; then
- KDRIVE_EVDEV=no
- fi
- if test "x$KDRIVE_KBD" = xauto; then
- KDRIVE_KBD=no
- fi
- if test "x$KDRIVE_MOUSE" = xauto; then
- KDRIVE_MOUSE=no
- fi
- ;;
- esac
- KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.la'
- KDRIVE_LOCAL_LIBS="$MAIN_LIB $DIX_LIB $KDRIVE_LIB $KDRIVE_STUB_LIB"
- KDRIVE_LOCAL_LIBS="$KDRIVE_LOCAL_LIBS $FB_LIB $MI_LIB $KDRIVE_PURE_LIBS"
- KDRIVE_LOCAL_LIBS="$KDRIVE_LOCAL_LIBS $KDRIVE_OS_LIB"
- KDRIVE_LIBS="$KDRIVE_LOCAL_LIBS $XSERVER_SYS_LIBS $GLX_SYS_LIBS $DLOPEN_LIBS $TSLIB_LIBS"
-
- AC_SUBST([XEPHYR_LIBS])
- AC_SUBST([XEPHYR_INCS])
-fi
-AC_SUBST([KDRIVE_INCS])
-AC_SUBST([KDRIVE_PURE_INCS])
-AC_SUBST([KDRIVE_CFLAGS])
-AC_SUBST([KDRIVE_PURE_LIBS])
-AC_SUBST([KDRIVE_LOCAL_LIBS])
-AC_SUBST([KDRIVE_LIBS])
-AM_CONDITIONAL(KDRIVELINUX, [test "x$KDRIVELINUX" = xyes])
-AM_CONDITIONAL(KDRIVE_EVDEV, [test "x$KDRIVE_EVDEV" = xyes])
-AM_CONDITIONAL(KDRIVE_KBD, [test "x$KDRIVE_KBD" = xyes])
-AM_CONDITIONAL(KDRIVE_MOUSE, [test "x$KDRIVE_MOUSE" = xyes])
-AM_CONDITIONAL(TSLIB, [test "x$HAVE_TSLIB" = xyes])
-AM_CONDITIONAL(KDRIVEFBDEV, [test "x$XFBDEV" = xyes])
-AM_CONDITIONAL(XEPHYR, [test "x$KDRIVE" = xyes && test "x$XEPHYR" = xyes])
-AM_CONDITIONAL(BUILD_KDRIVEFBDEVLIB, [test "x$KDRIVE" = xyes && test "x$KDRIVEFBDEVLIB" = xyes])
-AM_CONDITIONAL(XFAKESERVER, [test "x$KDRIVE" = xyes && test "x$XFAKE" = xyes])
-
-dnl and the rest of these are generic, so they're in config.h
-dnl
-dnl though, thanks to the passing of some significant amount of time, the
-dnl above is probably a complete fallacy, and you should not rely on it.
-dnl but this is still actually better than imake, honest. -daniels
-
-AC_TRY_COMPILE([
-#include <features.h>
-#ifndef __GLIBC__
-#error not glibc
-#endif
-], [], [AC_DEFINE(_GNU_SOURCE, 1,
- [ Enable GNU and other extensions to the C environment for glibc])])
-
-AC_DEFINE_DIR(PROJECTROOT, prefix, [Overall prefix])
-
-AC_SUBST([RELEASE_DATE])
-BUILD_DATE="`date +'%Y%m%d'`"
-AC_SUBST([BUILD_DATE])
-BUILD_TIME="`date +'1%H%M%S'`"
-AC_SUBST([BUILD_TIME])
-
-DIX_CFLAGS="-DHAVE_DIX_CONFIG_H $XSERVER_CFLAGS"
-
-AC_SUBST([DIX_CFLAGS])
-
-AC_SUBST([libdir])
-AC_SUBST([exec_prefix])
-AC_SUBST([prefix])
-
-AC_OUTPUT([
-Makefile
-glx/Makefile
-include/Makefile
-composite/Makefile
-damageext/Makefile
-dbe/Makefile
-dix/Makefile
-doc/Makefile
-doc/man/Makefile
-doc/xml/Makefile
-doc/xml/dtrace/Makefile
-doc/xml/xserver.ent
-fb/Makefile
-record/Makefile
-config/Makefile
-mi/Makefile
-miext/Makefile
-miext/sync/Makefile
-miext/damage/Makefile
-miext/shadow/Makefile
-miext/cw/Makefile
-miext/rootless/Makefile
-os/Makefile
-randr/Makefile
-render/Makefile
-xkb/Makefile
-Xext/Makefile
-Xi/Makefile
-xfixes/Makefile
-exa/Makefile
-hw/Makefile
-hw/xfree86/Makefile
-hw/xfree86/common/Makefile
-hw/xfree86/common/xf86Build.h
-hw/xfree86/ddc/Makefile
-hw/xfree86/dixmods/Makefile
-hw/xfree86/dixmods/extmod/Makefile
-hw/xfree86/doc/Makefile
-hw/xfree86/doc/devel/Makefile
-hw/xfree86/doc/man/Makefile
-hw/xfree86/doc/sgml/Makefile
-hw/xfree86/dri/Makefile
-hw/xfree86/dri2/Makefile
-hw/xfree86/exa/Makefile
-hw/xfree86/exa/man/Makefile
-hw/xfree86/fbdevhw/Makefile
-hw/xfree86/fbdevhw/man/Makefile
-hw/xfree86/i2c/Makefile
-hw/xfree86/int10/Makefile
-hw/xfree86/loader/Makefile
-hw/xfree86/modes/Makefile
-hw/xfree86/os-support/Makefile
-hw/xfree86/os-support/bsd/Makefile
-hw/xfree86/os-support/bus/Makefile
-hw/xfree86/os-support/hurd/Makefile
-hw/xfree86/os-support/misc/Makefile
-hw/xfree86/os-support/linux/Makefile
-hw/xfree86/os-support/solaris/Makefile
-hw/xfree86/parser/Makefile
-hw/xfree86/ramdac/Makefile
-hw/xfree86/shadowfb/Makefile
-hw/xfree86/vbe/Makefile
-hw/xfree86/vgahw/Makefile
-hw/xfree86/x86emu/Makefile
-hw/xfree86/xaa/Makefile
-hw/xfree86/utils/Makefile
-hw/xfree86/utils/man/Makefile
-hw/xfree86/utils/cvt/Makefile
-hw/xfree86/utils/gtf/Makefile
-hw/dmx/config/Makefile
-hw/dmx/config/man/Makefile
-hw/dmx/doc/Makefile
-hw/dmx/examples/Makefile
-hw/dmx/input/Makefile
-hw/dmx/glxProxy/Makefile
-hw/dmx/Makefile
-hw/dmx/man/Makefile
-hw/vfb/Makefile
-hw/vfb/man/Makefile
-hw/xnest/Makefile
-hw/xnest/man/Makefile
-hw/xwin/Makefile
-hw/xwin/glx/Makefile
-hw/xwin/man/Makefile
-hw/xquartz/Makefile
-hw/xquartz/GL/Makefile
-hw/xquartz/bundle/Makefile
-hw/xquartz/man/Makefile
-hw/xquartz/mach-startup/Makefile
-hw/xquartz/pbproxy/Makefile
-hw/xquartz/xpr/Makefile
-hw/kdrive/Makefile
-hw/kdrive/ephyr/Makefile
-hw/kdrive/ephyr/man/Makefile
-hw/kdrive/fake/Makefile
-hw/kdrive/fbdev/Makefile
-hw/kdrive/linux/Makefile
-hw/kdrive/src/Makefile
-test/Makefile
-test/xi2/Makefile
-xorg-server.pc
-])
+dnl Copyright © 2003-2007 Keith Packard, Daniel Stone
+dnl
+dnl Permission is hereby granted, free of charge, to any person obtaining a
+dnl copy of this software and associated documentation files (the "Software"),
+dnl to deal in the Software without restriction, including without limitation
+dnl the rights to use, copy, modify, merge, publish, distribute, sublicense,
+dnl and/or sell copies of the Software, and to permit persons to whom the
+dnl Software is furnished to do so, subject to the following conditions:
+dnl
+dnl The above copyright notice and this permission notice (including the next
+dnl paragraph) shall be included in all copies or substantial portions of the
+dnl Software.
+dnl
+dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+dnl DEALINGS IN THE SOFTWARE.
+dnl
+dnl Authors: Keith Packard <keithp@keithp.com>
+dnl Daniel Stone <daniel@fooishbar.org>
+dnl an unwitting cast of miscellaneous others
+dnl
+dnl Process this file with autoconf to create configure.
+
+AC_PREREQ(2.57)
+AC_INIT([xorg-server], 1.9.99.902, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2011-2-18"
+AC_CONFIG_SRCDIR([Makefile.am])
+AM_INIT_AUTOMAKE([foreign dist-bzip2])
+AM_MAINTAINER_MODE
+
+# Require xorg-macros minimum of 1.10 for XORG_CHECK_SGML_DOCTOOLS
+m4_ifndef([XORG_MACROS_VERSION],
+ [m4_fatal([must install xorg-macros 1.10 or later before running autoconf/autogen])])
+XORG_MACROS_VERSION(1.10)
+XORG_DEFAULT_OPTIONS
+XORG_WITH_DOXYGEN(1.6.1)
+XORG_CHECK_SGML_DOCTOOLS(1.5)
+
+m4_ifndef([XORG_FONT_MACROS_VERSION], [m4_fatal([must install fontutil 1.1 or later before running autoconf/autogen])])
+XORG_FONT_MACROS_VERSION(1.1)
+
+dnl this gets generated by autoheader, and thus contains all the defines. we
+dnl don't ever actually use it, internally.
+AC_CONFIG_HEADERS(include/do-not-use-config.h)
+dnl xorg-server.h is an external header, designed to be included by loadable
+dnl drivers.
+AC_CONFIG_HEADERS(include/xorg-server.h)
+dnl dix-config.h covers most of the DIX (i.e. everything but the DDX, not just
+dnl dix/).
+AC_CONFIG_HEADERS(include/dix-config.h)
+dnl xorg-config.h covers the Xorg DDX.
+AC_CONFIG_HEADERS(include/xorg-config.h)
+dnl xkb-config.h covers XKB for the Xorg and Xnest DDXs.
+AC_CONFIG_HEADERS(include/xkb-config.h)
+dnl xwin-config.h covers the XWin DDX.
+AC_CONFIG_HEADERS(include/xwin-config.h)
+dnl kdrive-config.h covers the kdrive DDX
+AC_CONFIG_HEADERS(include/kdrive-config.h)
+dnl version-config.h covers the version numbers so they can be bumped without
+dnl forcing an entire recompile.x
+AC_CONFIG_HEADERS(include/version-config.h)
+
+AM_PROG_AS
+AC_PROG_LN_S
+AC_LIBTOOL_WIN32_DLL
+AC_DISABLE_STATIC
+AC_PROG_LIBTOOL
+AC_PROG_MAKE_SET
+PKG_PROG_PKG_CONFIG
+AC_PROG_LEX
+AC_PROG_YACC
+AC_SYS_LARGEFILE
+XORG_PROG_RAWCPP
+
+# Quoted so that make will expand $(CWARNFLAGS) in makefiles to allow
+# easier overrides at build time.
+XSERVER_CFLAGS='$(CWARNFLAGS)'
+
+dnl Check for dtrace program (needed to build Xserver dtrace probes)
+dnl Also checks for <sys/sdt.h>, since some Linux distros have an
+dnl ISDN trace program named dtrace
+AC_ARG_WITH(dtrace, AS_HELP_STRING([--with-dtrace=PATH],
+ [Enable dtrace probes (default: enabled if dtrace found)]),
+ [WDTRACE=$withval], [WDTRACE=auto])
+if test "x$WDTRACE" = "xyes" -o "x$WDTRACE" = "xauto" ; then
+ AC_PATH_PROG(DTRACE, [dtrace], [not_found], [$PATH:/usr/sbin])
+ if test "x$DTRACE" = "xnot_found" ; then
+ if test "x$WDTRACE" = "xyes" ; then
+ AC_MSG_FAILURE([dtrace requested but not found])
+ fi
+ WDTRACE="no"
+ else
+ AC_CHECK_HEADER(sys/sdt.h, [HAS_SDT_H="yes"], [HAS_SDT_H="no"])
+ if test "x$WDTRACE" = "xauto" -a "x$HAS_SDT_H" = "xno" ; then
+ WDTRACE="no"
+ fi
+ fi
+fi
+if test "x$WDTRACE" != "xno" ; then
+ AC_DEFINE(XSERVER_DTRACE, 1,
+ [Define to 1 if the DTrace Xserver provider probes should be built in.])
+
+# Solaris/OpenSolaris require dtrace -G to build dtrace probe information into
+# object files, and require linking with those as relocatable objects, not .a
+# archives. MacOS X handles all this in the normal compiler toolchain, and on
+# some releases (like Tiger), will error out on dtrace -G. For now, other
+# platforms with Dtrace ports are assumed to support -G (the FreeBSD and Linux
+# ports appear to, based on my web searches, but have not yet been tested).
+ case $host_os in
+ darwin*) SPECIAL_DTRACE_OBJECTS=no ;;
+ *) SPECIAL_DTRACE_OBJECTS=yes ;;
+ esac
+fi
+AM_CONDITIONAL(XSERVER_DTRACE, [test "x$WDTRACE" != "xno"])
+AM_CONDITIONAL(SPECIAL_DTRACE_OBJECTS, [test "x$SPECIAL_DTRACE_OBJECTS" = "xyes"])
+
+AC_HEADER_DIRENT
+AC_HEADER_STDC
+AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h dlfcn.h stropts.h fnmatch.h sys/utsname.h])
+
+dnl Checks for typedefs, structures, and compiler characteristics.
+AC_C_CONST
+AC_C_BIGENDIAN([ENDIAN="X_BIG_ENDIAN"], [ENDIAN="X_LITTLE_ENDIAN"])
+
+AC_CHECK_SIZEOF([unsigned long])
+if test "$ac_cv_sizeof_unsigned_long" = 8; then
+ AC_DEFINE(_XSERVER64, 1, [Define to 1 if unsigned long is 64 bits.])
+fi
+
+AC_TYPE_PID_T
+
+# Checks for headers/macros for byte swapping
+# Known variants:
+# <byteswap.h> bswap_16, bswap_32, bswap_64 (glibc)
+# <sys/endian.h> __swap16, __swap32, __swap64 (OpenBSD)
+# <sys/endian.h> bswap16, bswap32, bswap64 (other BSD's)
+# and a fallback to local macros if none of the above are found
+
+# if <byteswap.h> is found, assume it's the correct version
+AC_CHECK_HEADERS([byteswap.h])
+
+# if <sys/endian.h> is found, have to check which version
+AC_CHECK_HEADER([sys/endian.h], [HAVE_SYS_ENDIAN_H="yes"], [HAVE_SYS_ENDIAN_H="no"])
+
+if test "x$HAVE_SYS_ENDIAN_H" = "xyes" ; then
+ AC_MSG_CHECKING([for __swap16 variant of <sys/endian.h> byteswapping macros])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([
+#include <sys/types.h>
+#include <sys/endian.h>
+ ], [
+int a = 1, b;
+b = __swap16(a);
+ ])
+], [SYS_ENDIAN__SWAP='yes'], [SYS_ENDIAN__SWAP='no'])
+ AC_MSG_RESULT([$SYS_ENDIAN__SWAP])
+
+ AC_MSG_CHECKING([for bswap16 variant of <sys/endian.h> byteswapping macros])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([
+#include <sys/types.h>
+#include <sys/endian.h>
+ ], [
+int a = 1, b;
+b = bswap16(a);
+ ])
+], [SYS_ENDIAN_BSWAP='yes'], [SYS_ENDIAN_BSWAP='no'])
+ AC_MSG_RESULT([$SYS_ENDIAN_BSWAP])
+
+ if test "$SYS_ENDIAN_BSWAP" = "yes" ; then
+ USE_SYS_ENDIAN_H=yes
+ BSWAP=bswap
+ else
+ if test "$SYS_ENDIAN__SWAP" = "yes" ; then
+ USE_SYS_ENDIAN_H=yes
+ BSWAP=__swap
+ else
+ USE_SYS_ENDIAN_H=no
+ fi
+ fi
+
+ if test "$USE_SYS_ENDIAN_H" = "yes" ; then
+ AC_DEFINE([USE_SYS_ENDIAN_H], 1,
+ [Define to use byteswap macros from <sys/endian.h>])
+ AC_DEFINE_UNQUOTED([bswap_16], ${BSWAP}16,
+ [Define to 16-bit byteswap macro])
+ AC_DEFINE_UNQUOTED([bswap_32], ${BSWAP}32,
+ [Define to 32-bit byteswap macro])
+ AC_DEFINE_UNQUOTED([bswap_64], ${BSWAP}64,
+ [Define to 64-bit byteswap macro])
+ fi
+fi
+
+dnl Check to see if dlopen is in default libraries (like Solaris, which
+dnl has it in libc), or if libdl is needed to get it.
+AC_CHECK_FUNC([dlopen], [],
+ AC_CHECK_LIB([dl], [dlopen], DLOPEN_LIBS="-ldl"))
+AC_SUBST(DLOPEN_LIBS)
+
+dnl Checks for library functions.
+AC_FUNC_VPRINTF
+AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr \
+ strtol getopt getopt_long vsnprintf walkcontext backtrace \
+ getisax getzoneid shmctl64 strcasestr ffs vasprintf])
+AC_FUNC_ALLOCA
+dnl Old HAS_* names used in os/*.c.
+AC_CHECK_FUNC([getdtablesize],
+ AC_DEFINE(HAS_GETDTABLESIZE, 1, [Have the 'getdtablesize' function.]))
+AC_CHECK_FUNC([getifaddrs],
+ AC_DEFINE(HAS_GETIFADDRS, 1, [Have the 'getifaddrs' function.]))
+AC_CHECK_FUNC([getpeereid],
+ AC_DEFINE(HAS_GETPEEREID, 1, [Have the 'getpeereid' function.]))
+AC_CHECK_FUNC([getpeerucred],
+ AC_DEFINE(HAS_GETPEERUCRED, 1, [Have the 'getpeerucred' function.]))
+AC_CHECK_FUNC([strlcat], HAVE_STRLCAT=yes, HAVE_STRLCAT=no)
+AM_CONDITIONAL(NEED_STRLCAT, [test x$HAVE_STRLCAT = xno])
+AC_CHECK_FUNC([strlcpy], AC_DEFINE(HAS_STRLCPY, 1, [Have the 'strlcpy' function]))
+
+AM_CONDITIONAL(NEED_VSNPRINTF, [test x$HAVE_VSNPRINTF = xno])
+
+dnl Check for mmap support for Xvfb
+AC_CHECK_FUNC([mmap], AC_DEFINE(HAS_MMAP, 1, [Have the 'mmap' function.]))
+
+dnl Find the math libary
+AC_CHECK_LIB(m, sqrt)
+AC_CHECK_LIB(m, cbrt, AC_DEFINE(HAVE_CBRT, 1, [Have the 'cbrt' function]))
+
+AC_CHECK_HEADERS([ndbm.h dbm.h rpcsvc/dbm.h])
+
+dnl AGPGART headers
+AC_CHECK_HEADERS([linux/agpgart.h sys/agpio.h sys/agpgart.h], AGP=yes)
+AM_CONDITIONAL(AGP, [test "x$AGP" = xyes])
+
+dnl APM header
+AC_CHECK_HEADERS([linux/apm_bios.h], LNXAPM=yes)
+AM_CONDITIONAL(LNXAPM, [test "x$LNXAPM" = xyes])
+
+dnl fbdev header
+AC_CHECK_HEADERS([linux/fb.h], FBDEV=yes)
+AM_CONDITIONAL(FBDEVHW, [test "x$FBDEV" = xyes])
+
+dnl MTRR header
+AC_CHECK_HEADERS([asm/mtrr.h], ac_cv_asm_mtrr_h=yes)
+if test "x$ac_cv_asm_mtrr_h" = xyes; then
+ HAVE_MTRR=yes
+fi
+
+dnl BSD MTRR header
+AC_CHECK_HEADERS([sys/memrange.h], ac_cv_memrange_h=yes)
+if test "x$ac_cv_memrange_h" = xyes; then
+ HAVE_MTRR=yes
+fi
+
+if test "x$HAVE_MTRR" = xyes; then
+ AC_DEFINE(HAS_MTRR_SUPPORT, 1, [MTRR support available])
+fi
+
+dnl A NetBSD MTRR header
+AC_CHECK_HEADERS([machine/mtrr.h], ac_cv_machine_mtrr_h=yes)
+if test "x$ac_cv_machine_mtrr_h" = xyes; then
+ AC_DEFINE(HAS_MTRR_BUILTIN, 1, [Define to 1 if NetBSD built-in MTRR
+ support is available])
+fi
+
+dnl FreeBSD kldload support (sys/linker.h)
+AC_CHECK_HEADERS([sys/linker.h],
+ [ac_cv_sys_linker_h=yes],
+ [ac_cv_sys_linker_h=no],
+ [#include <sys/param.h>])
+AM_CONDITIONAL(FREEBSD_KLDLOAD, [test "x$ac_cv_sys_linker_h" = xyes])
+
+AC_CACHE_CHECK([for SYSV IPC],
+ ac_cv_sysv_ipc,
+ [AC_TRY_LINK([
+#include <sys/types.h>
+#include <sys/ipc.h>
+#include <sys/shm.h>
+],[
+{
+ int id;
+ id = shmget(IPC_PRIVATE, 512, SHM_W | SHM_R);
+ if (id < 0) return -1;
+ return shmctl(id, IPC_RMID, 0);
+}],
+ [ac_cv_sysv_ipc=yes],
+ [ac_cv_sysv_ipc=no])])
+if test "x$ac_cv_sysv_ipc" = xyes; then
+ AC_DEFINE(HAVE_SYSV_IPC, 1, [Define to 1 if SYSV IPC is available])
+fi
+
+dnl OpenBSD /dev/xf86 aperture driver
+if test -c /dev/xf86 ; then
+ AC_DEFINE(HAS_APERTURE_DRV, 1, [System has /dev/xf86 aperture driver])
+fi
+
+dnl BSD APM support
+AC_CHECK_HEADER([machine/apmvar.h],[
+ AC_CHECK_HEADER([sys/event.h],
+ ac_cv_BSD_KQUEUE_APM=yes,
+ ac_cv_BSD_APM=yes)])
+
+AM_CONDITIONAL(BSD_APM, [test "x$ac_cv_BSD_APM" = xyes])
+AM_CONDITIONAL(BSD_KQUEUE_APM, [test "x$ac_cv_BSD_KQUEUE_APM" = xyes])
+
+dnl glibc backtrace support check (hw/xfree86/common/xf86Events.c)
+AC_CHECK_HEADER([execinfo.h],[
+ AC_CHECK_LIB(c, backtrace, [
+ AC_DEFINE(HAVE_BACKTRACE, 1, [Has backtrace support])
+ AC_DEFINE(HAVE_EXECINFO_H, 1, [Have execinfo.h])
+ ])]
+)
+
+dnl ARM needs additional compiler flags for proper backtraces if GCC is
+dnl used. Compile a dummy program with the -mapcs-frame option. If it
+dnl succeeds, we know that we are building for ARM with GCC.
+old_CFLAGS="$CFLAGS"
+CFLAGS="-mapcs-frame"
+AC_COMPILE_IFELSE(
+ AC_LANG_PROGRAM([[ ]]),
+ ARM_BACKTRACE_CFLAGS="$CFLAGS",
+ ARM_BACKTRACE_CFLAGS=""
+)
+CFLAGS="$old_CFLAGS"
+AC_SUBST(ARM_BACKTRACE_CFLAGS)
+
+dnl ---------------------------------------------------------------------------
+dnl Bus options and CPU capabilities. Replaces logic in
+dnl hw/xfree86/os-support/bus/Makefile.am, among others.
+dnl ---------------------------------------------------------------------------
+DEFAULT_INT10="x86emu"
+
+dnl Override defaults as needed for specific platforms:
+
+case $host_cpu in
+ alpha*)
+ ALPHA_VIDEO=yes
+ case $host_os in
+ *freebsd*) SYS_LIBS=-lio ;;
+ *netbsd*) AC_DEFINE(USE_ALPHA_PIO, 1, [NetBSD PIO alpha IO]) ;;
+ esac
+ GLX_ARCH_DEFINES="-D__GLX_ALIGN64 -mieee"
+ ;;
+ arm*)
+ ARM_VIDEO=yes
+ ;;
+ i*86)
+ I386_VIDEO=yes
+ case $host_os in
+ *freebsd*) AC_DEFINE(USE_DEV_IO) ;;
+ *dragonfly*) AC_DEFINE(USE_DEV_IO) ;;
+ *netbsd*) AC_DEFINE(USE_I386_IOPL)
+ SYS_LIBS=-li386
+ ;;
+ *openbsd*) AC_DEFINE(USE_I386_IOPL)
+ SYS_LIBS=-li386
+ ;;
+ esac
+ ;;
+ powerpc*)
+ PPC_VIDEO=yes
+ case $host_os in
+ *freebsd*) DEFAULT_INT10=stub ;;
+ esac
+ ;;
+ sparc*)
+ SPARC64_VIDEO=yes
+ BSD_ARCH_SOURCES="sparc64_video.c ioperm_noop.c"
+ GLX_ARCH_DEFINES="-D__GLX_ALIGN64"
+ ;;
+ x86_64*|amd64*)
+ I386_VIDEO=yes
+ case $host_os in
+ *freebsd*) AC_DEFINE(USE_DEV_IO, 1, [BSD /dev/io]) ;;
+ *dragonfly*) AC_DEFINE(USE_DEV_IO, 1, [BSD /dev/io]) ;;
+ *netbsd*) AC_DEFINE(USE_I386_IOPL, 1, [BSD i386 iopl])
+ SYS_LIBS=-lx86_64
+ ;;
+ *openbsd*) AC_DEFINE(USE_AMD64_IOPL, 1, [BSD AMD64 iopl])
+ SYS_LIBS=-lamd64
+ ;;
+ esac
+ GLX_ARCH_DEFINES="-D__GLX_ALIGN64"
+ ;;
+ ia64*)
+ GLX_ARCH_DEFINES="-D__GLX_ALIGN64"
+ ;;
+ s390*)
+ GLX_ARCH_DEFINES="-D__GLX_ALIGN64"
+ ;;
+esac
+AC_SUBST(GLX_ARCH_DEFINES)
+
+dnl BSD *_video.c selection
+AM_CONDITIONAL(ALPHA_VIDEO, [test "x$ALPHA_VIDEO" = xyes])
+AM_CONDITIONAL(ARM_VIDEO, [test "x$ARM_VIDEO" = xyes])
+AM_CONDITIONAL(I386_VIDEO, [test "x$I386_VIDEO" = xyes])
+AM_CONDITIONAL(PPC_VIDEO, [test "x$PPC_VIDEO" = xyes])
+AM_CONDITIONAL(SPARC64_VIDEO, [test "x$SPARC64_VIDEO" = xyes])
+
+DRI=no
+USE_SIGIO_BY_DEFAULT="yes"
+dnl it would be nice to autodetect these *CONS_SUPPORTs
+case $host_os in
+ *freebsd* | *dragonfly*)
+ case $host_os in
+ kfreebsd*-gnu) ;;
+ *) AC_DEFINE(CSRG_BASED, 1, [System is BSD-like]) ;;
+ esac
+ AC_DEFINE(PCCONS_SUPPORT, 1, [System has PC console])
+ AC_DEFINE(PCVT_SUPPORT, 1, [System has PCVT console])
+ AC_DEFINE(SYSCONS_SUPPORT, 1, [System has syscons console])
+ DRI=yes
+ ;;
+ *netbsd*)
+ AC_DEFINE(CSRG_BASED, 1, [System is BSD-like])
+ AC_DEFINE(PCCONS_SUPPORT, 1, [System has PC console])
+ AC_DEFINE(PCVT_SUPPORT, 1, [System has PCVT console])
+ AC_DEFINE(WSCONS_SUPPORT, 1, [System has wscons console])
+ DRI=yes
+ ;;
+ *openbsd*)
+ AC_DEFINE(CSRG_BASED, 1, [System is BSD-like])
+ AC_DEFINE(PCVT_SUPPORT, 1, [System has PC console])
+ AC_DEFINE(WSCONS_SUPPORT, 1, [System has wscons console])
+ ;;
+ *linux*)
+ DRI=yes
+ ;;
+ *solaris*)
+ PKG_CHECK_EXISTS(libdrm, DRI=yes, DRI=no)
+ # Disable use of SIGIO by default until some system bugs are
+ # fixed - see Sun/OpenSolaris bug id 6879897
+ USE_SIGIO_BY_DEFAULT="no"
+ ;;
+ darwin*)
+ AC_DEFINE(CSRG_BASED, 1, [System is BSD-like])
+ ;;
+ cygwin*)
+ CFLAGS="$CFLAGS -DFD_SETSIZE=256"
+ ;;
+esac
+
+dnl augment XORG_RELEASE_VERSION for our snapshot number and to expose the
+dnl major number
+PVMAJOR=`echo $PACKAGE_VERSION | cut -d . -f 1`
+PVS=`echo $PACKAGE_VERSION | cut -d . -f 4 | cut -d - -f 1`
+if test "x$PVS" = "x"; then
+ PVS="0"
+fi
+
+VENDOR_RELEASE="((($PVMAJOR) * 10000000) + (($PVM) * 100000) + (($PVP) * 1000) + $PVS)"
+VENDOR_MAN_VERSION="Version ${PACKAGE_VERSION}"
+
+VENDOR_NAME="The X.Org Foundation"
+VENDOR_NAME_SHORT="X.Org"
+VENDOR_WEB="http://wiki.x.org"
+
+m4_ifdef([AS_HELP_STRING], , [m4_define([AS_HELP_STRING], m4_defn([AC_HELP_STRING]))])
+
+dnl Build options.
+AC_ARG_ENABLE(werror, AS_HELP_STRING([--enable-werror],
+ [Obsolete - use --enable-strict-compilation instead]),
+ AC_MSG_ERROR([--enable-werror has been replaced by --enable-strict-compilation]))
+
+AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug],
+ [Enable debugging (default: disabled)]),
+ [DEBUGGING=$enableval], [DEBUGGING=no])
+AC_ARG_ENABLE(unit-tests, AS_HELP_STRING([--enable-unit-tests],
+ [Enable unit-tests (default: auto)]),
+ [UNITTESTS=$enableval], [UNITTESTS=auto])
+AC_ARG_ENABLE(use-sigio-by-default, AS_HELP_STRING([--enable-use-sigio-by-default]
+ [Enable SIGIO input handlers by default (default: $USE_SIGIO_BY_DEFAULT)]),
+ [USE_SIGIO_BY_DEFAULT=$enableval], [])
+AC_ARG_WITH(int10, AS_HELP_STRING([--with-int10=BACKEND], [int10 backend: vm86, x86emu or stub]),
+ [INT10="$withval"],
+ [INT10="$DEFAULT_INT10"])
+AC_ARG_WITH(vendor-name, AS_HELP_STRING([--with-vendor-name=VENDOR],
+ [Vendor string reported by the server]),
+ [ VENDOR_NAME="$withval" ], [])
+AC_ARG_WITH(vendor-name-short, AS_HELP_STRING([--with-vendor-name-short=VENDOR],
+ [Short version of vendor string reported by the server]),
+ [ VENDOR_NAME_SHORT="$withval" ], [])
+AC_ARG_WITH(vendor-web, AS_HELP_STRING([--with-vendor-web=URL],
+ [Vendor web address reported by the server]),
+ [ VENDOR_WEB="$withval" ], [])
+AC_ARG_WITH(module-dir, AS_HELP_STRING([--with-module-dir=DIR],
+ [Directory where modules are installed (default: $libdir/xorg/modules)]),
+ [ moduledir="$withval" ],
+ [ moduledir="${libdir}/xorg/modules" ])
+AC_ARG_WITH(log-dir, AS_HELP_STRING([--with-log-dir=DIR],
+ [Directory where log files are kept (default: $localstatedir/log)]),
+ [ logdir="$withval" ],
+ [ logdir="$localstatedir/log" ])
+AC_ARG_WITH(builder-addr, AS_HELP_STRING([--with-builder-addr=ADDRESS],
+ [Builder address (default: xorg@lists.freedesktop.org)]),
+ [ BUILDERADDR="$withval" ],
+ [ BUILDERADDR="xorg@lists.freedesktop.org" ])
+AC_ARG_WITH(os-name, AS_HELP_STRING([--with-os-name=OSNAME], [Name of OS (default: output of "uname -srm")]),
+ [ OSNAME="$withval" ],
+ [ OSNAME=`uname -srm` ])
+AC_ARG_WITH(os-vendor, AS_HELP_STRING([--with-os-vendor=OSVENDOR], [Name of OS vendor]),
+ [ OSVENDOR="$withval" ],
+ [ OSVENDOR="" ])
+AC_ARG_WITH(builderstring, AS_HELP_STRING([--with-builderstring=BUILDERSTRING], [Additional builder string]),
+ [ BUILDERSTRING="$withval" ]
+ [ ])
+
+dnl Determine font path
+XORG_FONTROOTDIR
+XORG_FONTSUBDIR(FONTMISCDIR, fontmiscdir, misc)
+XORG_FONTSUBDIR(FONTOTFDIR, fontotfdir, OTF)
+XORG_FONTSUBDIR(FONTTTFDIR, fontttfdir, TTF)
+XORG_FONTSUBDIR(FONTTYPE1DIR, fonttype1dir, Type1)
+XORG_FONTSUBDIR(FONT75DPIDIR, font75dpidir, 75dpi)
+XORG_FONTSUBDIR(FONT100DPIDIR, font100dpidir, 100dpi)
+
+dnl Uses --default-font-path if set, otherwise checks for /etc/X11/fontpath.d,
+dnl otherwise uses standard subdirectories of FONTROOTDIR. When cross
+dnl compiling, assume default font path uses standard FONTROOTDIR directories.
+DEFAULT_FONT_PATH="${FONTMISCDIR}/,${FONTTTFDIR}/,${FONTOTFDIR}/,${FONTTYPE1DIR}/,${FONT100DPIDIR}/,${FONT75DPIDIR}/"
+if test "$cross_compiling" != yes; then
+ AC_CHECK_FILE([${sysconfdir}/X11/fontpath.d],
+ [DEFAULT_FONT_PATH='catalogue:${sysconfdir}/X11/fontpath.d'],
+ [case $host_os in
+ darwin*) DEFAULT_FONT_PATH="${DEFAULT_FONT_PATH},/Library/Fonts,/System/Library/Fonts" ;;
+ esac])
+fi
+AC_ARG_WITH(default-font-path, AS_HELP_STRING([--with-default-font-path=PATH], [Comma separated list of font dirs]),
+ [ FONTPATH="$withval" ],
+ [ FONTPATH="${DEFAULT_FONT_PATH}" ])
+
+AC_MSG_CHECKING([for default font path])
+AC_MSG_RESULT([$FONTPATH])
+
+AC_ARG_WITH(xkb-path, AS_HELP_STRING([--with-xkb-path=PATH], [Path to XKB base dir (default: ${datadir}/X11/xkb)]),
+ [ XKBPATH="$withval" ],
+ [ XKBPATH="${datadir}/X11/xkb" ])
+AC_ARG_WITH(xkb-output, AS_HELP_STRING([--with-xkb-output=PATH], [Path to XKB output dir (default: ${datadir}/X11/xkb/compiled)]),
+ [ XKBOUTPUT="$withval" ],
+ [ XKBOUTPUT="compiled" ])
+AC_ARG_WITH(default-xkb-rules, AS_HELP_STRING([--with-default-xkb-rules=RULES],
+ [Keyboard ruleset (default: base/evdev)]),
+ [ XKB_DFLT_RULES="$withval" ],
+ [ XKB_DFLT_RULES="" ])
+AC_ARG_WITH(default-xkb-model, AS_HELP_STRING([--with-default-xkb-model=MODEL],
+ [Keyboard model (default: pc105)]),
+ [ XKB_DFLT_MODEL="$withval" ],
+ [ XKB_DFLT_MODEL="pc105" ])
+AC_ARG_WITH(default-xkb-layout, AS_HELP_STRING([--with-default-xkb-layout=LAYOUT],
+ [Keyboard layout (default: us)]),
+ [ XKB_DFLT_LAYOUT="$withval" ],
+ [ XKB_DFLT_LAYOUT="us" ])
+AC_ARG_WITH(default-xkb-variant, AS_HELP_STRING([--with-default-xkb-variant=VARIANT],
+ [Keyboard variant (default: (none))]),
+ [ XKB_DFLT_VARIANT="$withval" ],
+ [ XKB_DFLT_VARIANT="" ])
+AC_ARG_WITH(default-xkb-options, AS_HELP_STRING([--with-default-xkb-options=OPTIONS],
+ [Keyboard layout options (default: (none))]),
+ [ XKB_DFLT_OPTIONS="$withval" ],
+ [ XKB_DFLT_OPTIONS="" ])
+AC_ARG_WITH(serverconfig-path, AS_HELP_STRING([--with-serverconfig-path=PATH],
+ [Directory where ancillary server config files are installed (default: ${libdir}/xorg)]),
+ [ SERVERCONFIG="$withval" ],
+ [ SERVERCONFIG="${libdir}/xorg" ])
+AC_ARG_WITH(apple-applications-dir,AS_HELP_STRING([--with-apple-applications-dir=PATH], [Path to the Applications directory (default: /Applications/Utilities)]),
+ [ APPLE_APPLICATIONS_DIR="${withval}" ],
+ [ APPLE_APPLICATIONS_DIR="/Applications/Utilities" ])
+AC_SUBST([APPLE_APPLICATIONS_DIR])
+AC_ARG_WITH(apple-application-name,AS_HELP_STRING([--with-apple-application-name=NAME], [Name for the .app (default: X11)]),
+ [ APPLE_APPLICATION_NAME="${withval}" ],
+ [ APPLE_APPLICATION_NAME="X11" ])
+AC_SUBST([APPLE_APPLICATION_NAME])
+AC_ARG_WITH(launchd-id-prefix, AS_HELP_STRING([--with-launchd-id-prefix=PATH], [Prefix to use for launchd identifiers (default: org.x)]),
+ [ LAUNCHD_ID_PREFIX="${withval}" ],
+ [ LAUNCHD_ID_PREFIX="org.x" ])
+AC_SUBST([LAUNCHD_ID_PREFIX])
+AC_DEFINE_UNQUOTED(LAUNCHD_ID_PREFIX, "$LAUNCHD_ID_PREFIX", [Prefix to use for launchd identifiers])
+AC_ARG_ENABLE(sparkle,AS_HELP_STRING([--enable-sparkle], [Enable updating of X11.app using the Sparkle Framework (default: disabled)]),
+ [ XQUARTZ_SPARKLE="${enableval}" ],
+ [ XQUARTZ_SPARKLE="no" ])
+AC_SUBST([XQUARTZ_SPARKLE])
+AC_ARG_ENABLE(install-libxf86config,
+ AS_HELP_STRING([--enable-install-libxf86config],
+ [Install libxf86config (default: disabled)]),
+ [INSTALL_LIBXF86CONFIG=$enableval],
+ [INSTALL_LIBXF86CONFIG=no])
+AC_ARG_ENABLE(visibility, AC_HELP_STRING([--enable-visibility], [Enable symbol visibility (default: auto)]),
+ [SYMBOL_VISIBILITY=$enableval],
+ [SYMBOL_VISIBILITY=auto])
+AC_ARG_ENABLE(pc98, AC_HELP_STRING([--enable-pc98], [Enable PC98 support in Xorg (default: auto)]),
+ [SUPPORT_PC98=$enableval],
+ [SUPPORT_PC98=auto])
+
+dnl GLX build options
+AC_ARG_ENABLE(aiglx, AS_HELP_STRING([--enable-aiglx], [Build accelerated indirect GLX (default: enabled)]),
+ [AIGLX=$enableval],
+ [AIGLX=yes])
+AX_TLS
+AC_ARG_ENABLE(glx-tls, AS_HELP_STRING([--enable-glx-tls], [Build GLX with TLS support (default: auto)]),
+ [GLX_USE_TLS=$enableval],
+ [GLX_USE_TLS=no
+ if test "${ac_cv_tls}" != "none" ; then
+ GLX_USE_TLS=yes
+ fi])
+AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
+
+dnl Extensions.
+AC_ARG_ENABLE(registry, AS_HELP_STRING([--disable-registry], [Build string registry module (default: enabled)]), [XREGISTRY=$enableval], [XREGISTRY=yes])
+AC_ARG_ENABLE(composite, AS_HELP_STRING([--disable-composite], [Build Composite extension (default: enabled)]), [COMPOSITE=$enableval], [COMPOSITE=yes])
+AC_ARG_ENABLE(mitshm, AS_HELP_STRING([--disable-shm], [Build SHM extension (default: enabled)]), [MITSHM=$enableval], [MITSHM=yes])
+AC_ARG_ENABLE(xres, AS_HELP_STRING([--disable-xres], [Build XRes extension (default: enabled)]), [RES=$enableval], [RES=yes])
+AC_ARG_ENABLE(record, AS_HELP_STRING([--disable-record], [Build Record extension (default: enabled)]), [RECORD=$enableval], [RECORD=yes])
+AC_ARG_ENABLE(xv, AS_HELP_STRING([--disable-xv], [Build Xv extension (default: enabled)]), [XV=$enableval], [XV=yes])
+AC_ARG_ENABLE(xvmc, AS_HELP_STRING([--disable-xvmc], [Build XvMC extension (default: enabled)]), [XVMC=$enableval], [XVMC=yes])
+AC_ARG_ENABLE(dga, AS_HELP_STRING([--disable-dga], [Build DGA extension (default: auto)]), [DGA=$enableval], [DGA=auto])
+AC_ARG_ENABLE(screensaver, AS_HELP_STRING([--disable-screensaver], [Build ScreenSaver extension (default: enabled)]), [SCREENSAVER=$enableval], [SCREENSAVER=yes])
+AC_ARG_ENABLE(xdmcp, AS_HELP_STRING([--disable-xdmcp], [Build XDMCP extension (default: auto)]), [XDMCP=$enableval], [XDMCP=auto])
+AC_ARG_ENABLE(xdm-auth-1, AS_HELP_STRING([--disable-xdm-auth-1], [Build XDM-Auth-1 extension (default: auto)]), [XDMAUTH=$enableval], [XDMAUTH=auto])
+AC_ARG_ENABLE(glx, AS_HELP_STRING([--disable-glx], [Build GLX extension (default: enabled)]), [GLX=$enableval], [GLX=yes])
+AC_ARG_ENABLE(dri, AS_HELP_STRING([--enable-dri], [Build DRI extension (default: auto)]), [DRI=$enableval])
+AC_ARG_ENABLE(dri2, AS_HELP_STRING([--enable-dri2], [Build DRI2 extension (default: auto)]), [DRI2=$enableval], [DRI2=auto])
+AC_ARG_ENABLE(xinerama, AS_HELP_STRING([--disable-xinerama], [Build Xinerama extension (default: enabled)]), [XINERAMA=$enableval], [XINERAMA=yes])
+AC_ARG_ENABLE(xf86vidmode, AS_HELP_STRING([--disable-xf86vidmode], [Build XF86VidMode extension (default: auto)]), [XF86VIDMODE=$enableval], [XF86VIDMODE=auto])
+AC_ARG_ENABLE(xace, AS_HELP_STRING([--disable-xace], [Build X-ACE extension (default: enabled)]), [XACE=$enableval], [XACE=yes])
+AC_ARG_ENABLE(xselinux, AS_HELP_STRING([--enable-xselinux], [Build SELinux extension (default: disabled)]), [XSELINUX=$enableval], [XSELINUX=no])
+AC_ARG_ENABLE(xcsecurity, AS_HELP_STRING([--enable-xcsecurity], [Build Security extension (default: disabled)]), [XCSECURITY=$enableval], [XCSECURITY=no])
+AC_ARG_ENABLE(xcalibrate, AS_HELP_STRING([--enable-xcalibrate], [Build XCalibrate extension (default: disabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=no])
+AC_ARG_ENABLE(tslib, AS_HELP_STRING([--enable-tslib], [Build kdrive tslib touchscreen support (default: disabled)]), [TSLIB=$enableval], [TSLIB=no])
+AC_ARG_ENABLE(dbe, AS_HELP_STRING([--disable-dbe], [Build DBE extension (default: enabled)]), [DBE=$enableval], [DBE=yes])
+AC_ARG_ENABLE(xf86bigfont, AS_HELP_STRING([--enable-xf86bigfont], [Build XF86 Big Font extension (default: disabled)]), [XF86BIGFONT=$enableval], [XF86BIGFONT=no])
+AC_ARG_ENABLE(dpms, AS_HELP_STRING([--disable-dpms], [Build DPMS extension (default: enabled)]), [DPMSExtension=$enableval], [DPMSExtension=yes])
+AC_ARG_ENABLE(config-udev, AS_HELP_STRING([--enable-config-udev], [Build udev support (default: auto)]), [CONFIG_UDEV=$enableval], [CONFIG_UDEV=auto])
+AC_ARG_ENABLE(config-dbus, AS_HELP_STRING([--enable-config-dbus], [Build D-BUS API support (default: no)]), [CONFIG_DBUS_API=$enableval], [CONFIG_DBUS_API=no])
+AC_ARG_ENABLE(config-hal, AS_HELP_STRING([--disable-config-hal], [Build HAL support (default: auto)]), [CONFIG_HAL=$enableval], [CONFIG_HAL=auto])
+AC_ARG_ENABLE(xfree86-utils, AS_HELP_STRING([--enable-xfree86-utils], [Build xfree86 DDX utilities (default: enabled)]), [XF86UTILS=$enableval], [XF86UTILS=yes])
+AC_ARG_ENABLE(xaa, AS_HELP_STRING([--enable-xaa], [Build XAA (default: enabled)]), [XAA=$enableval], [XAA=yes])
+AC_ARG_ENABLE(vgahw, AS_HELP_STRING([--enable-vgahw], [Build Xorg with vga access (default: enabled)]), [VGAHW=$enableval], [VGAHW=yes])
+AC_ARG_ENABLE(vbe, AS_HELP_STRING([--enable-vbe], [Build Xorg with VBE module (default: enabled)]), [VBE=$enableval], [VBE=yes])
+AC_ARG_ENABLE(int10-module, AS_HELP_STRING([--enable-int10-module], [Build Xorg with int10 module (default: enabled)]), [INT10MODULE=$enableval], [INT10MODULE=yes])
+AC_ARG_ENABLE(windowswm, AS_HELP_STRING([--enable-windowswm], [Build XWin with WindowsWM extension (default: no)]), [WINDOWSWM=$enableval], [WINDOWSWM=no])
+AC_ARG_ENABLE(libdrm, AS_HELP_STRING([--enable-libdrm], [Build Xorg with libdrm support (default: enabled)]), [DRM=$enableval],[DRM=yes])
+
+dnl DDXes.
+AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto])
+AC_ARG_ENABLE(dmx, AS_HELP_STRING([--enable-dmx], [Build DMX server (default: auto)]), [DMX=$enableval], [DMX=auto])
+AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server (default: yes)]), [XVFB=$enableval], [XVFB=yes])
+AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: auto)]), [XNEST=$enableval], [XNEST=auto])
+AC_ARG_ENABLE(xquartz, AS_HELP_STRING([--enable-xquartz], [Build Xquartz server for OS-X (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto])
+AC_ARG_ENABLE(standalone-xpbproxy, AS_HELP_STRING([--enable-standalone-xpbproxy], [Build a standalone xpbproxy (in addition to the one integrated into Xquartz as a separate thread) (default: no)]), [STANDALONE_XPBPROXY=$enableval], [STANDALONE_XPBPROXY=no])
+AC_ARG_ENABLE(xwin, AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto])
+dnl kdrive and its subsystems
+AC_ARG_ENABLE(kdrive, AS_HELP_STRING([--enable-kdrive], [Build kdrive servers (default: no)]), [KDRIVE=$enableval], [KDRIVE=no])
+AC_ARG_ENABLE(xephyr, AS_HELP_STRING([--enable-xephyr], [Build the kdrive Xephyr server (default: auto)]), [XEPHYR=$enableval], [XEPHYR=auto])
+AC_ARG_ENABLE(xfake, AS_HELP_STRING([--enable-xfake], [Build the kdrive 'fake' server (default: auto)]), [XFAKE=$enableval], [XFAKE=auto])
+AC_ARG_ENABLE(xfbdev, AS_HELP_STRING([--enable-xfbdev], [Build the kdrive framebuffer device server (default: auto)]), [XFBDEV=$enableval], [XFBDEV=auto])
+dnl kdrive options
+AC_ARG_ENABLE(kdrive-kbd, AS_HELP_STRING([--enable-kdrive-kbd], [Build kbd driver for kdrive (default: auto)]), [KDRIVE_KBD=$enableval], [KDRIVE_KBD=auto])
+AC_ARG_ENABLE(kdrive-mouse, AC_HELP_STRING([--enable-kdrive-mouse], [Build mouse driver for kdrive (default: auto)]), [KDRIVE_MOUSE=$enableval], [KDRIVE_MOUSE=auto])
+AC_ARG_ENABLE(kdrive-evdev, AC_HELP_STRING([--enable-kdrive-evdev], [Build evdev driver for kdrive (default: auto)]), [KDRIVE_EVDEV=$enableval], [KDRIVE_EVDEV=auto])
+
+
+dnl chown/chmod to be setuid root as part of build
+dnl Replaces InstallXserverSetUID in imake
+AC_ARG_ENABLE(install-setuid,
+ AS_HELP_STRING([--enable-install-setuid],
+ [Install Xorg server as owned by root with setuid bit (default: auto)]),
+ [SETUID=$enableval], [SETUID=auto])
+AC_MSG_CHECKING([to see if we can install the Xorg server as root])
+if test "x$SETUID" = "xauto" ; then
+ case $host_os in
+ cygwin*) SETUID="no" ;;
+ darwin*) SETUID="no" ;;
+ *)
+ case $host_cpu in
+ sparc) SETUID="no" ;;
+ *) SETUID="yes" ;;
+ esac
+ esac
+ if test "x$SETUID" = xyes; then
+ touch testfile
+ chown root testfile > /dev/null 2>&1 || SETUID="no"
+ rm -f testfile
+ fi
+fi
+AC_MSG_RESULT([$SETUID])
+AM_CONDITIONAL(INSTALL_SETUID, [test "x$SETUID" = "xyes"])
+
+dnl Issue an error if xtrans.m4 was not found and XTRANS_CONNECTION_FLAGS macro
+dnl was not expanded, since xorg-server with no transport types is rather useless.
+dnl
+dnl If you're seeing an error here, be sure you installed the lib/xtrans module
+dnl first and if it's not in the default location, that you set the ACLOCAL
+dnl environment variable to find it, such as:
+dnl ACLOCAL="aclocal -I ${PREFIX}/share/aclocal"
+m4_pattern_forbid([^XTRANS_CONNECTION_FLAGS$])
+
+# Transport selection macro from xtrans.m4
+XTRANS_CONNECTION_FLAGS
+
+# Secure RPC detection macro from xtrans.m4
+XTRANS_SECURE_RPC_FLAGS
+AM_CONDITIONAL(SECURE_RPC, [test "x$SECURE_RPC" = xyes])
+
+AM_CONDITIONAL(INT10_VM86, [test "x$INT10" = xvm86])
+AM_CONDITIONAL(INT10_X86EMU, [test "x$INT10" = xx86emu])
+AM_CONDITIONAL(INT10_STUB, [test "x$INT10" = xstub])
+if test "x$INT10" = xyes; then
+ dnl VM86 headers
+ AC_CHECK_HEADERS([sys/vm86.h sys/io.h])
+fi
+
+XORG_ENABLE_DOCS
+XORG_ENABLE_DEVEL_DOCS
+XORG_WITH_XMLTO(0.0.20)
+XORG_WITH_FOP
+
+dnl Handle installing libxf86config
+AM_CONDITIONAL(INSTALL_LIBXF86CONFIG, [test "x$INSTALL_LIBXF86CONFIG" = xyes])
+
+dnl DDX Detection... Yes, it's ugly to have it here... but we need to
+dnl handle this early on so that we don't require unsupported extensions
+case $host_os in
+ cygwin*)
+ DGA=no
+ DRI2=no
+ XF86VIDMODE=no
+ XSELINUX=no
+ XV=no
+ ;;
+ darwin*)
+ DRI2=no
+
+ if test x$XQUARTZ = xauto; then
+ AC_CACHE_CHECK([whether to build Xquartz],xorg_cv_Carbon_framework,[
+ save_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS -framework Carbon"
+ AC_LINK_IFELSE([char FSFindFolder(); int main() { FSFindFolder(); return 0;}],
+ [xorg_cv_Carbon_framework=yes],
+ [xorg_cv_Carbon_framework=no])
+ LDFLAGS=$save_LDFLAGS])
+
+ if test "X$xorg_cv_Carbon_framework" = Xyes; then
+ XQUARTZ=yes
+ else
+ XQUARTZ=no
+ fi
+ fi
+
+ if test "x$XQUARTZ" = xyes ; then
+ XQUARTZ=yes
+ XVFB=no
+ XNEST=no
+
+ COMPOSITE=no
+ DGA=no
+ DPMSExtension=no
+ XF86VIDMODE=no
+ fi
+ ;;
+ *) XQUARTZ=no ;;
+esac
+
+dnl ---------------------------------------------------------------------------
+dnl Extension section
+dnl ---------------------------------------------------------------------------
+XEXT_INC='-I$(top_srcdir)/Xext'
+XEXT_LIB='$(top_builddir)/Xext/libXext.la'
+XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la'
+
+dnl Optional modules
+VIDEOPROTO="videoproto"
+COMPOSITEPROTO="compositeproto >= 0.4"
+RECORDPROTO="recordproto >= 1.13.99.1"
+SCRNSAVERPROTO="scrnsaverproto >= 1.1"
+RESOURCEPROTO="resourceproto"
+DRIPROTO="xf86driproto >= 2.1.0"
+DRI2PROTO="dri2proto >= 2.3"
+XINERAMAPROTO="xineramaproto"
+BIGFONTPROTO="xf86bigfontproto >= 1.2.0"
+XCALIBRATEPROTO="xcalibrateproto"
+DGAPROTO="xf86dgaproto >= 2.0.99.1"
+GLPROTO="glproto >= 1.4.10"
+DMXPROTO="dmxproto >= 2.2.99.1"
+VIDMODEPROTO="xf86vidmodeproto >= 2.2.99.1"
+WINDOWSWMPROTO="windowswmproto"
+APPLEWMPROTO="applewmproto >= 1.4"
+
+dnl Core modules for most extensions, et al.
+SDK_REQUIRED_MODULES="[xproto >= 7.0.17] [randrproto >= 1.4] [renderproto >= 0.11] [xextproto >= 7.1.99] [inputproto >= 1.9.99.902] [kbproto >= 1.0.3] fontsproto"
+# Make SDK_REQUIRED_MODULES available for inclusion in xorg-server.pc
+AC_SUBST(SDK_REQUIRED_MODULES)
+
+dnl List of libraries that require a specific version
+LIBAPPLEWM="applewm >= 1.4"
+LIBDMX="dmx >= 1.0.99.1"
+LIBDRI="dri >= 7.8.0"
+LIBDRM="libdrm >= 2.3.0"
+LIBGL="gl >= 7.1.0"
+LIBXEXT="xext >= 1.0.99.4"
+LIBXFONT="xfont >= 1.4.2"
+LIBXI="xi >= 1.2.99.1"
+LIBXTST="xtst >= 1.0.99.2"
+LIBPCIACCESS="pciaccess >= 0.8.0"
+LIBGLIB="glib-2.0 >= 2.16"
+LIBUDEV="libudev >= 143"
+LIBSELINUX="libselinux >= 2.0.86"
+LIBDBUS="dbus-1 >= 1.0"
+LIBPIXMAN="pixman-1 >= 0.15.20"
+
+dnl Pixman is always required, but we separate it out so we can link
+dnl specific modules against it
+PKG_CHECK_MODULES(PIXMAN, $LIBPIXMAN)
+REQUIRED_LIBS="$REQUIRED_LIBS $LIBPIXMAN $LIBXFONT xau"
+
+REQUIRED_MODULES="[fixesproto >= 4.1] [damageproto >= 1.1] [xcmiscproto >= 1.2.0] [xtrans >= 1.2.2] [bigreqsproto >= 1.1.0] $SDK_REQUIRED_MODULES"
+
+if test "x$CONFIG_UDEV" = xyes &&
+ { test "x$CONFIG_DBUS_API" = xyes || test "x$CONFIG_HAL" = xyes; }; then
+ AC_MSG_ERROR([Hotplugging through both libudev and dbus/hal not allowed])
+fi
+
+PKG_CHECK_MODULES(UDEV, $LIBUDEV, [HAVE_LIBUDEV=yes], [HAVE_LIBUDEV=no])
+if test "x$CONFIG_UDEV" = xauto; then
+ CONFIG_UDEV="$HAVE_LIBUDEV"
+fi
+AM_CONDITIONAL(CONFIG_UDEV, [test "x$CONFIG_UDEV" = xyes])
+if test "x$CONFIG_UDEV" = xyes; then
+ CONFIG_DBUS_API=no
+ CONFIG_HAL=no
+ if ! test "x$HAVE_LIBUDEV" = xyes; then
+ AC_MSG_ERROR([udev configuration API requested, but libudev is not installed])
+ fi
+ AC_DEFINE(CONFIG_UDEV, 1, [Use libudev for input hotplug])
+fi
+
+dnl HAVE_DBUS is true if we actually have the D-Bus library, whereas
+dnl CONFIG_DBUS_API is true if we want to enable the D-Bus config
+dnl API.
+PKG_CHECK_MODULES(DBUS, $LIBDBUS, [HAVE_DBUS=yes], [HAVE_DBUS=no])
+if test "x$HAVE_DBUS" = xyes; then
+ AC_DEFINE(HAVE_DBUS, 1, [Have D-Bus support])
+fi
+AM_CONDITIONAL(HAVE_DBUS, [test "x$HAVE_DBUS" = xyes])
+
+if test "x$CONFIG_DBUS_API" = xauto; then
+ CONFIG_DBUS_API="$HAVE_DBUS"
+fi
+if test "x$CONFIG_DBUS_API" = xyes; then
+ if ! test "x$HAVE_DBUS" = xyes; then
+ AC_MSG_ERROR([D-Bus configuration API requested, but D-Bus is not installed.])
+ fi
+
+ AC_DEFINE(CONFIG_DBUS_API, 1, [Use the D-Bus input configuration API])
+ CONFIG_NEED_DBUS="yes"
+fi
+AM_CONDITIONAL(CONFIG_DBUS_API, [test "x$CONFIG_DBUS_API" = xyes])
+
+PKG_CHECK_MODULES(HAL, hal, [HAVE_HAL=yes], [HAVE_HAL=no])
+if test "x$CONFIG_HAL" = xauto; then
+ CONFIG_HAL="$HAVE_HAL"
+fi
+if test "x$CONFIG_HAL" = xyes; then
+ if ! test "x$HAVE_HAL" = xyes; then
+ AC_MSG_ERROR([HAL hotplug API requested, but HAL is not installed.])
+ fi
+
+ AC_DEFINE(CONFIG_HAL, 1, [Use the HAL hotplug API])
+ CONFIG_NEED_DBUS="yes"
+fi
+AM_CONDITIONAL(CONFIG_HAL, [test "x$CONFIG_HAL" = xyes])
+
+if test "x$CONFIG_NEED_DBUS" = xyes; then
+ AC_DEFINE(CONFIG_NEED_DBUS, 1, [Use D-Bus for input hotplug])
+fi
+AM_CONDITIONAL(CONFIG_NEED_DBUS, [test "x$CONFIG_NEED_DBUS" = xyes])
+
+if test "x$USE_SIGIO_BY_DEFAULT" = xyes; then
+ USE_SIGIO_BY_DEFAULT_VALUE=TRUE
+else
+ USE_SIGIO_BY_DEFAULT_VALUE=FALSE
+fi
+AC_DEFINE_UNQUOTED([USE_SIGIO_BY_DEFAULT], [$USE_SIGIO_BY_DEFAULT_VALUE],
+ [Use SIGIO handlers for input device events by default])
+
+AC_MSG_CHECKING([for glibc...])
+AC_PREPROC_IFELSE([
+#include <features.h>
+#ifndef __GLIBC__
+#error
+#endif
+], glibc=yes, glibc=no)
+AC_MSG_RESULT([$glibc])
+
+AC_CHECK_FUNCS([clock_gettime], [have_clock_gettime=yes],
+ [AC_CHECK_LIB([rt], [clock_gettime], [have_clock_gettime=-lrt],
+ [have_clock_gettime=no])])
+
+AC_MSG_CHECKING([for a useful monotonic clock ...])
+
+if ! test "x$have_clock_gettime" = xno; then
+ if ! test "x$have_clock_gettime" = xyes; then
+ CLOCK_LIBS="$have_clock_gettime"
+ else
+ CLOCK_LIBS=""
+ fi
+
+ LIBS_SAVE="$LIBS"
+ LIBS="$CLOCK_LIBS"
+ CPPFLAGS_SAVE="$CPPFLAGS"
+
+ if test x"$glibc" = xyes; then
+ CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
+ fi
+
+ AC_RUN_IFELSE([
+#include <time.h>
+
+int main(int argc, char *argv[[]]) {
+ struct timespec tp;
+
+ if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
+ return 0;
+ else
+ return 1;
+}
+ ], [MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no],
+ [MONOTONIC_CLOCK="cross compiling"])
+
+ LIBS="$LIBS_SAVE"
+ CPPFLAGS="$CPPFLAGS_SAVE"
+else
+ MONOTONIC_CLOCK=no
+fi
+
+AC_MSG_RESULT([$MONOTONIC_CLOCK])
+
+if test "x$MONOTONIC_CLOCK" = xyes; then
+ AC_DEFINE(MONOTONIC_CLOCK, 1, [Have monotonic clock from clock_gettime()])
+ LIBS="$LIBS $CLOCK_LIBS"
+fi
+
+AM_CONDITIONAL(XV, [test "x$XV" = xyes])
+if test "x$XV" = xyes; then
+ AC_DEFINE(XV, 1, [Support Xv extension])
+ AC_DEFINE(XvExtension, 1, [Build Xv extension])
+ REQUIRED_MODULES="$REQUIRED_MODULES $VIDEOPROTO"
+ SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $VIDEOPROTO"
+else
+ XVMC=no
+fi
+
+AM_CONDITIONAL(XVMC, [test "x$XVMC" = xyes])
+if test "x$XVMC" = xyes; then
+ AC_DEFINE(XvMCExtension, 1, [Build XvMC extension])
+fi
+
+AM_CONDITIONAL(XREGISTRY, [test "x$XREGISTRY" = xyes])
+if test "x$XREGISTRY" = xyes; then
+ AC_DEFINE(XREGISTRY, 1, [Build registry module])
+fi
+
+AM_CONDITIONAL(COMPOSITE, [test "x$COMPOSITE" = xyes])
+if test "x$COMPOSITE" = xyes; then
+ AC_DEFINE(COMPOSITE, 1, [Support Composite Extension])
+ REQUIRED_MODULES="$REQUIRED_MODULES $COMPOSITEPROTO"
+ COMPOSITE_LIB='$(top_builddir)/composite/libcomposite.la'
+ COMPOSITE_INC='-I$(top_srcdir)/composite'
+fi
+
+AM_CONDITIONAL(MITSHM, [test "x$MITSHM" = xyes])
+if test "x$MITSHM" = xyes; then
+ AC_DEFINE(MITSHM, 1, [Support MIT-SHM extension])
+ AC_DEFINE(HAS_SHM, 1, [Support SHM])
+fi
+
+AM_CONDITIONAL(RECORD, [test "x$RECORD" = xyes])
+if test "x$RECORD" = xyes; then
+ AC_DEFINE(XRECORD, 1, [Support Record extension])
+ REQUIRED_MODULES="$REQUIRED_MODULES $RECORDPROTO"
+ RECORD_LIB='$(top_builddir)/record/librecord.la'
+fi
+
+AM_CONDITIONAL(SCREENSAVER, [test "x$SCREENSAVER" = xyes])
+if test "x$SCREENSAVER" = xyes; then
+ AC_DEFINE(SCREENSAVER, 1, [Support MIT-SCREEN-SAVER extension])
+ REQUIRED_MODULES="$REQUIRED_MODULES $SCRNSAVERPROTO"
+fi
+
+AM_CONDITIONAL(RES, [test "x$RES" = xyes])
+if test "x$RES" = xyes; then
+ AC_DEFINE(RES, 1, [Support X resource extension])
+ REQUIRED_MODULES="$REQUIRED_MODULES $RESOURCEPROTO"
+fi
+
+if test "x$GLX" = xyes; then
+ PKG_CHECK_MODULES([XLIB], [x11])
+ PKG_CHECK_MODULES([GL], $GLPROTO $LIBGL)
+ AC_SUBST(XLIB_CFLAGS)
+ AC_DEFINE(GLXEXT, 1, [Build GLX extension])
+ GLX_LIBS='$(top_builddir)/glx/libglx.la'
+ GLX_SYS_LIBS="$GLX_SYS_LIBS"
+else
+ GLX=no
+fi
+AM_CONDITIONAL(GLX, test "x$GLX" = xyes)
+
+if test "x$AIGLX" = xyes -a "x$GLX" = xyes -a "x$DRI" = xyes; then
+ AC_DEFINE(AIGLX, 1, [Build AIGLX loader])
+else
+ AIGLX=no
+fi
+AM_CONDITIONAL(AIGLX, test "x$AIGLX" = xyes)
+
+if test "x$GLX_USE_TLS" = xyes ; then
+ GLX_DEFINES="-DGLX_USE_TLS -DPTHREADS"
+ GLX_SYS_LIBS="$GLX_SYS_LIBS -lpthread"
+fi
+AC_SUBST([GLX_DEFINES])
+
+AM_CONDITIONAL(DRI, test "x$DRI" = xyes)
+if test "x$DRI" = xyes; then
+ AC_DEFINE(XF86DRI, 1, [Build DRI extension])
+ PKG_CHECK_MODULES([DRIPROTO], [$DRIPROTO])
+ PKG_CHECK_MODULES([DRI], $GLPROTO $LIBDRI)
+ AC_SUBST(DRIPROTO_CFLAGS)
+fi
+
+PKG_CHECK_MODULES([DRI2PROTO], $DRI2PROTO,
+ [HAVE_DRI2PROTO=yes], [HAVE_DRI2PROTO=no])
+case "$DRI2,$HAVE_DRI2PROTO" in
+ yes,no)
+ AC_MSG_ERROR([DRI2 requested, but dri2proto not found.])
+ ;;
+ yes,yes | auto,yes)
+ AC_DEFINE(DRI2, 1, [Build DRI2 extension])
+ DRI2=yes
+ SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $DRI2PROTO"
+ ;;
+esac
+AM_CONDITIONAL(DRI2, test "x$DRI2" = xyes)
+
+if test "x$DRI" = xyes || test "x$DRI2" = xyes; then
+ if test "x$DRM" = xyes; then
+ AC_DEFINE(WITH_LIBDRM, 1, [Building with libdrm support])
+ PKG_CHECK_MODULES([LIBDRM], $LIBDRM)
+ fi
+fi
+
+if test "x$DRI2" = xyes; then
+ save_CFLAGS=$CFLAGS
+ CFLAGS="$GL_CFLAGS $LIBDRM_CFLAGS"
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <GL/gl.h>
+#include <GL/internal/dri_interface.h>
+#ifndef __DRI_DRI2
+#error DRI2 extension not available.
+#endif]])],
+ [HAVE_DRI2EXTENSION=yes],
+ [HAVE_DRI2EXTENSION=no])
+ CFLAGS=$save_CFLAGS
+ if test "x$HAVE_DRI2EXTENSION" = xyes; then
+ AC_DEFINE(DRI2_AIGLX, 1, [Build DRI2 AIGLX loader])
+ DRI2_AIGLX=yes
+ else
+ AC_MSG_NOTICE([DRI2 AIGLX disabled, __DRI_DRI2 not defined in dri_interface.h.])
+ DRI2_AIGLX=no
+ fi
+fi
+AM_CONDITIONAL(DRI2_AIGLX, test "x$DRI2_AIGLX" = xyes)
+
+
+AM_CONDITIONAL(XINERAMA, [test "x$XINERAMA" = xyes])
+if test "x$XINERAMA" = xyes; then
+ AC_DEFINE(XINERAMA, 1, [Support Xinerama extension])
+ AC_DEFINE(PANORAMIX, 1, [Internal define for Xinerama])
+ REQUIRED_MODULES="$REQUIRED_MODULES $XINERAMAPROTO"
+ SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $XINERAMAPROTO"
+fi
+
+AM_CONDITIONAL(XACE, [test "x$XACE" = xyes])
+if test "x$XACE" = xyes; then
+ AC_DEFINE(XACE, 1, [Build X-ACE extension])
+fi
+
+AM_CONDITIONAL(XSELINUX, [test "x$XSELINUX" = xyes])
+if test "x$XSELINUX" = xyes; then
+ if test "x$XACE" != xyes; then
+ AC_MSG_ERROR([cannot build SELinux extension without X-ACE])
+ fi
+ AC_CHECK_HEADERS([libaudit.h], [], AC_MSG_ERROR([SELinux extension requires audit system headers]))
+ AC_CHECK_LIB(audit, audit_open, [], AC_MSG_ERROR([SELinux extension requires audit system library]))
+ PKG_CHECK_MODULES([SELINUX], $LIBSELINUX)
+ SELINUX_LIBS="$SELINUX_LIBS -laudit"
+ AC_DEFINE(XSELINUX, 1, [Build SELinux extension])
+fi
+
+AM_CONDITIONAL(XCSECURITY, [test "x$XCSECURITY" = xyes])
+if test "x$XCSECURITY" = xyes; then
+ if test "x$XACE" != xyes; then
+ AC_MSG_ERROR([cannot build Security extension without X-ACE])
+ fi
+ AC_DEFINE(XCSECURITY, 1, [Build Security extension])
+fi
+
+AM_CONDITIONAL(DBE, [test "x$DBE" = xyes])
+if test "x$DBE" = xyes; then
+ AC_DEFINE(DBE, 1, [Support DBE extension])
+ DBE_LIB='$(top_builddir)/dbe/libdbe.la'
+fi
+
+AM_CONDITIONAL(XF86BIGFONT, [test "x$XF86BIGFONT" = xyes])
+if test "x$XF86BIGFONT" = xyes; then
+ AC_DEFINE(XF86BIGFONT, 1, [Support XF86 Big font extension])
+ REQUIRED_MODULES="$REQUIRED_MODULES $BIGFONTPROTO"
+fi
+
+AM_CONDITIONAL(DPMSExtension, [test "x$DPMSExtension" = xyes])
+if test "x$DPMSExtension" = xyes; then
+ AC_DEFINE(DPMSExtension, 1, [Support DPMS extension])
+fi
+
+if test "x$XCALIBRATE" = xyes && test "$KDRIVE" = yes; then
+ AC_DEFINE(XCALIBRATE, 1, [Build XCalibrate extension])
+ REQUIRED_MODULES="$REQUIRED_MODULES $XCALIBRATEPROTO"
+else
+ XCALIBRATE=no
+fi
+AM_CONDITIONAL(XCALIBRATE, [test "x$XCALIBRATE" = xyes])
+
+AC_DEFINE(RENDER, 1, [Support RENDER extension])
+RENDER_LIB='$(top_builddir)/render/librender.la'
+RENDER_INC='-I$(top_srcdir)/render'
+
+AC_DEFINE(RANDR, 1, [Support RANDR extension])
+RANDR_LIB='$(top_builddir)/randr/librandr.la'
+RANDR_INC='-I$(top_srcdir)/randr'
+
+AC_DEFINE(XFIXES,1,[Support XFixes extension])
+FIXES_LIB='$(top_builddir)/xfixes/libxfixes.la'
+FIXES_INC='-I$(top_srcdir)/xfixes'
+
+AC_DEFINE(DAMAGE,1,[Support Damage extension])
+DAMAGE_LIB='$(top_builddir)/damageext/libdamageext.la'
+DAMAGE_INC='-I$(top_srcdir)/damageext'
+MIEXT_DAMAGE_LIB='$(top_builddir)/miext/damage/libdamage.la'
+MIEXT_DAMAGE_INC='-I$(top_srcdir)/miext/damage'
+
+# XINPUT extension is integral part of the server
+AC_DEFINE(XINPUT, 1, [Support X Input extension])
+XI_LIB='$(top_builddir)/Xi/libXi.la'
+XI_INC='-I$(top_srcdir)/Xi'
+
+AM_CONDITIONAL(XF86UTILS, test "x$XF86UTILS" = xyes)
+AM_CONDITIONAL(XAA, test "x$XAA" = xyes)
+AM_CONDITIONAL(VGAHW, test "x$VGAHW" = xyes)
+AM_CONDITIONAL(VBE, test "x$VBE" = xyes)
+AM_CONDITIONAL(INT10MODULE, test "x$INT10MODULE" = xyes)
+
+AC_DEFINE(SHAPE, 1, [Support SHAPE extension])
+
+AC_DEFINE_DIR(XKB_BASE_DIRECTORY, XKBPATH, [Path to XKB data])
+AC_ARG_WITH(xkb-bin-directory,
+ AS_HELP_STRING([--with-xkb-bin-directory=DIR], [Directory containing xkbcomp program]),
+ [XKB_BIN_DIRECTORY="$withval"],
+ [XKB_BIN_DIRECTORY="$bindir"])
+
+AC_DEFINE_DIR(XKB_BIN_DIRECTORY, XKB_BIN_DIRECTORY, [Path to XKB bin dir])
+
+dnl Make sure XKM_OUTPUT_DIR is an absolute path
+XKBOUTPUT_FIRSTCHAR=`echo $XKBOUTPUT | cut -b 1`
+if [[ x$XKBOUTPUT_FIRSTCHAR != x/ -a x$XKBOUTPUT_FIRSTCHAR != 'x$' ]] ; then
+ XKBOUTPUT="$XKB_BASE_DIRECTORY/$XKBOUTPUT"
+fi
+
+dnl XKM_OUTPUT_DIR (used in code) must end in / or file names get hosed
+dnl XKB_COMPILED_DIR (used in Makefiles) must not or install-sh gets confused
+
+XKBOUTPUT=`echo $XKBOUTPUT/ | $SED 's|/*$|/|'`
+XKB_COMPILED_DIR=`echo $XKBOUTPUT | $SED 's|/*$||'`
+AC_DEFINE_DIR(XKM_OUTPUT_DIR, XKBOUTPUT, [Path to XKB output dir])
+AC_SUBST(XKB_COMPILED_DIR)
+
+if test "x$XKB_DFLT_RULES" = x; then
+ case $host_os in
+ linux*)
+ dnl doesn't take AutoAddDevices into account, but whatever.
+ if test "x$CONFIG_HAL" = xyes; then
+ XKB_DFLT_RULES="evdev"
+ else
+ XKB_DFLT_RULES="base"
+ fi
+ ;;
+ *)
+ XKB_DFLT_RULES="base"
+ ;;
+ esac
+fi
+AC_DEFINE_UNQUOTED(XKB_DFLT_RULES, ["$XKB_DFLT_RULES"], [Default XKB ruleset])
+AC_DEFINE_UNQUOTED(XKB_DFLT_MODEL, ["$XKB_DFLT_MODEL"], [Default XKB model])
+AC_DEFINE_UNQUOTED(XKB_DFLT_LAYOUT, ["$XKB_DFLT_LAYOUT"], [Default XKB layout])
+AC_DEFINE_UNQUOTED(XKB_DFLT_VARIANT, ["$XKB_DFLT_VARIANT"], [Default XKB variant])
+AC_DEFINE_UNQUOTED(XKB_DFLT_OPTIONS, ["$XKB_DFLT_OPTIONS"], [Default XKB options])
+
+XKB_LIB='$(top_builddir)/xkb/libxkb.la'
+XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
+REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
+
+AC_CHECK_FUNC(strcasecmp, [], AC_DEFINE([NEED_STRCASECMP], 1,
+ [Do not have 'strcasecmp'.]))
+AC_CHECK_FUNC(strncasecmp, [], AC_DEFINE([NEED_STRNCASECMP], 1,
+ [Do not have 'strncasecmp'.]))
+AC_CHECK_FUNC(strcasestr, [], AC_DEFINE([NEED_STRCASESTR], 1,
+ [Do not have 'strcasestr'.]))
+
+PKG_CHECK_MODULES([XDMCP], [xdmcp], [have_libxdmcp="yes"], [have_libxdmcp="no"])
+if test "x$have_libxdmcp" = xyes; then
+ AC_CHECK_LIB(Xdmcp, XdmcpWrap, [have_xdmcpwrap="yes"], [have_xdmcpwrap="no"], [$XDMCP_LIBS])
+fi
+if test "x$XDMCP" = xauto; then
+ if test "x$have_libxdmcp" = xyes; then
+ XDMCP=yes
+ else
+ XDMCP=no
+ fi
+fi
+if test "x$XDMAUTH" = xauto; then
+ if test "x$have_libxdmcp" = xyes && test "x$have_xdmcpwrap" = xyes; then
+ XDMAUTH=yes
+ else
+ XDMAUTH=no
+ fi
+fi
+
+AM_CONDITIONAL(XDMCP, [test "x$XDMCP" = xyes])
+if test "x$XDMCP" = xyes; then
+ AC_DEFINE(XDMCP, 1, [Support XDM Control Protocol])
+ REQUIRED_LIBS="$REQUIRED_LIBS xdmcp"
+ XDMCP_MODULES="xdmcp"
+fi
+
+AM_CONDITIONAL(XDMAUTH, [test "x$XDMAUTH" = xyes])
+if test "x$XDMAUTH" = xyes; then
+ AC_DEFINE(HASXDMAUTH,1,[Support XDM-AUTH*-1])
+ if ! test "x$XDMCP" = xyes; then
+ REQUIRED_LIBS="$REQUIRED_LIBS xdmcp"
+ XDMCP_MODULES="xdmcp"
+ fi
+fi
+
+AC_DEFINE_DIR(COMPILEDDEFAULTFONTPATH, FONTPATH, [Default font path])
+AC_DEFINE_DIR(PCI_TXT_IDS_PATH, PCI_TXT_IDS_DIR, [Default PCI text file ID path])
+AC_DEFINE_DIR(SERVER_MISC_CONFIG_PATH, SERVERCONFIG, [Server miscellaneous config path])
+AC_DEFINE_DIR(BASE_FONT_PATH, FONTROOTDIR, [Default base font path])
+dridriverdir=`$PKG_CONFIG --variable=dridriverdir dri`
+AC_DEFINE_DIR(DRI_DRIVER_PATH, dridriverdir, [Default DRI driver path])
+AC_DEFINE_UNQUOTED(XVENDORNAME, ["$VENDOR_NAME"], [Vendor name])
+AC_DEFINE_UNQUOTED(XVENDORNAMESHORT, ["$VENDOR_NAME_SHORT"], [Short vendor name])
+AC_DEFINE_UNQUOTED(XORG_DATE, ["$RELEASE_DATE"], [Vendor release])
+AC_DEFINE_UNQUOTED(XORG_MAN_VERSION, ["$VENDOR_MAN_VERSION"], [Vendor man version])
+AC_DEFINE_UNQUOTED(BUILDERADDR, ["$BUILDERADDR"], [Builder address])
+
+if test -z "$OSNAME"; then
+ OSNAME="UNKNOWN"
+fi
+
+AC_DEFINE_UNQUOTED(OSNAME, ["$OSNAME"], [Operating System Name])
+AC_DEFINE_UNQUOTED(OSVENDOR, ["$OSVENDOR"], [Operating System Vendor])
+AC_DEFINE_UNQUOTED(BUILDERSTRING, ["$BUILDERSTRING"], [Builder string])
+
+AC_SUBST([VENDOR_NAME_SHORT])
+AC_DEFINE_UNQUOTED(VENDOR_NAME, ["$VENDOR_NAME"], [Vendor name])
+AC_DEFINE_UNQUOTED(VENDOR_NAME_SHORT, ["$VENDOR_NAME_SHORT"], [Vendor name])
+AC_DEFINE_UNQUOTED(VENDOR_RELEASE, [$VENDOR_RELEASE], [Vendor release])
+AC_DEFINE_UNQUOTED(VENDOR_MAN_VERSION, ["$VENDOR_MAN_VERSION"], [Vendor man version])
+
+AC_DEFINE(NO_LIBCWRAPPER, 1, [Define to 1 if modules should avoid the libcwrapper])
+
+if test "x$DEBUGGING" = xyes; then
+ AC_DEFINE(DEBUG, 1, [Enable debugging code])
+fi
+AM_CONDITIONAL(DEBUG, [test "x$DEBUGGING" = xyes])
+
+# If unittests aren't explicitly disabled, check for required support
+if test "x$UNITTESTS" != xno ; then
+ PKG_CHECK_MODULES([GLIB], $LIBGLIB,
+ [HAVE_GLIB=yes], [HAVE_GLIB=no])
+
+ # Check if linker supports -wrap, passed via compiler flags
+ # When cross-compiling, reports no, since unit tests run from
+ # "make check", so would be running on build machine, not target
+ AC_MSG_CHECKING([whether the linker supports -wrap])
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -Wl,-wrap,exit"
+ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+ void __wrap_exit (int s)
+ {
+ __real_exit (0);
+ }]],
+ [[exit (1);]])],
+ [linker_can_wrap="yes"],
+ [linker_can_wrap="no"],
+ [linker_can_wrap="no"])
+ AC_MSG_RESULT([$linker_can_wrap])
+ LDFLAGS="$save_LDFLAGS"
+fi
+
+if test "x$UNITTESTS" = xauto; then
+ if test "x$HAVE_GLIB" = xyes && test "x$linker_can_wrap" = xyes; then
+ UNITTESTS=yes
+ else
+ UNITTESTS=no
+ fi
+fi
+if test "x$UNITTESTS" = xyes; then
+ if test "x$HAVE_GLIB" = xno; then
+ AC_MSG_ERROR([glib required to build unit tests])
+ fi
+ if test "x$linker_can_wrap" = xno; then
+ AC_MSG_ERROR([ld -wrap support required to build unit tests])
+ fi
+ AC_DEFINE(UNITTESTS, 1, [Enable unit tests])
+ AC_SUBST([GLIB_LIBS])
+ AC_SUBST([GLIB_CFLAGS])
+fi
+AM_CONDITIONAL(UNITTESTS, [test "x$UNITTESTS" = xyes])
+
+AC_DEFINE(XTEST, 1, [Support XTest extension])
+AC_DEFINE(XSYNC, 1, [Support XSync extension])
+AC_DEFINE(XCMISC, 1, [Support XCMisc extension])
+AC_DEFINE(BIGREQS, 1, [Support BigRequests extension])
+
+if test "x$SPECIAL_DTRACE_OBJECTS" = "xyes" ; then
+ DIX_LIB='$(top_builddir)/dix/dix.O'
+ OS_LIB='$(top_builddir)/os/os.O $(SHA1_LIBS) $(DLOPEN_LIBS)'
+else
+ DIX_LIB='$(top_builddir)/dix/libdix.la'
+ OS_LIB='$(top_builddir)/os/libos.la'
+fi
+AC_SUBST([DIX_LIB])
+AC_SUBST([OS_LIB])
+
+MAIN_LIB='$(top_builddir)/dix/libmain.la'
+AC_SUBST([MAIN_LIB])
+
+MI_LIB='$(top_builddir)/mi/libmi.la'
+MI_EXT_LIB='$(top_builddir)/mi/libmiext.la'
+MI_INC='-I$(top_srcdir)/mi'
+FB_LIB='$(top_builddir)/fb/libfb.la'
+FB_INC='-I$(top_srcdir)/fb'
+MIEXT_SHADOW_INC='-I$(top_srcdir)/miext/shadow'
+MIEXT_SHADOW_LIB='$(top_builddir)/miext/shadow/libshadow.la'
+MIEXT_SYNC_INC='-I$(top_srcdir)/miext/sync'
+MIEXT_SYNC_LIB='$(top_builddir)/miext/sync/libsync.la'
+CORE_INCS='-I$(top_srcdir)/include -I$(top_builddir)/include'
+
+# SHA1 hashing
+AC_ARG_WITH([sha1],
+ [AS_HELP_STRING([--with-sha1=libc|libmd|libgcrypt|libcrypto|libsha1|CommonCrypto],
+ [choose SHA1 implementation])])
+AC_CHECK_FUNC([SHA1Init], [HAVE_SHA1_IN_LIBC=yes])
+if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_LIBC" = xyes; then
+ with_sha1=libc
+fi
+if test "x$with_sha1" = xlibc && test "x$HAVE_SHA1_IN_LIBC" != xyes; then
+ AC_MSG_ERROR([libc requested but not found])
+fi
+if test "x$with_sha1" = xlibc; then
+ AC_DEFINE([HAVE_SHA1_IN_LIBC], [1],
+ [Use libc SHA1 functions])
+ SHA1_LIBS=""
+fi
+AC_CHECK_FUNC([CC_SHA1_Init], [HAVE_SHA1_IN_COMMONCRYPTO=yes])
+if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_COMMONCRYPTO" = xyes; then
+ with_sha1=CommonCrypto
+fi
+if test "x$with_sha1" = xCommonCrypto && test "x$HAVE_SHA1_IN_COMMONCRYPTO" != xyes; then
+ AC_MSG_ERROR([CommonCrypto requested but not found])
+fi
+if test "x$with_sha1" = xCommonCrypto; then
+ AC_DEFINE([HAVE_SHA1_IN_COMMONCRYPTO], [1],
+ [Use CommonCrypto SHA1 functions])
+ SHA1_LIBS=""
+fi
+AC_CHECK_LIB([md], [SHA1Init], [HAVE_LIBMD=yes])
+if test "x$with_sha1" = x && test "x$HAVE_LIBMD" = xyes; then
+ with_sha1=libmd
+fi
+if test "x$with_sha1" = xlibmd && test "x$HAVE_LIBMD" != xyes; then
+ AC_MSG_ERROR([libmd requested but not found])
+fi
+if test "x$with_sha1" = xlibmd; then
+ AC_DEFINE([HAVE_SHA1_IN_LIBMD], [1],
+ [Use libmd SHA1 functions])
+ SHA1_LIBS=-lmd
+fi
+PKG_CHECK_MODULES([LIBSHA1], [libsha1], [HAVE_LIBSHA1=yes], [HAVE_LIBSHA1=no])
+if test "x$with_sha1" = x && test "x$HAVE_LIBSHA1" = xyes; then
+ with_sha1=libsha1
+fi
+if test "x$with_sha1" = xlibsha1 && test "x$HAVE_LIBSHA1" != xyes; then
+ AC_MSG_ERROR([libsha1 requested but not found])
+fi
+if test "x$with_sha1" = xlibsha1; then
+ AC_DEFINE([HAVE_SHA1_IN_LIBSHA1], [1],
+ [Use libsha1 for SHA1])
+ SHA1_LIBS=-lsha1
+fi
+AC_CHECK_LIB([gcrypt], [gcry_md_open], [HAVE_LIBGCRYPT=yes])
+if test "x$with_sha1" = x && test "x$HAVE_LIBGCRYPT" = xyes; then
+ with_sha1=libgcrypt
+fi
+if test "x$with_sha1" = xlibgcrypt && test "x$HAVE_LIBGCRYPT" != xyes; then
+ AC_MSG_ERROR([libgcrypt requested but not found])
+fi
+if test "x$with_sha1" = xlibgcrypt; then
+ AC_DEFINE([HAVE_SHA1_IN_LIBGCRYPT], [1],
+ [Use libgcrypt SHA1 functions])
+ SHA1_LIBS=-lgcrypt
+fi
+# We don't need all of the OpenSSL libraries, just libcrypto
+AC_CHECK_LIB([crypto], [SHA1_Init], [HAVE_LIBCRYPTO=yes])
+PKG_CHECK_MODULES([OPENSSL], [openssl], [HAVE_OPENSSL_PKC=yes],
+ [HAVE_OPENSSL_PKC=no])
+if test "x$HAVE_LIBCRYPTO" = xyes || test "x$HAVE_OPENSSL_PKC" = xyes; then
+ if test "x$with_sha1" = x; then
+ with_sha1=libcrypto
+ fi
+else
+ if test "x$with_sha1" = xlibcrypto; then
+ AC_MSG_ERROR([OpenSSL libcrypto requested but not found])
+ fi
+fi
+if test "x$with_sha1" = xlibcrypto; then
+ if test "x$HAVE_LIBCRYPTO" = xyes; then
+ SHA1_LIBS=-lcrypto
+ else
+ SHA1_LIBS="$OPENSSL_LIBS"
+ SHA1_CFLAGS="$OPENSSL_CFLAGS"
+ fi
+fi
+AC_MSG_CHECKING([for SHA1 implementation])
+if test "x$with_sha1" = x; then
+ AC_MSG_ERROR([No suitable SHA1 implementation found])
+fi
+AC_MSG_RESULT([$with_sha1])
+AC_SUBST(SHA1_LIBS)
+AC_SUBST(SHA1_CFLAGS)
+
+PKG_CHECK_MODULES([XSERVERCFLAGS], [$REQUIRED_MODULES $REQUIRED_LIBS])
+PKG_CHECK_MODULES([XSERVERLIBS], [$REQUIRED_LIBS])
+
+# Autotools has some unfortunate issues with library handling. In order to
+# get a server to rebuild when a dependency in the tree is changed, it must
+# be listed in SERVERNAME_DEPENDENCIES. However, no system libraries may be
+# listed there, or some versions of autotools will break (especially if a -L
+# is required to find the library). So, we keep two sets of libraries
+# detected: NAMESPACE_LIBS for in-tree libraries to be linked against, which
+# will go into the _DEPENDENCIES and _LDADD of the server, and
+# NAMESPACE_SYS_LIBS which will go into only the _LDADD. The
+# NAMESPACEMODULES_LIBS detected from pkgconfig should always go in
+# NAMESPACE_SYS_LIBS.
+#
+# XSERVER_LIBS is the set of in-tree libraries which all servers require.
+# XSERVER_SYS_LIBS is the set of out-of-tree libraries which all servers
+# require.
+#
+XSERVER_CFLAGS="${XSERVER_CFLAGS} ${XSERVERCFLAGS_CFLAGS}"
+XSERVER_LIBS="$DIX_LIB $MI_LIB $OS_LIB"
+XSERVER_SYS_LIBS="${XSERVERLIBS_LIBS} ${SYS_LIBS} ${LIBS}"
+AC_SUBST([XSERVER_LIBS])
+AC_SUBST([XSERVER_SYS_LIBS])
+
+UTILS_SYS_LIBS="${SYS_LIBS}"
+AC_SUBST([UTILS_SYS_LIBS])
+
+# The Xorg binary needs to export symbols so that they can be used from modules
+# Some platforms require extra flags to do this. libtool should set the
+# necessary flags for each platform when -export-dynamic is passed to it.
+LD_EXPORT_SYMBOLS_FLAG="-export-dynamic"
+AC_SUBST([LD_EXPORT_SYMBOLS_FLAG])
+
+dnl Imake defines SVR4 on SVR4 systems, and many files check for it, so
+dnl we need to replicate that here until those can all be fixed
+AC_MSG_CHECKING([if SVR4 needs to be defined])
+AC_EGREP_CPP([I_AM_SVR4],[
+#if defined(SVR4) || defined(__svr4__) || defined(__SVR4)
+ I_AM_SVR4
+#endif
+],[
+AC_DEFINE([SVR4],1,[Define to 1 on systems derived from System V Release 4])
+AC_MSG_RESULT([yes])], AC_MSG_RESULT([no]))
+
+XSERVER_CFLAGS="$XSERVER_CFLAGS $CORE_INCS $XEXT_INC $COMPOSITE_INC $DAMAGE_INC $FIXES_INC $XI_INC $MI_INC $MIEXT_SYNC_INC $MIEXT_SHADOW_INC $MIEXT_LAYER_INC $MIEXT_DAMAGE_INC $RENDER_INC $RANDR_INC $FB_INC"
+
+dnl ---------------------------------------------------------------------------
+dnl DDX section.
+dnl ---------------------------------------------------------------------------
+
+dnl Xvfb DDX
+
+AC_MSG_CHECKING([whether to build Xvfb DDX])
+AC_MSG_RESULT([$XVFB])
+AM_CONDITIONAL(XVFB, [test "x$XVFB" = xyes])
+
+if test "x$XVFB" = xyes; then
+ XVFB_LIBS="$FB_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB"
+ XVFB_SYS_LIBS="$XVFBMODULES_LIBS $GLX_SYS_LIBS"
+ AC_SUBST([XVFB_LIBS])
+ AC_SUBST([XVFB_SYS_LIBS])
+fi
+
+
+dnl Xnest DDX
+
+PKG_CHECK_MODULES(XNESTMODULES, [$LIBXEXT x11 xau $XDMCP_MODULES], [have_xnest=yes], [have_xnest=no])
+AC_MSG_CHECKING([whether to build Xnest DDX])
+if test "x$XNEST" = xauto; then
+ XNEST="$have_xnest"
+fi
+AC_MSG_RESULT([$XNEST])
+AM_CONDITIONAL(XNEST, [test "x$XNEST" = xyes])
+
+if test "x$XNEST" = xyes; then
+ if test "x$have_xnest" = xno; then
+ AC_MSG_ERROR([Xnest build explicitly requested, but required modules not found.])
+ fi
+ XNEST_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $DIX_LIB $MAIN_LIB $OS_LIB"
+ XNEST_SYS_LIBS="$XNESTMODULES_LIBS $GLX_SYS_LIBS"
+ AC_SUBST([XNEST_LIBS])
+ AC_SUBST([XNEST_SYS_LIBS])
+fi
+
+
+dnl Xorg DDX
+
+AC_MSG_CHECKING([whether to build Xorg DDX])
+if test "x$XORG" = xauto; then
+ XORG="yes"
+ case $host_os in
+ cygwin*) XORG="no" ;;
+ darwin*) XORG="no" ;;
+ esac
+fi
+AC_MSG_RESULT([$XORG])
+
+xorg_bus_linuxpci=no
+xorg_bus_bsdpci=no
+xorg_bus_sparc=no
+
+if test "x$XORG" = xyes; then
+ XORG_DDXINCS='-I$(top_srcdir)/hw/xfree86 -I$(top_srcdir)/hw/xfree86/include -I$(top_srcdir)/hw/xfree86/common'
+ XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
+ XORG_INCS="$XORG_DDXINCS $XORG_OSINCS"
+ XORG_CFLAGS="$XORGSERVER_CFLAGS -DHAVE_XORG_CONFIG_H"
+ XORG_LIBS="$COMPOSITE_LIB $FIXES_LIB $XEXTXORG_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB"
+
+ dnl ==================================================================
+ dnl symbol visibility
+ symbol_visibility=
+ have_visibility=disabled
+ if test x$SYMBOL_VISIBILITY != xno; then
+ AC_MSG_CHECKING(for symbol visibility support)
+ if test x$GCC = xyes; then
+ VISIBILITY_CFLAGS="-fvisibility=hidden"
+ else
+ AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
+ if test x$SUNCC = xyes; then
+ VISIBILITY_CFLAGS="-xldscope=hidden"
+ else
+ have_visibility=no
+ fi
+ fi
+ if test x$have_visibility != xno; then
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
+ AC_TRY_COMPILE(
+ [#include <X11/Xfuncproto.h>
+ extern _X_HIDDEN int hidden_int;
+ extern _X_EXPORT int public_int;
+ extern _X_HIDDEN int hidden_int_func(void);
+ extern _X_EXPORT int public_int_func(void);],
+ [],
+ have_visibility=yes,
+ have_visibility=no)
+ CFLAGS=$save_CFLAGS
+ fi
+ AC_MSG_RESULT([$have_visibility])
+ if test x$have_visibility != xno; then
+ symbol_visibility=$VISIBILITY_CFLAGS
+ XORG_CFLAGS="$XORG_CFLAGS $VISIBILITY_CFLAGS"
+ XSERVER_CFLAGS="$XSERVER_CFLAGS $VISIBILITY_CFLAGS"
+ fi
+ fi
+ dnl added to xorg-server.pc
+ AC_SUBST([symbol_visibility])
+ dnl ===================================================================
+
+ PKG_CHECK_MODULES([PCIACCESS], $LIBPCIACCESS)
+ SAVE_LIBS=$LIBS
+ SAVE_CFLAGS=$CFLAGS
+ CFLAGS=$PCIACCESS_CFLAGS
+ LIBS=$PCIACCESS_LIBS
+ AC_CHECK_FUNCS([pci_system_init_dev_mem])
+ AC_CHECK_FUNCS([pci_device_enable])
+ AC_CHECK_FUNCS([pci_device_is_boot_vga])
+ AC_CHECK_FUNCS([pci_device_vgaarb_init])
+ LIBS=$SAVE_LIBS
+ CFLAGS=$SAVE_CFLAGS
+ XORG_SYS_LIBS="$XORG_SYS_LIBS $PCIACCESS_LIBS $GLX_SYS_LIBS"
+ XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS"
+
+ case $host_os in
+ linux*)
+ if test "x$LNXAPM" = xyes; then
+ XORG_CFLAGS="$XORG_CFLAGS -DXF86PM"
+ fi
+ XORG_OS="linux"
+ XORG_OS_SUBDIR="linux"
+ xorg_bus_linuxpci="yes"
+ linux_acpi="no"
+ case $host_cpu in
+ ia64*)
+ linux_ia64=yes
+ linux_acpi="yes"
+ ;;
+ alpha*)
+ linux_alpha=yes
+ ;;
+ i*86|amd64*|x86_64*)
+ linux_acpi="yes"
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ XORG_OS="freebsd"
+ XORG_OS_SUBDIR="bsd"
+ xorg_bus_bsdpci="yes"
+ ;;
+ netbsd*)
+ XORG_OS="netbsd"
+ XORG_OS_SUBDIR="bsd"
+ xorg_bus_bsdpci="yes"
+ ;;
+ openbsd*)
+ if test "x$ac_cv_BSD_APM" = xyes \
+ -o "x$ac_cv_BSD_KQUEUE_APM" = xyes; then
+ XORG_CFLAGS="$XORG_CFLAGS -DXF86PM"
+ fi
+ XORG_OS="openbsd"
+ XORG_OS_SUBDIR="bsd"
+ xorg_bus_bsdpci="yes"
+ ;;
+ solaris*)
+ XORG_OS="solaris"
+ XORG_OS_SUBDIR="solaris"
+ XORG_CFLAGS="$XORG_CFLAGS -DXF86PM"
+ # Use the same stubs as BSD for old functions, since we now
+ # use libpciaccess for PCI
+ xorg_bus_bsdpci="yes"
+ AC_CHECK_HEADERS([sys/kd.h])
+ AC_CHECK_HEADERS([sys/vt.h], [solaris_vt=yes], [solaris_vt=no])
+ # Check for minimum supported release
+ AC_MSG_CHECKING([Solaris version])
+ OS_MINOR=`echo ${host_os}|$SED -e 's/^.*solaris2\.//' -e s'/\..*$//'`
+ if test "${OS_MINOR}" -ge 7 ; then
+ AC_MSG_RESULT(Solaris ${OS_MINOR})
+ else
+ AC_MSG_RESULT(Solaris `echo ${host_os}|$SED -e 's/^.*solaris//`)
+ fi
+ if test "${OS_MINOR}" -lt 8 ; then
+ AC_MSG_ERROR([This release no longer supports Solaris versions older than Solaris 8.])
+ fi
+ AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
+ if test "x$SUNCC" = "xyes"; then
+ solaris_asm_inline="yes"
+ fi
+ AC_CHECK_DECL([_LP64], [SOLARIS_64="yes"], [SOLARIS_64="no"])
+
+ case $host_cpu in
+ sparc*)
+ SOLARIS_INOUT_ARCH="sparcv8plus"
+ ;;
+ i*86)
+ if test x$SOLARIS_64 = xyes ; then
+ SOLARIS_INOUT_ARCH="amd64"
+ else
+ SOLARIS_INOUT_ARCH="ia32"
+ fi
+ ;;
+ *)
+ AC_MSG_ERROR([Unsupported Solaris platform. Only SPARC & x86 \
+ are supported on Solaris in this release. If you are \
+ interested in porting Xorg to your platform, please email \
+ xorg@lists.freedesktop.org.]) ;;
+ esac
+ AC_SUBST([SOLARIS_INOUT_ARCH])
+ if test x$solaris_asm_inline = xyes ; then
+ SOLARIS_ASM_CFLAGS='$(top_srcdir)/hw/xfree86/os-support/solaris/solaris-$(SOLARIS_INOUT_ARCH).il'
+ XORG_CFLAGS="${XORG_CFLAGS} "'$(SOLARIS_ASM_CFLAGS)'
+ fi
+ AC_SUBST([SOLARIS_ASM_CFLAGS])
+ if test "x$SUPPORT_PC98" = xauto; then
+ SUPPORT_PC98="no"
+ fi
+ ;;
+ gnu*)
+ XORG_OS="gnu"
+ XORG_OS_SUBDIR="hurd"
+ # Use the same stubs as BSD for old functions, since we now
+ # use libpciaccess for PCI
+ xorg_bus_bsdpci="yes"
+ ;;
+ *)
+ XORG_OS="unknown"
+ XORG_OS_SUBDIR="unknown"
+ AC_MSG_ERROR([m4_text_wrap(m4_join([ ],
+ [Your OS is unknown. Xorg currently only supports Linux,],
+ [Free/Open/Net/DragonFlyBSD, Solaris/OpenSolaris, & GNU Hurd.],
+ [If you are interested in porting Xorg to your platform,],
+ [please email xorg@lists.freedesktop.org.]))])
+ ;;
+ esac
+
+ case $host_cpu in
+ sparc*)
+ xorg_bus_sparc="yes"
+ ;;
+ i*86)
+ if test "x$SUPPORT_PC98" = xauto; then
+ SUPPORT_PC98="yes"
+ fi
+ ;;
+ esac
+
+ if test "x$SUPPORT_PC98" = xauto; then
+ SUPPORT_PC98="no"
+ fi
+ if test "x$SUPPORT_PC98" = xyes; then
+ AC_DEFINE(SUPPORT_PC98, 1, [Support PC98])
+ fi
+ if test "x$XORG_OS_PCI" = x ; then
+ XORG_OS_PCI=$XORG_OS
+ fi
+ if test "x$DGA" = xauto; then
+ PKG_CHECK_MODULES(DGA, $DGAPROTO, [DGA=yes], [DGA=no])
+ fi
+ if test "x$DGA" = xyes; then
+ XORG_MODULES="$XORG_MODULES $DGAPROTO"
+ PKG_CHECK_MODULES(DGA, $DGAPROTO)
+ AC_DEFINE(DGA, 1, [Support DGA extension])
+ AC_DEFINE(XFreeXDGA, 1, [Build XDGA support])
+ fi
+
+ if test "x$XF86VIDMODE" = xauto; then
+ PKG_CHECK_MODULES(XF86VIDMODE, $VIDMODEPROTO, [XF86VIDMODE=yes], [XF86VIDMODE=no])
+ fi
+ if test "x$XF86VIDMODE" = xyes; then
+ XORG_MODULES="$XORG_MODULES $VIDMODEPROTO"
+ PKG_CHECK_MODULES(XF86VIDMODE, $VIDMODEPROTO)
+ AC_DEFINE(XF86VIDMODE, 1, [Support XFree86 Video Mode extension])
+ fi
+
+ if test -n "$XORG_MODULES"; then
+ PKG_CHECK_MODULES(XORG_MODULES, [$XORG_MODULES])
+ XORG_CFLAGS="$XORG_CFLAGS $XORG_MODULES_CFLAGS"
+ XORG_SYS_LIBS="$XORG_SYS_LIBS $XORG_MODULES_LIBS"
+ fi
+
+ AC_SUBST([XORG_LIBS])
+ AC_SUBST([XORG_SYS_LIBS])
+ AC_SUBST([XORG_INCS])
+ AC_SUBST([XORG_OS])
+ AC_SUBST([XORG_OS_SUBDIR])
+
+ AC_PATH_PROG(PERL, perl, no)
+ dnl unlikely as this may be ...
+ if test "x$PERL" = xno; then
+ AC_MSG_ERROR([Perl is required to build the XFree86/Xorg DDX.])
+ fi
+ AC_SUBST(PERL)
+
+ AC_SUBST([XORG_CFLAGS])
+
+ dnl these only go in xorg-config.h
+ XF86CONFIGFILE="xorg.conf"
+ XF86CONFIGDIR="xorg.conf.d"
+ AC_SUBST(XF86CONFIGDIR)
+ CONFIGFILE="$sysconfdir/$XF86CONFIGFILE"
+ LOGPREFIX="$logdir/Xorg."
+ AC_DEFINE(XORG_SERVER, 1, [Building Xorg server])
+ AC_DEFINE(XORGSERVER, 1, [Building Xorg server])
+ AC_DEFINE(XFree86Server, 1, [Building XFree86 server])
+ AC_DEFINE(XFree86LOADER, 1, [Building loadable XFree86 server])
+ AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
+ AC_DEFINE(NEED_XF86_TYPES, 1, [Need XFree86 typedefs])
+ AC_DEFINE(NEED_XF86_PROTOTYPES, 1, [Need XFree86 helper functions])
+ AC_DEFINE(__XSERVERNAME__, "Xorg", [Name of X server])
+ AC_DEFINE_DIR(__XCONFIGFILE__, XF86CONFIGFILE, [Name of configuration file])
+ AC_DEFINE_DIR(XF86CONFIGFILE, XF86CONFIGFILE, [Name of configuration file])
+ AC_DEFINE_DIR(__XCONFIGDIR__, XF86CONFIGDIR, [Name of configuration directory])
+ AC_DEFINE_DIR(DEFAULT_MODULE_PATH, moduledir, [Default module search path])
+ AC_DEFINE_DIR(DEFAULT_LIBRARY_PATH, libdir, [Default library install path])
+ AC_DEFINE_DIR(DEFAULT_LOGPREFIX, LOGPREFIX, [Default log location])
+ AC_DEFINE_UNQUOTED(__VENDORDWEBSUPPORT__, ["$VENDOR_WEB"], [Vendor web address for support])
+ AC_DEFINE(XSERVER_LIBPCIACCESS, 1, [Use libpciaccess for all pci manipulation])
+ if test "x$VGAHW" = xyes; then
+ AC_DEFINE(WITH_VGAHW, 1, [Building vgahw module])
+ fi
+
+ driverdir="$moduledir/drivers"
+ AC_SUBST([moduledir])
+ AC_SUBST([driverdir])
+ sdkdir="$includedir/xorg"
+ extdir="$includedir/X11/extensions"
+ sysconfigdir="$datadir/X11/$XF86CONFIGDIR"
+ AC_SUBST([sdkdir])
+ AC_SUBST([extdir])
+ AC_SUBST([sysconfigdir])
+ AC_SUBST([logdir])
+
+ # stuff the ABI versions into the pc file too
+ extract_abi() {
+ grep ^.define.*${1}_VERSION ${srcdir}/hw/xfree86/common/xf86Module.h | tr '(),' ' .' | awk '{ print $4$5 }'
+ }
+ abi_ansic=`extract_abi ANSIC`
+ abi_videodrv=`extract_abi VIDEODRV`
+ abi_xinput=`extract_abi XINPUT`
+ abi_extension=`extract_abi EXTENSION`
+ AC_SUBST([abi_ansic])
+ AC_SUBST([abi_videodrv])
+ AC_SUBST([abi_xinput])
+ AC_SUBST([abi_extension])
+fi
+AM_CONDITIONAL([XORG], [test "x$XORG" = xyes])
+AM_CONDITIONAL([XORG_BUS_LINUXPCI], [test "x$xorg_bus_linuxpci" = xyes])
+AM_CONDITIONAL([XORG_BUS_BSDPCI], [test "x$xorg_bus_bsdpci" = xyes])
+AM_CONDITIONAL([XORG_BUS_SPARC], [test "x$xorg_bus_sparc" = xyes])
+AM_CONDITIONAL([LINUX_IA64], [test "x$linux_ia64" = xyes])
+AM_CONDITIONAL([LINUX_ALPHA], [test "x$linux_alpha" = xyes])
+AM_CONDITIONAL([LNXACPI], [test "x$linux_acpi" = xyes])
+AM_CONDITIONAL([SOLARIS_ASM_INLINE], [test "x$solaris_asm_inline" = xyes])
+AM_CONDITIONAL([SOLARIS_VT], [test "x$solaris_vt" = xyes])
+AM_CONDITIONAL([DGA], [test "x$DGA" = xyes])
+AM_CONDITIONAL([XF86VIDMODE], [test "x$XF86VIDMODE" = xyes])
+
+dnl XWin DDX
+
+AC_MSG_CHECKING([whether to build XWin DDX])
+if test "x$XWIN" = xauto; then
+ case $host_os in
+ cygwin*) XWIN="yes" ;;
+ mingw*) XWIN="yes" ;;
+ *) XWIN="no" ;;
+ esac
+fi
+AC_MSG_RESULT([$XWIN])
+
+if test "x$XWIN" = xyes; then
+ AC_DEFINE_DIR(SYSCONFDIR, sysconfdir, [Location of system.XWinrc])
+ AC_DEFINE_DIR(DEFAULT_LOGDIR, logdir, [Default log location])
+ AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
+ AC_DEFINE_UNQUOTED(__VENDORDWEBSUPPORT__, ["$VENDOR_WEB"], [Vendor web address for support])
+ AC_CHECK_TOOL(WINDRES, windres)
+
+ PKG_CHECK_MODULES([XWINMODULES],[x11 xdmcp xau])
+
+ if test "x$WINDOWSWM" = xauto; then
+ PKG_CHECK_EXISTS($WINDOWSWMPROTO, [WINDOWSWM=yes], [WINDOWSWM=no])
+ fi
+ if test "x$WINDOWSWM" = xyes ; then
+ PKG_CHECK_MODULES(WINDOWSWM, $WINDOWSWMPROTO)
+ XWINMODULES_CFLAGS="$XWINMODULES_CFLAGS $WINDOWSWM_CFLAGS"
+ AC_DEFINE(ROOTLESS,1,[Build Rootless code])
+ fi
+
+ case $host_os in
+ cygwin*)
+ XWIN_SERVER_NAME=XWin
+ AC_DEFINE(HAS_DEVWINDOWS,1,[Cygwin has /dev/windows for signaling new win32 messages])
+ ;;
+ mingw*)
+ XWIN_SERVER_NAME=Xming
+ AC_DEFINE(RELOCATE_PROJECTROOT,1,[Make PROJECT_ROOT relative to the xserver location])
+ AC_DEFINE(HAS_WINSOCK,1,[Use Windows sockets])
+ XWIN_SYS_LIBS=-lwinsock2
+ ;;
+ esac
+ XWIN_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $RANDR_LIB $RENDER_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $OS_LIB"
+ XWIN_SYS_LIBS="$XWIN_SYS_LIBS $XWINMODULES_LIBS"
+ AC_SUBST(XWIN_LIBS)
+ AC_SUBST(XWIN_SERVER_NAME)
+ AC_SUBST(XWIN_SYS_LIBS)
+
+ if test "x$DEBUGGING" = xyes; then
+ AC_DEFINE(CYGDEBUG, 1, [Simple debug messages])
+ AC_DEFINE(CYGWINDOWING_DEBUG, 1, [Debug messages for window handling])
+ AC_DEFINE(CYGMULTIWINDOW_DEBUG, 1, [Debug window manager])
+ fi
+
+ AC_DEFINE(DDXOSVERRORF, 1, [Use OsVendorVErrorF])
+ AC_DEFINE(DDXBEFORERESET, 1, [Use ddxBeforeReset ])
+fi
+AM_CONDITIONAL(XWIN, [test "x$XWIN" = xyes])
+AM_CONDITIONAL(XWIN_MULTIWINDOW, [test "x$XWIN" = xyes])
+AM_CONDITIONAL(XWIN_MULTIWINDOWEXTWM, [test "x$XWIN" = xyes && test "x$WINDOWSWM" = xyes])
+AM_CONDITIONAL(XWIN_CLIPBOARD, [test "x$XWIN" = xyes])
+AM_CONDITIONAL(XWIN_GLX_WINDOWS, [test "x$XWIN" = xyes && false])
+AM_CONDITIONAL(XWIN_NATIVEGDI, [test "x$XWIN" = xyes])
+AM_CONDITIONAL(XWIN_PRIMARYFB, [test "x$XWIN" = xyes])
+AM_CONDITIONAL(XWIN_RANDR, [test "x$XWIN" = xyes])
+AM_CONDITIONAL(XWIN_XV, [test "x$XWIN" = xyes && test "x$XV" = xyes])
+
+dnl Darwin / OS X DDX
+if test "x$XQUARTZ" = xyes; then
+ AC_DEFINE(XQUARTZ,1,[Have Quartz])
+ AC_DEFINE(ROOTLESS,1,[Build Rootless code])
+
+ DARWIN_LIBS="$MI_LIB $OS_LIB $DIX_LIB $MAIN_LIB $FB_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $XPSTUBS_LIB"
+ AC_SUBST([DARWIN_LIBS])
+
+ AC_CHECK_LIB([Xplugin],[xp_init],[:])
+
+ CFLAGS="${CFLAGS} -DROOTLESS_SAFEALPHA -DNO_ALLOCA"
+
+ PKG_CHECK_MODULES(XPBPROXY, $APPLEWMPROTO $LIBAPPLEWM xfixes x11)
+
+ if test "x$XQUARTZ_SPARKLE" = xyes ; then
+ AC_DEFINE(XQUARTZ_SPARKLE,1,[Support application updating through sparkle.])
+ fi
+
+ if test "x$STANDALONE_XPBPROXY" = xyes ; then
+ AC_DEFINE(STANDALONE_XPBPROXY,1,[Build a standalone xpbproxy])
+ fi
+fi
+
+# Support for objc in autotools is minimal and not documented.
+OBJC='$(CC)'
+OBJCLD='$(CCLD)'
+OBJCLINK='$(LINK)'
+OBJCFLAGS='$(CFLAGS)'
+AC_SUBST([OBJC])
+AC_SUBST([OBJCCLD])
+AC_SUBST([OBJCLINK])
+AC_SUBST([OBJCFLAGS])
+# internal, undocumented automake func follows :(
+_AM_DEPENDENCIES([OBJC])
+AM_CONDITIONAL(XQUARTZ, [test "x$XQUARTZ" = xyes])
+AM_CONDITIONAL(XQUARTZ_SPARKLE, [test "x$XQUARTZ_SPARKLE" != "xno"])
+AM_CONDITIONAL(STANDALONE_XPBPROXY, [test "x$STANDALONE_XPBPROXY" = xyes])
+
+dnl DMX DDX
+PKG_CHECK_MODULES(
+ [DMXMODULES],
+ [xmuu $LIBXEXT x11 xrender xfixes $LIBXI $DMXPROTO xau $XDMCP_MODULES],
+ [PKG_CHECK_MODULES(
+ [XDMXCONFIG_DEP],
+ [xaw7 xmu xt xpm x11],
+ [have_dmx=yes],
+ [have_dmx=no])],
+ [have_dmx=no])
+AC_MSG_CHECKING([whether to build Xdmx DDX])
+if test "x$DMX" = xauto; then
+ DMX="$have_dmx"
+ case $host_os in
+ cygwin*) DMX="no" ;;
+ darwin*) DMX="no" ;;
+ esac
+fi
+AC_MSG_RESULT([$DMX])
+AM_CONDITIONAL(DMX, [test "x$DMX" = xyes])
+
+if test "x$DMX" = xyes; then
+ if test "x$have_dmx" = xno; then
+ AC_MSG_ERROR([Xdmx build explicitly requested, but required
+ modules not found.])
+ fi
+ DMX_INCLUDES="$XEXT_INC $RENDER_INC $RECORD_INC"
+ XDMX_CFLAGS="$DMXMODULES_CFLAGS"
+ XDMX_LIBS="$FB_LIB $MI_LIB $XEXT_LIB $RENDER_LIB $RECORD_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $MIEXT_SYNC_LIB $MIEXT_SHADOW_LIB $MIEXT_DAMAGE_LIB $COMPOSITE_LIB $DAMAGE_LIB $MAIN_LIB $DIX_LIB $CONFIG_LIB $OS_LIB $FIXES_LIB"
+ XDMX_SYS_LIBS="$DMXMODULES_LIBS"
+ AC_SUBST([XDMX_CFLAGS])
+ AC_SUBST([XDMX_LIBS])
+ AC_SUBST([XDMX_SYS_LIBS])
+
+dnl USB sources in DMX require <linux/input.h>
+ AC_CHECK_HEADER([linux/input.h], DMX_BUILD_USB="yes",
+ DMX_BUILD_USB="no")
+dnl Linux sources in DMX require <linux/keyboard.h>
+ AC_CHECK_HEADER([linux/keyboard.h], DMX_BUILD_LNX="yes",
+ DMX_BUILD_LNX="no")
+ AC_SUBST(XDMXCONFIG_DEP_CFLAGS)
+ AC_SUBST(XDMXCONFIG_DEP_LIBS)
+ PKG_CHECK_MODULES([DMXEXAMPLES_DEP], [$LIBDMX $LIBXEXT x11])
+ AC_SUBST(DMXEXAMPLES_DEP_LIBS)
+ PKG_CHECK_MODULES([DMXXMUEXAMPLES_DEP], [$LIBDMX xmu $LIBXEXT x11])
+ AC_SUBST(DMXXMUEXAMPLES_DEP_LIBS)
+ PKG_CHECK_MODULES([DMXXIEXAMPLES_DEP], [$LIBDMX $LIBXI $LIBXEXT x11])
+ AC_SUBST(DMXXIEXAMPLES_DEP_LIBS)
+ PKG_CHECK_MODULES([XTSTEXAMPLES_DEP], [$LIBXTST $LIBXEXT x11])
+ AC_SUBST(XTSTEXAMPLES_DEP_LIBS)
+ PKG_CHECK_MODULES([XRESEXAMPLES_DEP], [xres $LIBXEXT x11])
+ AC_SUBST(XRESEXAMPLES_DEP_LIBS)
+ PKG_CHECK_MODULES([X11EXAMPLES_DEP], [$LIBXEXT x11])
+ AC_SUBST(X11EXAMPLES_DEP_LIBS)
+
+fi
+AM_CONDITIONAL([DMX_BUILD_LNX], [test "x$DMX_BUILD_LNX" = xyes])
+AM_CONDITIONAL([DMX_BUILD_USB], [test "x$DMX_BUILD_USB" = xyes])
+
+dnl kdrive DDX
+
+XEPHYR_LIBS=
+XEPHYR_INCS=
+
+AM_CONDITIONAL(KDRIVE, [test x$KDRIVE = xyes])
+
+if test "$KDRIVE" = yes; then
+ AC_DEFINE(KDRIVESERVER,1,[Build Kdrive X server])
+ AC_DEFINE(KDRIVEDDXACTIONS,,[Build kdrive ddx])
+
+ AC_CHECK_HEADERS([linux/fb.h])
+ if test "$ac_cv_header_linux_fb_h" = yes && test "x$XFBDEV" = xauto; then
+ XFBDEV=yes
+ fi
+
+ if test "x$XFBDEV" = xyes; then
+ KDRIVEFBDEVLIB=yes
+ AC_DEFINE(KDRIVEFBDEV, 1, [Build fbdev-based kdrive server])
+ fi
+
+
+ PKG_CHECK_MODULES([TSLIB], [tslib-0.0], [HAVE_TSLIB="yes"], [HAVE_TSLIB="no"])
+ if test "x$HAVE_TSLIB" = xno; then
+ AC_CHECK_LIB(ts, ts_open, [
+ HAVE_TSLIB="yes"
+ TSLIB_LIBS="-lts"
+ ])
+ fi
+
+ if test "xTSLIB" = xauto; then
+ TSLIB="$HAVE_TSLIB"
+ fi
+
+ if test "x$TSLIB" = xyes; then
+ if ! test "x$HAVE_TSLIB" = xyes; then
+ AC_MSG_ERROR([tslib must be installed to build the tslib driver. See http://tslib.berlios.de/])
+ else
+ AC_DEFINE(TSLIB, 1, [Have tslib support])
+ fi
+ fi
+
+ if test "x$KDRIVE_KBD" = xyes; then
+ AC_DEFINE(KDRIVE_KBD, 1, [Enable KDrive kbd driver])
+ fi
+ if test "x$KDRIVE_EVDEV" = xyes; then
+ AC_DEFINE(KDRIVE_EVDEV, 1, [Enable KDrive evdev driver])
+ fi
+ if test "x$KDRIVE_MOUSE" = xyes; then
+ AC_DEFINE(KDRIVE_MOUSE, 1, [Enable KDrive mouse driver])
+ fi
+
+ XEPHYR_REQUIRED_LIBS="x11 $LIBXEXT xau xdmcp"
+ if test "x$XV" = xyes; then
+ XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS xv"
+ fi
+ if test "x$DRI" = xyes && test "x$GLX" = xyes; then
+ XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS $LIBGL libdrm"
+ fi
+
+ PKG_CHECK_MODULES(XEPHYR, $XEPHYR_REQUIRED_LIBS, [xephyr="yes"], [xephyr="no"])
+ if test "x$XEPHYR" = xauto; then
+ XEPHYR=$xephyr
+ fi
+ if test "x$XEPHYR" = xyes && test "x$xephyr" = xno; then
+ AC_MSG_ERROR([Xephyr dependencies missing])
+ fi
+
+ # Xephyr needs nanosleep() which is in librt on Solaris
+ AC_CHECK_FUNC([nanosleep], [],
+ AC_CHECK_LIB([rt], [nanosleep], XEPHYR_LIBS="$XEPHYR_LIBS -lrt"))
+
+ # damage shadow extension glx (NOTYET) fb mi
+ KDRIVE_INC='-I$(top_srcdir)/hw/kdrive/src'
+ KDRIVE_PURE_INCS="$KDRIVE_INC $MIEXT_SYNC_INC $MIEXT_DAMAGE_INC $MIEXT_SHADOW_INC $XEXT_INC $FB_INC $MI_INC"
+ KDRIVE_OS_INC='-I$(top_srcdir)/hw/kdrive/linux'
+ KDRIVE_INCS="$KDRIVE_PURE_INCS $KDRIVE_OS_INC"
+
+ KDRIVE_CFLAGS="$XSERVER_CFLAGS -DHAVE_KDRIVE_CONFIG_H $TSLIB_CFLAGS"
+
+ KDRIVE_PURE_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $OS_LIB"
+ KDRIVE_LIB='$(top_builddir)/hw/kdrive/src/libkdrive.la'
+ case $host_os in
+ *linux*)
+ KDRIVE_OS_LIB='$(top_builddir)/hw/kdrive/linux/liblinux.la'
+ KDRIVELINUX=yes
+ if test "x$KDRIVE_EVDEV" = xauto; then
+ KDRIVE_EVDEV=yes
+ fi
+ if test "x$KDRIVE_KBD" = xauto; then
+ KDRIVE_KBD=yes
+ fi
+ if test "x$KDRIVE_MOUSE" = xauto; then
+ KDRIVE_MOUSE=yes
+ fi
+ ;;
+ *)
+ if test "x$KDRIVE_EVDEV" = xauto; then
+ KDRIVE_EVDEV=no
+ fi
+ if test "x$KDRIVE_KBD" = xauto; then
+ KDRIVE_KBD=no
+ fi
+ if test "x$KDRIVE_MOUSE" = xauto; then
+ KDRIVE_MOUSE=no
+ fi
+ ;;
+ esac
+ KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.la'
+ KDRIVE_LOCAL_LIBS="$MAIN_LIB $DIX_LIB $KDRIVE_LIB $KDRIVE_STUB_LIB"
+ KDRIVE_LOCAL_LIBS="$KDRIVE_LOCAL_LIBS $FB_LIB $MI_LIB $KDRIVE_PURE_LIBS"
+ KDRIVE_LOCAL_LIBS="$KDRIVE_LOCAL_LIBS $KDRIVE_OS_LIB"
+ KDRIVE_LIBS="$KDRIVE_LOCAL_LIBS $XSERVER_SYS_LIBS $GLX_SYS_LIBS $DLOPEN_LIBS $TSLIB_LIBS"
+
+ AC_SUBST([XEPHYR_LIBS])
+ AC_SUBST([XEPHYR_INCS])
+fi
+AC_SUBST([KDRIVE_INCS])
+AC_SUBST([KDRIVE_PURE_INCS])
+AC_SUBST([KDRIVE_CFLAGS])
+AC_SUBST([KDRIVE_PURE_LIBS])
+AC_SUBST([KDRIVE_LOCAL_LIBS])
+AC_SUBST([KDRIVE_LIBS])
+AM_CONDITIONAL(KDRIVELINUX, [test "x$KDRIVELINUX" = xyes])
+AM_CONDITIONAL(KDRIVE_EVDEV, [test "x$KDRIVE_EVDEV" = xyes])
+AM_CONDITIONAL(KDRIVE_KBD, [test "x$KDRIVE_KBD" = xyes])
+AM_CONDITIONAL(KDRIVE_MOUSE, [test "x$KDRIVE_MOUSE" = xyes])
+AM_CONDITIONAL(TSLIB, [test "x$HAVE_TSLIB" = xyes])
+AM_CONDITIONAL(KDRIVEFBDEV, [test "x$XFBDEV" = xyes])
+AM_CONDITIONAL(XEPHYR, [test "x$KDRIVE" = xyes && test "x$XEPHYR" = xyes])
+AM_CONDITIONAL(BUILD_KDRIVEFBDEVLIB, [test "x$KDRIVE" = xyes && test "x$KDRIVEFBDEVLIB" = xyes])
+AM_CONDITIONAL(XFAKESERVER, [test "x$KDRIVE" = xyes && test "x$XFAKE" = xyes])
+
+dnl and the rest of these are generic, so they're in config.h
+dnl
+dnl though, thanks to the passing of some significant amount of time, the
+dnl above is probably a complete fallacy, and you should not rely on it.
+dnl but this is still actually better than imake, honest. -daniels
+
+AC_TRY_COMPILE([
+#include <features.h>
+#ifndef __GLIBC__
+#error not glibc
+#endif
+], [], [AC_DEFINE(_GNU_SOURCE, 1,
+ [ Enable GNU and other extensions to the C environment for glibc])])
+
+AC_DEFINE_DIR(PROJECTROOT, prefix, [Overall prefix])
+
+AC_SUBST([RELEASE_DATE])
+BUILD_DATE="`date +'%Y%m%d'`"
+AC_SUBST([BUILD_DATE])
+BUILD_TIME="`date +'1%H%M%S'`"
+AC_SUBST([BUILD_TIME])
+
+DIX_CFLAGS="-DHAVE_DIX_CONFIG_H $XSERVER_CFLAGS"
+
+AC_SUBST([DIX_CFLAGS])
+
+AC_SUBST([libdir])
+AC_SUBST([exec_prefix])
+AC_SUBST([prefix])
+
+AC_OUTPUT([
+Makefile
+glx/Makefile
+include/Makefile
+composite/Makefile
+damageext/Makefile
+dbe/Makefile
+dix/Makefile
+doc/Makefile
+doc/man/Makefile
+doc/xml/Makefile
+doc/xml/dtrace/Makefile
+doc/xml/xserver.ent
+fb/Makefile
+record/Makefile
+config/Makefile
+mi/Makefile
+miext/Makefile
+miext/sync/Makefile
+miext/damage/Makefile
+miext/shadow/Makefile
+miext/cw/Makefile
+miext/rootless/Makefile
+os/Makefile
+randr/Makefile
+render/Makefile
+xkb/Makefile
+Xext/Makefile
+Xi/Makefile
+xfixes/Makefile
+exa/Makefile
+hw/Makefile
+hw/xfree86/Makefile
+hw/xfree86/common/Makefile
+hw/xfree86/common/xf86Build.h
+hw/xfree86/ddc/Makefile
+hw/xfree86/dixmods/Makefile
+hw/xfree86/dixmods/extmod/Makefile
+hw/xfree86/doc/Makefile
+hw/xfree86/doc/devel/Makefile
+hw/xfree86/doc/man/Makefile
+hw/xfree86/doc/sgml/Makefile
+hw/xfree86/dri/Makefile
+hw/xfree86/dri2/Makefile
+hw/xfree86/exa/Makefile
+hw/xfree86/exa/man/Makefile
+hw/xfree86/fbdevhw/Makefile
+hw/xfree86/fbdevhw/man/Makefile
+hw/xfree86/i2c/Makefile
+hw/xfree86/int10/Makefile
+hw/xfree86/loader/Makefile
+hw/xfree86/modes/Makefile
+hw/xfree86/os-support/Makefile
+hw/xfree86/os-support/bsd/Makefile
+hw/xfree86/os-support/bus/Makefile
+hw/xfree86/os-support/hurd/Makefile
+hw/xfree86/os-support/misc/Makefile
+hw/xfree86/os-support/linux/Makefile
+hw/xfree86/os-support/solaris/Makefile
+hw/xfree86/parser/Makefile
+hw/xfree86/ramdac/Makefile
+hw/xfree86/shadowfb/Makefile
+hw/xfree86/vbe/Makefile
+hw/xfree86/vgahw/Makefile
+hw/xfree86/x86emu/Makefile
+hw/xfree86/xaa/Makefile
+hw/xfree86/utils/Makefile
+hw/xfree86/utils/man/Makefile
+hw/xfree86/utils/cvt/Makefile
+hw/xfree86/utils/gtf/Makefile
+hw/dmx/config/Makefile
+hw/dmx/config/man/Makefile
+hw/dmx/doc/Makefile
+hw/dmx/examples/Makefile
+hw/dmx/input/Makefile
+hw/dmx/glxProxy/Makefile
+hw/dmx/Makefile
+hw/dmx/man/Makefile
+hw/vfb/Makefile
+hw/vfb/man/Makefile
+hw/xnest/Makefile
+hw/xnest/man/Makefile
+hw/xwin/Makefile
+hw/xwin/glx/Makefile
+hw/xwin/man/Makefile
+hw/xquartz/Makefile
+hw/xquartz/GL/Makefile
+hw/xquartz/bundle/Makefile
+hw/xquartz/man/Makefile
+hw/xquartz/mach-startup/Makefile
+hw/xquartz/pbproxy/Makefile
+hw/xquartz/xpr/Makefile
+hw/kdrive/Makefile
+hw/kdrive/ephyr/Makefile
+hw/kdrive/ephyr/man/Makefile
+hw/kdrive/fake/Makefile
+hw/kdrive/fbdev/Makefile
+hw/kdrive/linux/Makefile
+hw/kdrive/src/Makefile
+test/Makefile
+test/xi2/Makefile
+xorg-server.pc
+])
diff --git a/xorg-server/fb/Makefile.am b/xorg-server/fb/Makefile.am
index 0863d7c07..1b0302ed1 100644
--- a/xorg-server/fb/Makefile.am
+++ b/xorg-server/fb/Makefile.am
@@ -1,9 +1,5 @@
noinst_LTLIBRARIES = libfb.la libwfb.la
-INCLUDES = \
- -I$(top_srcdir)/hw/xfree86/os-support \
- -I$(top_srcdir)/hw/xfree86/os-support/bus \
- -I$(top_srcdir)/hw/xfree86/common
AM_CFLAGS = $(DIX_CFLAGS)
if XORG
diff --git a/xorg-server/glx/glxcmds.c b/xorg-server/glx/glxcmds.c
index c14533805..dfe345c7f 100644
--- a/xorg-server/glx/glxcmds.c
+++ b/xorg-server/glx/glxcmds.c
@@ -1,2372 +1,2391 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#else
-
-#include "glheader.h"
-
-#endif
-
-#include <string.h>
-#include <assert.h>
-
-#include "glxserver.h"
-#include <GL/glxtokens.h>
-#include <unpack.h>
-#include <pixmapstr.h>
-#include <windowstr.h>
-#include "glxutil.h"
-#include "glxext.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
-#include "indirect_dispatch.h"
-#include "indirect_table.h"
-#include "indirect_util.h"
-
-static int
-validGlxScreen(ClientPtr client, int screen, __GLXscreen **pGlxScreen, int *err)
-{
- /*
- ** Check if screen exists.
- */
- if (screen < 0 || screen >= screenInfo.numScreens) {
- client->errorValue = screen;
- *err = BadValue;
- return FALSE;
- }
- *pGlxScreen = glxGetScreen(screenInfo.screens[screen]);
-
- return TRUE;
-}
-
-static int
-validGlxFBConfig(ClientPtr client, __GLXscreen *pGlxScreen, XID id,
- __GLXconfig **config, int *err)
-{
- __GLXconfig *m;
-
- for (m = pGlxScreen->fbconfigs; m != NULL; m = m->next)
- if (m->fbconfigID == id) {
- *config = m;
- return TRUE;
- }
-
- client->errorValue = id;
- *err = __glXError(GLXBadFBConfig);
-
- return FALSE;
-}
-
-static int
-validGlxVisual(ClientPtr client, __GLXscreen *pGlxScreen, XID id,
- __GLXconfig **config, int *err)
-{
- int i;
-
- for (i = 0; i < pGlxScreen->numVisuals; i++)
- if (pGlxScreen->visuals[i]->visualID == id) {
- *config = pGlxScreen->visuals[i];
- return TRUE;
- }
-
- client->errorValue = id;
- *err = BadValue;
-
- return FALSE;
-}
-
-static int
-validGlxFBConfigForWindow(ClientPtr client, __GLXconfig *config,
- DrawablePtr pDraw, int *err)
-{
- ScreenPtr pScreen = pDraw->pScreen;
- VisualPtr pVisual = NULL;
- XID vid;
- int i;
-
- vid = wVisual((WindowPtr)pDraw);
- for (i = 0; i < pScreen->numVisuals; i++) {
- if (pScreen->visuals[i].vid == vid) {
- pVisual = &pScreen->visuals[i];
- break;
- }
- }
-
- /* FIXME: What exactly should we check here... */
- if (pVisual->class != glxConvertToXVisualType(config->visualType) ||
- !(config->drawableType & GLX_WINDOW_BIT)) {
- client->errorValue = pDraw->id;
- *err = BadMatch;
- return FALSE;
- }
-
- return TRUE;
-}
-
-static int
-validGlxContext(ClientPtr client, XID id, int access_mode,
- struct glx_context **context, int *err)
-{
- *err = dixLookupResourceByType((pointer *) context, id,
- __glXContextRes, client, access_mode);
- if (*err != Success) {
- client->errorValue = id;
- if (*err == BadValue)
- *err = __glXError(GLXBadContext);
- return FALSE;
- }
-
- return TRUE;
-}
-
-static int
-validGlxDrawable(ClientPtr client, XID id, int type, int access_mode,
- __GLXdrawable **drawable, int *err)
-{
- int rc;
-
- rc = dixLookupResourceByType((pointer *) drawable, id,
- __glXDrawableRes, client, access_mode);
- if (rc != Success && rc != BadValue) {
- *err = rc;
- client->errorValue = id;
- return FALSE;
- }
-
- /* If the ID of the glx drawable we looked up doesn't match the id
- * we looked for, it's because we looked it up under the X
- * drawable ID (see DoCreateGLXDrawable). */
- if (rc == BadValue ||
- (*drawable)->drawId != id ||
- (type != GLX_DRAWABLE_ANY && type != (*drawable)->type)) {
- client->errorValue = id;
- switch (type) {
- case GLX_DRAWABLE_WINDOW:
- *err = __glXError(GLXBadWindow);
- return FALSE;
- case GLX_DRAWABLE_PIXMAP:
- *err = __glXError(GLXBadPixmap);
- return FALSE;
- case GLX_DRAWABLE_PBUFFER:
- *err = __glXError(GLXBadPbuffer);
- return FALSE;
- case GLX_DRAWABLE_ANY:
- *err = __glXError(GLXBadDrawable);
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-void
-__glXContextDestroy(struct glx_context *context)
-{
- __glXFlushContextCache();
-}
-
-static void __glXdirectContextDestroy(struct glx_context *context)
-{
- __glXContextDestroy(context);
- free(context);
-}
-
-static struct glx_context *__glXdirectContextCreate(__GLXscreen *screen,
- __GLXconfig *modes,
- struct glx_context *shareContext)
-{
- struct glx_context *context;
-
- context = calloc(1, sizeof (struct glx_context));
- if (context == NULL)
- return NULL;
-
- context->destroy = __glXdirectContextDestroy;
-
- return context;
-}
-
-void FlushContext(struct glx_context *cx)
-{
- CALL_Flush( GET_DISPATCH(), () );
- __GLX_NOTE_FLUSHED_CMDS(cx);
-}
-
-/**
- * Create a GL context with the given properties. This routine is used
- * to implement \c glXCreateContext, \c glXCreateNewContext, and
- * \c glXCreateContextWithConfigSGIX. This works becuase of the hack way
- * that GLXFBConfigs are implemented. Basically, the FBConfigID is the
- * same as the VisualID.
- */
-
-static int
-DoCreateContext(__GLXclientState *cl, GLXContextID gcId,
- GLXContextID shareList, __GLXconfig *config,
- __GLXscreen *pGlxScreen, GLboolean isDirect)
-{
- ClientPtr client = cl->client;
- struct glx_context *glxc, *shareglxc;
- int err;
-
- LEGAL_NEW_RESOURCE(gcId, client);
-
- /*
- ** Find the display list space that we want to share.
- **
- ** NOTE: In a multithreaded X server, we would need to keep a reference
- ** count for each display list so that if one client detroyed a list that
- ** another client was using, the list would not really be freed until it
- ** was no longer in use. Since this sample implementation has no support
- ** for multithreaded servers, we don't do this.
- */
- if (shareList == None) {
- shareglxc = 0;
- } else {
- if (!validGlxContext(client, shareList, DixReadAccess,
- &shareglxc, &err))
- return err;
-
- if (shareglxc->isDirect) {
- /*
- ** NOTE: no support for sharing display lists between direct
- ** contexts, even if they are in the same address space.
- */
-#if 0
- /* Disabling this code seems to allow shared display lists
- * and texture objects to work. We'll leave it disabled for now.
- */
- client->errorValue = shareList;
- return BadMatch;
-#endif
- } else {
- /*
- ** Create an indirect context regardless of what the client asked
- ** for; this way we can share display list space with shareList.
- */
- isDirect = GL_FALSE;
- }
- }
-
- /*
- ** Allocate memory for the new context
- */
- if (!isDirect)
- glxc = pGlxScreen->createContext(pGlxScreen, config, shareglxc);
- else
- glxc = __glXdirectContextCreate(pGlxScreen, config, shareglxc);
- if (!glxc) {
- return BadAlloc;
- }
-
- /*
- ** Initially, setup the part of the context that could be used by
- ** a GL core that needs windowing information (e.g., Mesa).
- */
- glxc->pGlxScreen = pGlxScreen;
- glxc->config = config;
-
- /*
- ** Register this context as a resource.
- */
- if (!AddResource(gcId, __glXContextRes, (pointer)glxc)) {
- (*glxc->destroy)(glxc);
- client->errorValue = gcId;
- return BadAlloc;
- }
-
- /*
- ** Finally, now that everything is working, setup the rest of the
- ** context.
- */
- glxc->id = gcId;
- glxc->share_id = shareList;
- glxc->idExists = GL_TRUE;
- glxc->isCurrent = GL_FALSE;
- glxc->isDirect = isDirect;
- glxc->renderMode = GL_RENDER;
-
- __glXAddToContextList(glxc);
-
- return Success;
-}
-
-int __glXDisp_CreateContext(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreateContextReq *req = (xGLXCreateContextReq *) pc;
- __GLXconfig *config;
- __GLXscreen *pGlxScreen;
- int err;
-
- REQUEST_SIZE_MATCH(xGLXCreateContextReq);
-
- if (!validGlxScreen(cl->client, req->screen, &pGlxScreen, &err))
- return err;
- if (!validGlxVisual(cl->client, pGlxScreen, req->visual, &config, &err))
- return err;
-
- return DoCreateContext(cl, req->context, req->shareList,
- config, pGlxScreen, req->isDirect);
-}
-
-int __glXDisp_CreateNewContext(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreateNewContextReq *req = (xGLXCreateNewContextReq *) pc;
- __GLXconfig *config;
- __GLXscreen *pGlxScreen;
- int err;
-
- REQUEST_SIZE_MATCH(xGLXCreateNewContextReq);
-
- if (!validGlxScreen(cl->client, req->screen, &pGlxScreen, &err))
- return err;
- if (!validGlxFBConfig(cl->client, pGlxScreen, req->fbconfig, &config, &err))
- return err;
-
- return DoCreateContext(cl, req->context, req->shareList,
- config, pGlxScreen, req->isDirect);
-}
-
-int __glXDisp_CreateContextWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreateContextWithConfigSGIXReq *req =
- (xGLXCreateContextWithConfigSGIXReq *) pc;
- __GLXconfig *config;
- __GLXscreen *pGlxScreen;
- int err;
-
- REQUEST_SIZE_MATCH(xGLXCreateContextWithConfigSGIXReq);
-
- if (!validGlxScreen(cl->client, req->screen, &pGlxScreen, &err))
- return err;
- if (!validGlxFBConfig(cl->client, pGlxScreen, req->fbconfig, &config, &err))
- return err;
-
- return DoCreateContext(cl, req->context, req->shareList,
- config, pGlxScreen, req->isDirect);
-}
-int __glXDisp_DestroyContext(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXDestroyContextReq *req = (xGLXDestroyContextReq *) pc;
- struct glx_context *glxc;
- int err;
-
- REQUEST_SIZE_MATCH(xGLXDestroyContextReq);
-
- if (!validGlxContext(cl->client, req->context, DixDestroyAccess,
- &glxc, &err))
- return err;
-
- FreeResourceByType(req->context, __glXContextRes, FALSE);
- return Success;
-}
-
-/*****************************************************************************/
-
-/*
-** For each client, the server keeps a table of all the contexts that are
-** current for that client (each thread of a client may have its own current
-** context). These routines add, change, and lookup contexts in the table.
-*/
-
-/*
-** Add a current context, and return the tag that will be used to refer to it.
-*/
-static int AddCurrentContext(__GLXclientState *cl, struct glx_context *glxc)
-{
- int i;
- int num = cl->numCurrentContexts;
- struct glx_context **table = cl->currentContexts;
-
- if (!glxc) return -1;
-
- /*
- ** Try to find an empty slot and use it.
- */
- for (i=0; i < num; i++) {
- if (!table[i]) {
- table[i] = glxc;
- return i+1;
- }
- }
- /*
- ** Didn't find a free slot, so we'll have to grow the table.
- */
- if (!num) {
- table = (struct glx_context **) malloc(sizeof(struct glx_context *));
- } else {
- table = (struct glx_context **) realloc(table,
- (num+1)*sizeof(struct glx_context *));
- }
- table[num] = glxc;
- cl->currentContexts = table;
- cl->numCurrentContexts++;
- return num+1;
-}
-
-/*
-** Given a tag, change the current context for the corresponding entry.
-*/
-static void ChangeCurrentContext(__GLXclientState *cl, struct glx_context *glxc,
- GLXContextTag tag)
-{
- struct glx_context **table = cl->currentContexts;
- table[tag-1] = glxc;
-}
-
-/*
-** For this implementation we have chosen to simply use the index of the
-** context's entry in the table as the context tag. A tag must be greater
-** than 0.
-*/
-struct glx_context *__glXLookupContextByTag(__GLXclientState *cl, GLXContextTag tag)
-{
- int num = cl->numCurrentContexts;
-
- if (tag < 1 || tag > num) {
- return 0;
- } else {
- return cl->currentContexts[tag-1];
- }
-}
-
-/*****************************************************************************/
-
-static void StopUsingContext(struct glx_context *glxc)
-{
- if (glxc) {
- if (glxc == __glXLastContext) {
- /* Tell server GL library */
- __glXLastContext = 0;
- }
- glxc->isCurrent = GL_FALSE;
- if (!glxc->idExists) {
- __glXFreeContext(glxc);
- }
- }
-}
-
-static void StartUsingContext(__GLXclientState *cl, struct glx_context *glxc)
-{
- glxc->isCurrent = GL_TRUE;
- __glXLastContext = glxc;
-}
-
-/**
- * This is a helper function to handle the legacy (pre GLX 1.3) cases
- * where passing an X window to glXMakeCurrent is valid. Given a
- * resource ID, look up the GLX drawable if available, otherwise, make
- * sure it's an X window and create a GLX drawable one the fly.
- */
-static __GLXdrawable *
-__glXGetDrawable(struct glx_context *glxc, GLXDrawable drawId, ClientPtr client,
- int *error)
-{
- DrawablePtr pDraw;
- __GLXdrawable *pGlxDraw;
- int rc;
-
- if (validGlxDrawable(client, drawId, GLX_DRAWABLE_ANY,
- DixWriteAccess, &pGlxDraw, &rc)) {
- if (glxc != NULL && pGlxDraw->config != glxc->config) {
- client->errorValue = drawId;
- *error = BadMatch;
- return NULL;
- }
-
- return pGlxDraw;
- }
-
- /* No active context and an unknown drawable, bail. */
- if (glxc == NULL) {
- client->errorValue = drawId;
- *error = BadMatch;
- return NULL;
- }
-
- /* The drawId wasn't a GLX drawable. Make sure it's a window and
- * create a GLXWindow for it. Check that the drawable screen
- * matches the context screen and that the context fbconfig is
- * compatible with the window visual. */
-
- rc = dixLookupDrawable(&pDraw, drawId, client, 0, DixGetAttrAccess);
- if (rc != Success || pDraw->type != DRAWABLE_WINDOW) {
- client->errorValue = drawId;
- *error = __glXError(GLXBadDrawable);
- return NULL;
- }
-
- if (!glxc || pDraw->pScreen != glxc->pGlxScreen->pScreen) {
- client->errorValue = pDraw->pScreen->myNum;
- *error = BadMatch;
- return NULL;
- }
-
- if (!validGlxFBConfigForWindow(client, glxc->config, pDraw, error))
- return NULL;
-
- pGlxDraw = glxc->pGlxScreen->createDrawable(client, glxc->pGlxScreen,
- pDraw, drawId,
- GLX_DRAWABLE_WINDOW,
- drawId, glxc->config);
-
- /* since we are creating the drawablePrivate, drawId should be new */
- if (!AddResource(drawId, __glXDrawableRes, pGlxDraw)) {
- pGlxDraw->destroy (pGlxDraw);
- *error = BadAlloc;
- return NULL;
- }
-
- return pGlxDraw;
-}
-
-/*****************************************************************************/
-/*
-** Make an OpenGL context and drawable current.
-*/
-
-static int
-DoMakeCurrent(__GLXclientState *cl,
- GLXDrawable drawId, GLXDrawable readId,
- GLXContextID contextId, GLXContextTag tag)
-{
- ClientPtr client = cl->client;
- xGLXMakeCurrentReply reply;
- struct glx_context *glxc, *prevglxc;
- __GLXdrawable *drawPriv = NULL;
- __GLXdrawable *readPriv = NULL;
- int error;
- GLuint mask;
-
- /*
- ** If one is None and the other isn't, it's a bad match.
- */
-
- mask = (drawId == None) ? (1 << 0) : 0;
- mask |= (readId == None) ? (1 << 1) : 0;
- mask |= (contextId == None) ? (1 << 2) : 0;
-
- if ( (mask != 0x00) && (mask != 0x07) ) {
- return BadMatch;
- }
-
- /*
- ** Lookup old context. If we have one, it must be in a usable state.
- */
- if (tag != 0) {
- prevglxc = __glXLookupContextByTag(cl, tag);
- if (!prevglxc) {
- /*
- ** Tag for previous context is invalid.
- */
- return __glXError(GLXBadContextTag);
- }
- if (prevglxc->renderMode != GL_RENDER) {
- /* Oops. Not in render mode render. */
- client->errorValue = prevglxc->id;
- return __glXError(GLXBadContextState);
- }
- } else {
- prevglxc = 0;
- }
-
- /*
- ** Lookup new context. It must not be current for someone else.
- */
- if (contextId != None) {
- int status;
-
- if (!validGlxContext(client, contextId, DixUseAccess, &glxc, &error))
- return error;
- if ((glxc != prevglxc) && glxc->isCurrent) {
- /* Context is current to somebody else */
- return BadAccess;
- }
-
- assert( drawId != None );
- assert( readId != None );
-
- drawPriv = __glXGetDrawable(glxc, drawId, client, &status);
- if (drawPriv == NULL)
- return status;
-
- readPriv = __glXGetDrawable(glxc, readId, client, &status);
- if (readPriv == NULL)
- return status;
-
- } else {
- /* Switching to no context. Ignore new drawable. */
- glxc = 0;
- drawPriv = 0;
- readPriv = 0;
- }
-
-
- if (prevglxc) {
- /*
- ** Flush the previous context if needed.
- */
- if (__GLX_HAS_UNFLUSHED_CMDS(prevglxc)) {
- if (__glXForceCurrent(cl, tag, (int *)&error)) {
- CALL_Flush( GET_DISPATCH(), () );
- __GLX_NOTE_FLUSHED_CMDS(prevglxc);
- } else {
- return error;
- }
- }
-
- /*
- ** Make the previous context not current.
- */
- if (!(*prevglxc->loseCurrent)(prevglxc)) {
- return __glXError(GLXBadContext);
- }
- __glXFlushContextCache();
- if (!prevglxc->isDirect) {
- prevglxc->drawPriv = NULL;
- prevglxc->readPriv = NULL;
- }
- }
-
-
- if ((glxc != 0) && !glxc->isDirect) {
-
- glxc->drawPriv = drawPriv;
- glxc->readPriv = readPriv;
-
- /* make the context current */
- if (!(*glxc->makeCurrent)(glxc)) {
- glxc->drawPriv = NULL;
- glxc->readPriv = NULL;
- return __glXError(GLXBadContext);
- }
-
- glxc->isCurrent = GL_TRUE;
- }
-
- if (prevglxc) {
- ChangeCurrentContext(cl, glxc, tag);
- StopUsingContext(prevglxc);
- } else {
- tag = AddCurrentContext(cl, glxc);
- }
-
- if (glxc) {
- StartUsingContext(cl, glxc);
- reply.contextTag = tag;
- } else {
- reply.contextTag = 0;
- }
-
- reply.length = 0;
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
-
- if (client->swapped) {
- __glXSwapMakeCurrentReply(client, &reply);
- } else {
- WriteToClient(client, sz_xGLXMakeCurrentReply, (char *)&reply);
- }
- return Success;
-}
-
-int __glXDisp_MakeCurrent(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXMakeCurrentReq *req = (xGLXMakeCurrentReq *) pc;
-
- REQUEST_SIZE_MATCH(xGLXMakeCurrentReq);
-
- return DoMakeCurrent( cl, req->drawable, req->drawable,
- req->context, req->oldContextTag );
-}
-
-int __glXDisp_MakeContextCurrent(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXMakeContextCurrentReq *req = (xGLXMakeContextCurrentReq *) pc;
-
- REQUEST_SIZE_MATCH(xGLXMakeContextCurrentReq);
-
- return DoMakeCurrent( cl, req->drawable, req->readdrawable,
- req->context, req->oldContextTag );
-}
-
-int __glXDisp_MakeCurrentReadSGI(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXMakeCurrentReadSGIReq *req = (xGLXMakeCurrentReadSGIReq *) pc;
-
- REQUEST_SIZE_MATCH(xGLXMakeCurrentReadSGIReq);
-
- return DoMakeCurrent( cl, req->drawable, req->readable,
- req->context, req->oldContextTag );
-}
-
-int __glXDisp_IsDirect(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXIsDirectReq *req = (xGLXIsDirectReq *) pc;
- xGLXIsDirectReply reply;
- struct glx_context *glxc;
- int err;
-
- REQUEST_SIZE_MATCH(xGLXIsDirectReq);
-
- if (!validGlxContext(cl->client, req->context, DixReadAccess, &glxc, &err))
- return err;
-
- reply.isDirect = glxc->isDirect;
- reply.length = 0;
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
-
- if (client->swapped) {
- __glXSwapIsDirectReply(client, &reply);
- } else {
- WriteToClient(client, sz_xGLXIsDirectReply, (char *)&reply);
- }
-
- return Success;
-}
-
-int __glXDisp_QueryVersion(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXQueryVersionReq *req = (xGLXQueryVersionReq *) pc;
- xGLXQueryVersionReply reply;
- GLuint major, minor;
-
- REQUEST_SIZE_MATCH(xGLXQueryVersionReq);
-
- major = req->majorVersion;
- minor = req->minorVersion;
- (void)major;
- (void)minor;
-
- /*
- ** Server should take into consideration the version numbers sent by the
- ** client if it wants to work with older clients; however, in this
- ** implementation the server just returns its version number.
- */
- reply.majorVersion = glxMajorVersion;
- reply.minorVersion = glxMinorVersion;
- reply.length = 0;
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
-
- if (client->swapped) {
- __glXSwapQueryVersionReply(client, &reply);
- } else {
- WriteToClient(client, sz_xGLXQueryVersionReply, (char *)&reply);
- }
- return Success;
-}
-
-int __glXDisp_WaitGL(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXWaitGLReq *req = (xGLXWaitGLReq *)pc;
- GLXContextTag tag;
- struct glx_context *glxc = NULL;
- int error;
-
- REQUEST_SIZE_MATCH(xGLXWaitGLReq);
-
- tag = req->contextTag;
- if (tag) {
- glxc = __glXLookupContextByTag(cl, tag);
- if (!glxc)
- return __glXError(GLXBadContextTag);
-
- if (!__glXForceCurrent(cl, req->contextTag, &error))
- return error;
-
- CALL_Finish( GET_DISPATCH(), () );
- }
-
- if (glxc && glxc->drawPriv->waitGL)
- (*glxc->drawPriv->waitGL)(glxc->drawPriv);
-
- return Success;
-}
-
-int __glXDisp_WaitX(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXWaitXReq *req = (xGLXWaitXReq *)pc;
- GLXContextTag tag;
- struct glx_context *glxc = NULL;
- int error;
-
- REQUEST_SIZE_MATCH(xGLXWaitXReq);
-
- tag = req->contextTag;
- if (tag) {
- glxc = __glXLookupContextByTag(cl, tag);
- if (!glxc)
- return __glXError(GLXBadContextTag);
-
- if (!__glXForceCurrent(cl, req->contextTag, &error))
- return error;
- }
-
- if (glxc && glxc->drawPriv->waitX)
- (*glxc->drawPriv->waitX)(glxc->drawPriv);
-
- return Success;
-}
-
-int __glXDisp_CopyContext(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCopyContextReq *req = (xGLXCopyContextReq *) pc;
- GLXContextID source;
- GLXContextID dest;
- GLXContextTag tag;
- unsigned long mask;
- struct glx_context *src, *dst;
- int error;
-
- REQUEST_SIZE_MATCH(xGLXCopyContextReq);
-
- source = req->source;
- dest = req->dest;
- tag = req->contextTag;
- mask = req->mask;
- if (!validGlxContext(cl->client, source, DixReadAccess, &src, &error))
- return error;
- if (!validGlxContext(cl->client, dest, DixWriteAccess, &dst, &error))
- return error;
-
- /*
- ** They must be in the same address space, and same screen.
- ** NOTE: no support for direct rendering contexts here.
- */
- if (src->isDirect || dst->isDirect ||
- (src->pGlxScreen != dst->pGlxScreen)) {
- client->errorValue = source;
- return BadMatch;
- }
-
- /*
- ** The destination context must not be current for any client.
- */
- if (dst->isCurrent) {
- client->errorValue = dest;
- return BadAccess;
- }
-
- if (tag) {
- struct glx_context *tagcx = __glXLookupContextByTag(cl, tag);
-
- if (!tagcx) {
- return __glXError(GLXBadContextTag);
- }
- if (tagcx != src) {
- /*
- ** This would be caused by a faulty implementation of the client
- ** library.
- */
- return BadMatch;
- }
- /*
- ** In this case, glXCopyContext is in both GL and X streams, in terms
- ** of sequentiality.
- */
- if (__glXForceCurrent(cl, tag, &error)) {
- /*
- ** Do whatever is needed to make sure that all preceding requests
- ** in both streams are completed before the copy is executed.
- */
- CALL_Finish( GET_DISPATCH(), () );
- __GLX_NOTE_FLUSHED_CMDS(tagcx);
- } else {
- return error;
- }
- }
- /*
- ** Issue copy. The only reason for failure is a bad mask.
- */
- if (!(*dst->copy)(dst, src, mask)) {
- client->errorValue = mask;
- return BadValue;
- }
- return Success;
-}
-
-enum {
- GLX_VIS_CONFIG_UNPAIRED = 18,
- GLX_VIS_CONFIG_PAIRED = 20
-};
-
-enum {
- GLX_VIS_CONFIG_TOTAL = GLX_VIS_CONFIG_UNPAIRED + GLX_VIS_CONFIG_PAIRED
-};
-
-int __glXDisp_GetVisualConfigs(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXGetVisualConfigsReq *req = (xGLXGetVisualConfigsReq *) pc;
- ClientPtr client = cl->client;
- xGLXGetVisualConfigsReply reply;
- __GLXscreen *pGlxScreen;
- __GLXconfig *modes;
- CARD32 buf[GLX_VIS_CONFIG_TOTAL];
- int p, i, err;
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXGetVisualConfigsReq);
-
- if (!validGlxScreen(cl->client, req->screen, &pGlxScreen, &err))
- return err;
-
- reply.numVisuals = pGlxScreen->numVisuals;
- reply.numProps = GLX_VIS_CONFIG_TOTAL;
- reply.length = (reply.numVisuals * __GLX_SIZE_CARD32 * GLX_VIS_CONFIG_TOTAL) >> 2;
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
-
- if (client->swapped) {
- __GLX_SWAP_SHORT(&reply.sequenceNumber);
- __GLX_SWAP_INT(&reply.length);
- __GLX_SWAP_INT(&reply.numVisuals);
- __GLX_SWAP_INT(&reply.numProps);
- }
-
- WriteToClient(client, sz_xGLXGetVisualConfigsReply, (char *)&reply);
-
- for (i = 0; i < pGlxScreen->numVisuals; i++) {
- modes = pGlxScreen->visuals[i];
-
- p = 0;
- buf[p++] = modes->visualID;
- buf[p++] = glxConvertToXVisualType( modes->visualType );
- buf[p++] = (modes->renderType & GLX_RGBA_BIT) ? GL_TRUE : GL_FALSE;
-
- buf[p++] = modes->redBits;
- buf[p++] = modes->greenBits;
- buf[p++] = modes->blueBits;
- buf[p++] = modes->alphaBits;
- buf[p++] = modes->accumRedBits;
- buf[p++] = modes->accumGreenBits;
- buf[p++] = modes->accumBlueBits;
- buf[p++] = modes->accumAlphaBits;
-
- buf[p++] = modes->doubleBufferMode;
- buf[p++] = modes->stereoMode;
-
- buf[p++] = modes->rgbBits;
- buf[p++] = modes->depthBits;
- buf[p++] = modes->stencilBits;
- buf[p++] = modes->numAuxBuffers;
- buf[p++] = modes->level;
-
- assert(p == GLX_VIS_CONFIG_UNPAIRED);
- /*
- ** Add token/value pairs for extensions.
- */
- buf[p++] = GLX_VISUAL_CAVEAT_EXT;
- buf[p++] = modes->visualRating;
- buf[p++] = GLX_TRANSPARENT_TYPE;
- buf[p++] = modes->transparentPixel;
- buf[p++] = GLX_TRANSPARENT_RED_VALUE;
- buf[p++] = modes->transparentRed;
- buf[p++] = GLX_TRANSPARENT_GREEN_VALUE;
- buf[p++] = modes->transparentGreen;
- buf[p++] = GLX_TRANSPARENT_BLUE_VALUE;
- buf[p++] = modes->transparentBlue;
- buf[p++] = GLX_TRANSPARENT_ALPHA_VALUE;
- buf[p++] = modes->transparentAlpha;
- buf[p++] = GLX_TRANSPARENT_INDEX_VALUE;
- buf[p++] = modes->transparentIndex;
- buf[p++] = GLX_SAMPLES_SGIS;
- buf[p++] = modes->samples;
- buf[p++] = GLX_SAMPLE_BUFFERS_SGIS;
- buf[p++] = modes->sampleBuffers;
- buf[p++] = 0; /* copy over visualSelectGroup (GLX_VISUAL_SELECT_GROUP_SGIX)? */
- buf[p++] = 0;
-
- assert(p == GLX_VIS_CONFIG_TOTAL);
- if (client->swapped) {
- __GLX_SWAP_INT_ARRAY(buf, p);
- }
- WriteToClient(client, __GLX_SIZE_CARD32 * p, (char *)buf);
- }
- return Success;
-}
-
-#define __GLX_TOTAL_FBCONFIG_ATTRIBS (36)
-#define __GLX_FBCONFIG_ATTRIBS_LENGTH (__GLX_TOTAL_FBCONFIG_ATTRIBS * 2)
-/**
- * Send the set of GLXFBConfigs to the client. There is not currently
- * and interface into the driver on the server-side to get GLXFBConfigs,
- * so we "invent" some based on the \c __GLXvisualConfig structures that
- * the driver does supply.
- *
- * The reply format for both \c glXGetFBConfigs and \c glXGetFBConfigsSGIX
- * is the same, so this routine pulls double duty.
- */
-
-static int
-DoGetFBConfigs(__GLXclientState *cl, unsigned screen)
-{
- ClientPtr client = cl->client;
- xGLXGetFBConfigsReply reply;
- __GLXscreen *pGlxScreen;
- CARD32 buf[__GLX_FBCONFIG_ATTRIBS_LENGTH];
- int p, err;
- __GLXconfig *modes;
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
-
- if (!validGlxScreen(cl->client, screen, &pGlxScreen, &err))
- return err;
-
- reply.numFBConfigs = pGlxScreen->numFBConfigs;
- reply.numAttribs = __GLX_TOTAL_FBCONFIG_ATTRIBS;
- reply.length = (__GLX_FBCONFIG_ATTRIBS_LENGTH * reply.numFBConfigs);
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
-
- if (client->swapped) {
- __GLX_SWAP_SHORT(&reply.sequenceNumber);
- __GLX_SWAP_INT(&reply.length);
- __GLX_SWAP_INT(&reply.numFBConfigs);
- __GLX_SWAP_INT(&reply.numAttribs);
- }
-
- WriteToClient(client, sz_xGLXGetFBConfigsReply, (char *)&reply);
-
- for (modes = pGlxScreen->fbconfigs; modes != NULL; modes = modes->next) {
- p = 0;
-
-#define WRITE_PAIR(tag,value) \
- do { buf[p++] = tag ; buf[p++] = value ; } while( 0 )
-
- WRITE_PAIR( GLX_VISUAL_ID, modes->visualID );
- WRITE_PAIR( GLX_FBCONFIG_ID, modes->fbconfigID );
- WRITE_PAIR( GLX_X_RENDERABLE, GL_TRUE );
-
- WRITE_PAIR( GLX_RGBA,
- (modes->renderType & GLX_RGBA_BIT) ? GL_TRUE : GL_FALSE );
- WRITE_PAIR( GLX_RENDER_TYPE, modes->renderType );
- WRITE_PAIR( GLX_DOUBLEBUFFER, modes->doubleBufferMode );
- WRITE_PAIR( GLX_STEREO, modes->stereoMode );
-
- WRITE_PAIR( GLX_BUFFER_SIZE, modes->rgbBits );
- WRITE_PAIR( GLX_LEVEL, modes->level );
- WRITE_PAIR( GLX_AUX_BUFFERS, modes->numAuxBuffers );
- WRITE_PAIR( GLX_RED_SIZE, modes->redBits );
- WRITE_PAIR( GLX_GREEN_SIZE, modes->greenBits );
- WRITE_PAIR( GLX_BLUE_SIZE, modes->blueBits );
- WRITE_PAIR( GLX_ALPHA_SIZE, modes->alphaBits );
- WRITE_PAIR( GLX_ACCUM_RED_SIZE, modes->accumRedBits );
- WRITE_PAIR( GLX_ACCUM_GREEN_SIZE, modes->accumGreenBits );
- WRITE_PAIR( GLX_ACCUM_BLUE_SIZE, modes->accumBlueBits );
- WRITE_PAIR( GLX_ACCUM_ALPHA_SIZE, modes->accumAlphaBits );
- WRITE_PAIR( GLX_DEPTH_SIZE, modes->depthBits );
- WRITE_PAIR( GLX_STENCIL_SIZE, modes->stencilBits );
- WRITE_PAIR( GLX_X_VISUAL_TYPE, modes->visualType );
- WRITE_PAIR( GLX_CONFIG_CAVEAT, modes->visualRating );
- WRITE_PAIR( GLX_TRANSPARENT_TYPE, modes->transparentPixel );
- WRITE_PAIR( GLX_TRANSPARENT_RED_VALUE, modes->transparentRed );
- WRITE_PAIR( GLX_TRANSPARENT_GREEN_VALUE, modes->transparentGreen );
- WRITE_PAIR( GLX_TRANSPARENT_BLUE_VALUE, modes->transparentBlue );
- WRITE_PAIR( GLX_TRANSPARENT_ALPHA_VALUE, modes->transparentAlpha );
- WRITE_PAIR( GLX_TRANSPARENT_INDEX_VALUE, modes->transparentIndex );
- WRITE_PAIR( GLX_SWAP_METHOD_OML, modes->swapMethod );
- WRITE_PAIR( GLX_SAMPLES_SGIS, modes->samples );
- WRITE_PAIR( GLX_SAMPLE_BUFFERS_SGIS, modes->sampleBuffers );
- /* GLX_VISUAL_SELECT_GROUP_SGIX ? */
- WRITE_PAIR( GLX_DRAWABLE_TYPE, modes->drawableType );
- WRITE_PAIR( GLX_BIND_TO_TEXTURE_RGB_EXT, modes->bindToTextureRgb );
- WRITE_PAIR( GLX_BIND_TO_TEXTURE_RGBA_EXT, modes->bindToTextureRgba );
- WRITE_PAIR( GLX_BIND_TO_MIPMAP_TEXTURE_EXT, modes->bindToMipmapTexture );
- WRITE_PAIR( GLX_BIND_TO_TEXTURE_TARGETS_EXT, modes->bindToTextureTargets );
-
- if (client->swapped) {
- __GLX_SWAP_INT_ARRAY(buf, __GLX_FBCONFIG_ATTRIBS_LENGTH);
- }
- WriteToClient(client, __GLX_SIZE_CARD32 * __GLX_FBCONFIG_ATTRIBS_LENGTH,
- (char *)buf);
- }
- return Success;
-}
-
-
-int __glXDisp_GetFBConfigs(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXGetFBConfigsReq *req = (xGLXGetFBConfigsReq *) pc;
- REQUEST_SIZE_MATCH(xGLXGetFBConfigsReq);
- return DoGetFBConfigs(cl, req->screen);
-}
-
-int __glXDisp_GetFBConfigsSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXGetFBConfigsSGIXReq *req = (xGLXGetFBConfigsSGIXReq *) pc;
- REQUEST_SIZE_MATCH(xGLXGetFBConfigsSGIXReq);
- return DoGetFBConfigs(cl, req->screen);
-}
-
-GLboolean
-__glXDrawableInit(__GLXdrawable *drawable,
- __GLXscreen *screen, DrawablePtr pDraw, int type,
- XID drawId, __GLXconfig *config)
-{
- drawable->pDraw = pDraw;
- drawable->type = type;
- drawable->drawId = drawId;
- drawable->config = config;
- drawable->eventMask = 0;
-
- return GL_TRUE;
-}
-
-void
-__glXDrawableRelease(__GLXdrawable *drawable)
-{
-}
-
-static int
-DoCreateGLXDrawable(ClientPtr client, __GLXscreen *pGlxScreen,
- __GLXconfig *config, DrawablePtr pDraw, XID drawableId,
- XID glxDrawableId, int type)
-{
- __GLXdrawable *pGlxDraw;
-
- if (pGlxScreen->pScreen != pDraw->pScreen)
- return BadMatch;
-
- pGlxDraw = pGlxScreen->createDrawable(client, pGlxScreen, pDraw,
- drawableId, type,
- glxDrawableId, config);
- if (pGlxDraw == NULL)
- return BadAlloc;
-
- if (!AddResource(glxDrawableId, __glXDrawableRes, pGlxDraw)) {
- pGlxDraw->destroy (pGlxDraw);
- return BadAlloc;
- }
-
- /* Add the glx drawable under the XID of the underlying X drawable
- * too. That way we'll get a callback in DrawableGone and can
- * clean up properly when the drawable is destroyed. */
- if (drawableId != glxDrawableId &&
- !AddResource(pDraw->id, __glXDrawableRes, pGlxDraw)) {
- pGlxDraw->destroy (pGlxDraw);
- return BadAlloc;
- }
-
- return Success;
-}
-
-static int
-DoCreateGLXPixmap(ClientPtr client, __GLXscreen *pGlxScreen, __GLXconfig *config,
- XID drawableId, XID glxDrawableId)
-{
- DrawablePtr pDraw;
- int err;
-
- LEGAL_NEW_RESOURCE(glxDrawableId, client);
-
- err = dixLookupDrawable(&pDraw, drawableId, client, 0, DixAddAccess);
- if (err != Success) {
- client->errorValue = drawableId;
- return err;
- }
- if (pDraw->type != DRAWABLE_PIXMAP) {
- client->errorValue = drawableId;
- return BadPixmap;
- }
-
- err = DoCreateGLXDrawable(client, pGlxScreen, config, pDraw, drawableId,
- glxDrawableId, GLX_DRAWABLE_PIXMAP);
-
- return err;
-}
-
-static void
-determineTextureTarget(ClientPtr client, XID glxDrawableID,
- CARD32 *attribs, CARD32 numAttribs)
-{
- GLenum target = 0;
- GLenum format = 0;
- int i, err;
- __GLXdrawable *pGlxDraw;
-
- if (!validGlxDrawable(client, glxDrawableID, GLX_DRAWABLE_PIXMAP,
- DixWriteAccess, &pGlxDraw, &err))
- /* We just added it in CreatePixmap, so we should never get here. */
- return;
-
- for (i = 0; i < numAttribs; i++) {
- if (attribs[2 * i] == GLX_TEXTURE_TARGET_EXT) {
- switch (attribs[2 * i + 1]) {
- case GLX_TEXTURE_2D_EXT:
- target = GL_TEXTURE_2D;
- break;
- case GLX_TEXTURE_RECTANGLE_EXT:
- target = GL_TEXTURE_RECTANGLE_ARB;
- break;
- }
- }
-
- if (attribs[2 * i] == GLX_TEXTURE_FORMAT_EXT)
- format = attribs[2 * i + 1];
- }
-
- if (!target) {
- int w = pGlxDraw->pDraw->width, h = pGlxDraw->pDraw->height;
-
- if (h & (h - 1) || w & (w - 1))
- target = GL_TEXTURE_RECTANGLE_ARB;
- else
- target = GL_TEXTURE_2D;
- }
-
- pGlxDraw->target = target;
- pGlxDraw->format = format;
-}
-
-int __glXDisp_CreateGLXPixmap(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreateGLXPixmapReq *req = (xGLXCreateGLXPixmapReq *) pc;
- __GLXconfig *config;
- __GLXscreen *pGlxScreen;
- int err;
-
- REQUEST_SIZE_MATCH(xGLXCreateGLXPixmapReq);
-
- if (!validGlxScreen(cl->client, req->screen, &pGlxScreen, &err))
- return err;
- if (!validGlxVisual(cl->client, pGlxScreen, req->visual, &config, &err))
- return err;
-
- return DoCreateGLXPixmap(cl->client, pGlxScreen, config,
- req->pixmap, req->glxpixmap);
-}
-
-int __glXDisp_CreatePixmap(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreatePixmapReq *req = (xGLXCreatePixmapReq *) pc;
- __GLXconfig *config;
- __GLXscreen *pGlxScreen;
- int err;
-
- REQUEST_AT_LEAST_SIZE(xGLXCreatePixmapReq);
- if (req->numAttribs > (UINT32_MAX >> 3)) {
- client->errorValue = req->numAttribs;
- return BadValue;
- }
- REQUEST_FIXED_SIZE(xGLXCreatePixmapReq, req->numAttribs << 3);
-
- if (!validGlxScreen(cl->client, req->screen, &pGlxScreen, &err))
- return err;
- if (!validGlxFBConfig(cl->client, pGlxScreen, req->fbconfig, &config, &err))
- return err;
-
- err = DoCreateGLXPixmap(cl->client, pGlxScreen, config,
- req->pixmap, req->glxpixmap);
- if (err != Success)
- return err;
-
- determineTextureTarget(cl->client, req->glxpixmap,
- (CARD32*) (req + 1), req->numAttribs);
-
- return Success;
-}
-
-int __glXDisp_CreateGLXPixmapWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreateGLXPixmapWithConfigSGIXReq *req =
- (xGLXCreateGLXPixmapWithConfigSGIXReq *) pc;
- __GLXconfig *config;
- __GLXscreen *pGlxScreen;
- int err;
-
- REQUEST_SIZE_MATCH(xGLXCreateGLXPixmapWithConfigSGIXReq);
-
- if (!validGlxScreen(cl->client, req->screen, &pGlxScreen, &err))
- return err;
- if (!validGlxFBConfig(cl->client, pGlxScreen, req->fbconfig, &config, &err))
- return err;
-
- return DoCreateGLXPixmap(cl->client, pGlxScreen,
- config, req->pixmap, req->glxpixmap);
-}
-
-
-static int DoDestroyDrawable(__GLXclientState *cl, XID glxdrawable, int type)
-{
- __GLXdrawable *pGlxDraw;
- int err;
-
- if (!validGlxDrawable(cl->client, glxdrawable, type,
- DixDestroyAccess, &pGlxDraw, &err))
- return err;
-
- FreeResource(glxdrawable, FALSE);
-
- return Success;
-}
-
-int __glXDisp_DestroyGLXPixmap(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXDestroyGLXPixmapReq *req = (xGLXDestroyGLXPixmapReq *) pc;
-
- REQUEST_SIZE_MATCH(xGLXDestroyGLXPixmapReq);
-
- return DoDestroyDrawable(cl, req->glxpixmap, GLX_DRAWABLE_PIXMAP);
-}
-
-int __glXDisp_DestroyPixmap(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXDestroyPixmapReq *req = (xGLXDestroyPixmapReq *) pc;
-
- REQUEST_SIZE_MATCH(xGLXDestroyPixmapReq);
-
- return DoDestroyDrawable(cl, req->glxpixmap, GLX_DRAWABLE_PIXMAP);
-}
-
-static int
-DoCreatePbuffer(ClientPtr client, int screenNum, XID fbconfigId,
- int width, int height, XID glxDrawableId)
-{
- __GLXconfig *config;
- __GLXscreen *pGlxScreen;
- PixmapPtr pPixmap;
- int err;
-
- LEGAL_NEW_RESOURCE(glxDrawableId, client);
-
- if (!validGlxScreen(client, screenNum, &pGlxScreen, &err))
- return err;
- if (!validGlxFBConfig(client, pGlxScreen, fbconfigId, &config, &err))
- return err;
-
- __glXenterServer(GL_FALSE);
- pPixmap = (*pGlxScreen->pScreen->CreatePixmap) (pGlxScreen->pScreen,
- width, height, config->rgbBits, 0);
- __glXleaveServer(GL_FALSE);
-
- /* Assign the pixmap the same id as the pbuffer and add it as a
- * resource so it and the DRI2 drawable will be reclaimed when the
- * pbuffer is destroyed. */
- pPixmap->drawable.id = glxDrawableId;
- if (!AddResource(pPixmap->drawable.id, RT_PIXMAP, pPixmap))
- return BadAlloc;
-
- return DoCreateGLXDrawable(client, pGlxScreen, config, &pPixmap->drawable,
- glxDrawableId, glxDrawableId,
- GLX_DRAWABLE_PBUFFER);
-}
-
-int __glXDisp_CreatePbuffer(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreatePbufferReq *req = (xGLXCreatePbufferReq *) pc;
- CARD32 *attrs;
- int width, height, i;
-
- REQUEST_AT_LEAST_SIZE(xGLXCreatePbufferReq);
- if (req->numAttribs > (UINT32_MAX >> 3)) {
- client->errorValue = req->numAttribs;
- return BadValue;
- }
- REQUEST_FIXED_SIZE(xGLXCreatePbufferReq, req->numAttribs << 3);
-
- attrs = (CARD32 *) (req + 1);
- width = 0;
- height = 0;
-
- for (i = 0; i < req->numAttribs; i++) {
- switch (attrs[i * 2]) {
- case GLX_PBUFFER_WIDTH:
- width = attrs[i * 2 + 1];
- break;
- case GLX_PBUFFER_HEIGHT:
- height = attrs[i * 2 + 1];
- break;
- case GLX_LARGEST_PBUFFER:
- case GLX_PRESERVED_CONTENTS:
- /* FIXME: huh... */
- break;
- }
- }
-
- return DoCreatePbuffer(cl->client, req->screen, req->fbconfig,
- width, height, req->pbuffer);
-}
-
-int __glXDisp_CreateGLXPbufferSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreateGLXPbufferSGIXReq *req = (xGLXCreateGLXPbufferSGIXReq *) pc;
-
- REQUEST_SIZE_MATCH(xGLXCreateGLXPbufferSGIXReq);
-
- return DoCreatePbuffer(cl->client, req->screen, req->fbconfig,
- req->width, req->height, req->pbuffer);
-}
-
-int __glXDisp_DestroyPbuffer(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXDestroyPbufferReq *req = (xGLXDestroyPbufferReq *) pc;
-
- REQUEST_SIZE_MATCH(xGLXDestroyPbufferReq);
-
- return DoDestroyDrawable(cl, req->pbuffer, GLX_DRAWABLE_PBUFFER);
-}
-
-int __glXDisp_DestroyGLXPbufferSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXDestroyGLXPbufferSGIXReq *req = (xGLXDestroyGLXPbufferSGIXReq *) pc;
-
- REQUEST_SIZE_MATCH(xGLXDestroyGLXPbufferSGIXReq);
-
- return DoDestroyDrawable(cl, req->pbuffer, GLX_DRAWABLE_PBUFFER);
-}
-
-static int
-DoChangeDrawableAttributes(ClientPtr client, XID glxdrawable,
- int numAttribs, CARD32 *attribs)
-{
- __GLXdrawable *pGlxDraw;
- int i, err;
-
- if (!validGlxDrawable(client, glxdrawable, GLX_DRAWABLE_ANY,
- DixSetAttrAccess, &pGlxDraw, &err))
- return err;
-
- for (i = 0; i < numAttribs; i++) {
- switch(attribs[i * 2]) {
- case GLX_EVENT_MASK:
- /* All we do is to record the event mask so we can send it
- * back when queried. We never actually clobber the
- * pbuffers, so we never need to send out the event. */
- pGlxDraw->eventMask = attribs[i * 2 + 1];
- break;
- }
- }
-
- return Success;
-}
-
-int __glXDisp_ChangeDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXChangeDrawableAttributesReq *req =
- (xGLXChangeDrawableAttributesReq *) pc;
-
- REQUEST_AT_LEAST_SIZE(xGLXChangeDrawableAttributesReq);
- if (req->numAttribs > (UINT32_MAX >> 3)) {
- client->errorValue = req->numAttribs;
- return BadValue;
- }
- REQUEST_FIXED_SIZE(xGLXChangeDrawableAttributesReq, req->numAttribs << 3);
-
- return DoChangeDrawableAttributes(cl->client, req->drawable,
- req->numAttribs, (CARD32 *) (req + 1));
-}
-
-int __glXDisp_ChangeDrawableAttributesSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXChangeDrawableAttributesSGIXReq *req =
- (xGLXChangeDrawableAttributesSGIXReq *)pc;
-
- REQUEST_AT_LEAST_SIZE(xGLXChangeDrawableAttributesSGIXReq);
- if (req->numAttribs > (UINT32_MAX >> 3)) {
- client->errorValue = req->numAttribs;
- return BadValue;
- }
- REQUEST_FIXED_SIZE(xGLXChangeDrawableAttributesSGIXReq, req->numAttribs << 3);
-
- return DoChangeDrawableAttributes(cl->client, req->drawable,
- req->numAttribs, (CARD32 *) (req + 1));
-}
-
-int __glXDisp_CreateWindow(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXCreateWindowReq *req = (xGLXCreateWindowReq *) pc;
- __GLXconfig *config;
- __GLXscreen *pGlxScreen;
- ClientPtr client = cl->client;
- DrawablePtr pDraw;
- int err;
-
- REQUEST_AT_LEAST_SIZE(xGLXCreateWindowReq);
- if (req->numAttribs > (UINT32_MAX >> 3)) {
- client->errorValue = req->numAttribs;
- return BadValue;
- }
- REQUEST_FIXED_SIZE(xGLXCreateWindowReq, req->numAttribs << 3);
-
- LEGAL_NEW_RESOURCE(req->glxwindow, client);
-
- if (!validGlxScreen(client, req->screen, &pGlxScreen, &err))
- return err;
- if (!validGlxFBConfig(client, pGlxScreen, req->fbconfig, &config, &err))
- return err;
-
- err = dixLookupDrawable(&pDraw, req->window, client, 0, DixAddAccess);
- if (err != Success || pDraw->type != DRAWABLE_WINDOW) {
- client->errorValue = req->window;
- return BadWindow;
- }
-
- if (!validGlxFBConfigForWindow(client, config, pDraw, &err))
- return err;
-
- return DoCreateGLXDrawable(client, pGlxScreen, config,
- pDraw, req->window,
- req->glxwindow, GLX_DRAWABLE_WINDOW);
-}
-
-int __glXDisp_DestroyWindow(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXDestroyWindowReq *req = (xGLXDestroyWindowReq *) pc;
-
- REQUEST_SIZE_MATCH(xGLXDestroyWindowReq);
-
- return DoDestroyDrawable(cl, req->glxwindow, GLX_DRAWABLE_WINDOW);
-}
-
-
-/*****************************************************************************/
-
-/*
-** NOTE: There is no portable implementation for swap buffers as of
-** this time that is of value. Consequently, this code must be
-** implemented by somebody other than SGI.
-*/
-int __glXDisp_SwapBuffers(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXSwapBuffersReq *req = (xGLXSwapBuffersReq *) pc;
- GLXContextTag tag;
- XID drawId;
- struct glx_context *glxc = NULL;
- __GLXdrawable *pGlxDraw;
- int error;
-
- REQUEST_SIZE_MATCH(xGLXSwapBuffersReq);
-
- tag = req->contextTag;
- drawId = req->drawable;
- if (tag) {
- glxc = __glXLookupContextByTag(cl, tag);
- if (!glxc) {
- return __glXError(GLXBadContextTag);
- }
- /*
- ** The calling thread is swapping its current drawable. In this case,
- ** glxSwapBuffers is in both GL and X streams, in terms of
- ** sequentiality.
- */
- if (__glXForceCurrent(cl, tag, &error)) {
- /*
- ** Do whatever is needed to make sure that all preceding requests
- ** in both streams are completed before the swap is executed.
- */
- CALL_Finish( GET_DISPATCH(), () );
- __GLX_NOTE_FLUSHED_CMDS(glxc);
- } else {
- return error;
- }
- }
-
- pGlxDraw = __glXGetDrawable(glxc, drawId, client, &error);
- if (pGlxDraw == NULL)
- return error;
-
- if (pGlxDraw->type == DRAWABLE_WINDOW &&
- (*pGlxDraw->swapBuffers)(cl->client, pGlxDraw) == GL_FALSE)
- return __glXError(GLXBadDrawable);
-
- return Success;
-}
-
-
-static int
-DoQueryContext(__GLXclientState *cl, GLXContextID gcId)
-{
- ClientPtr client = cl->client;
- struct glx_context *ctx;
- xGLXQueryContextInfoEXTReply reply;
- int nProps;
- int *sendBuf, *pSendBuf;
- int nReplyBytes;
- int err;
-
- if (!validGlxContext(cl->client, gcId, DixReadAccess, &ctx, &err))
- return err;
-
- nProps = 3;
- reply.length = nProps << 1;
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
- reply.n = nProps;
-
- nReplyBytes = reply.length << 2;
- sendBuf = (int *)malloc((size_t)nReplyBytes);
- if (sendBuf == NULL) {
- return __glXError(GLXBadContext); /* XXX: Is this correct? */
- }
- pSendBuf = sendBuf;
- *pSendBuf++ = GLX_SHARE_CONTEXT_EXT;
- *pSendBuf++ = (int)(ctx->share_id);
- *pSendBuf++ = GLX_VISUAL_ID_EXT;
- *pSendBuf++ = (int)(ctx->config->visualID);
- *pSendBuf++ = GLX_SCREEN_EXT;
- *pSendBuf++ = (int)(ctx->pGlxScreen->pScreen->myNum);
-
- if (client->swapped) {
- __glXSwapQueryContextInfoEXTReply(client, &reply, sendBuf);
- } else {
- WriteToClient(client, sz_xGLXQueryContextInfoEXTReply, (char *)&reply);
- WriteToClient(client, nReplyBytes, (char *)sendBuf);
- }
- free((char *)sendBuf);
-
- return Success;
-}
-
-int __glXDisp_QueryContextInfoEXT(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXQueryContextInfoEXTReq *req = (xGLXQueryContextInfoEXTReq *) pc;
-
- REQUEST_SIZE_MATCH(xGLXQueryContextInfoEXTReq);
-
- return DoQueryContext(cl, req->context);
-}
-
-int __glXDisp_QueryContext(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXQueryContextReq *req = (xGLXQueryContextReq *) pc;
-
- REQUEST_SIZE_MATCH(xGLXQueryContextReq);
-
- return DoQueryContext(cl, req->context);
-}
-
-int __glXDisp_BindTexImageEXT(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
- ClientPtr client = cl->client;
- struct glx_context *context;
- __GLXdrawable *pGlxDraw;
- GLXDrawable drawId;
- int buffer;
- int error;
-
- REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 8);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
-
- drawId = *((CARD32 *) (pc));
- buffer = *((INT32 *) (pc + 4));
-
- if (buffer != GLX_FRONT_LEFT_EXT)
- return __glXError(GLXBadPixmap);
-
- context = __glXForceCurrent (cl, req->contextTag, &error);
- if (!context)
- return error;
-
- if (!validGlxDrawable(client, drawId, GLX_DRAWABLE_PIXMAP,
- DixReadAccess, &pGlxDraw, &error))
- return error;
-
- if (!context->textureFromPixmap)
- return __glXError(GLXUnsupportedPrivateRequest);
-
- return context->textureFromPixmap->bindTexImage(context,
- buffer,
- pGlxDraw);
-}
-
-int __glXDisp_ReleaseTexImageEXT(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
- ClientPtr client = cl->client;
- __GLXdrawable *pGlxDraw;
- struct glx_context *context;
- GLXDrawable drawId;
- int buffer;
- int error;
-
- REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 8);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
-
- drawId = *((CARD32 *) (pc));
- buffer = *((INT32 *) (pc + 4));
-
- context = __glXForceCurrent (cl, req->contextTag, &error);
- if (!context)
- return error;
-
- if (!validGlxDrawable(client, drawId, GLX_DRAWABLE_PIXMAP,
- DixReadAccess, &pGlxDraw, &error))
- return error;
-
- if (!context->textureFromPixmap)
- return __glXError(GLXUnsupportedPrivateRequest);
-
- return context->textureFromPixmap->releaseTexImage(context,
- buffer,
- pGlxDraw);
-}
-
-int __glXDisp_CopySubBufferMESA(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
- GLXContextTag tag = req->contextTag;
- struct glx_context *glxc = NULL;
- __GLXdrawable *pGlxDraw;
- ClientPtr client = cl->client;
- GLXDrawable drawId;
- int error;
- int x, y, width, height;
-
- (void) client;
- (void) req;
-
- REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 20);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
-
- drawId = *((CARD32 *) (pc));
- x = *((INT32 *) (pc + 4));
- y = *((INT32 *) (pc + 8));
- width = *((INT32 *) (pc + 12));
- height = *((INT32 *) (pc + 16));
-
- if (tag) {
- glxc = __glXLookupContextByTag(cl, tag);
- if (!glxc) {
- return __glXError(GLXBadContextTag);
- }
- /*
- ** The calling thread is swapping its current drawable. In this case,
- ** glxSwapBuffers is in both GL and X streams, in terms of
- ** sequentiality.
- */
- if (__glXForceCurrent(cl, tag, &error)) {
- /*
- ** Do whatever is needed to make sure that all preceding requests
- ** in both streams are completed before the swap is executed.
- */
- CALL_Finish( GET_DISPATCH(), () );
- __GLX_NOTE_FLUSHED_CMDS(glxc);
- } else {
- return error;
- }
- }
-
- pGlxDraw = __glXGetDrawable(glxc, drawId, client, &error);
- if (!pGlxDraw)
- return error;
-
- if (pGlxDraw == NULL ||
- pGlxDraw->type != GLX_DRAWABLE_WINDOW ||
- pGlxDraw->copySubBuffer == NULL)
- return __glXError(GLXBadDrawable);
-
- (*pGlxDraw->copySubBuffer)(pGlxDraw, x, y, width, height);
-
- return Success;
-}
-
-/*
-** Get drawable attributes
-*/
-static int
-DoGetDrawableAttributes(__GLXclientState *cl, XID drawId)
-{
- ClientPtr client = cl->client;
- xGLXGetDrawableAttributesReply reply;
- __GLXdrawable *pGlxDraw;
- CARD32 attributes[6];
- int numAttribs, error;
-
- if (!validGlxDrawable(client, drawId, GLX_DRAWABLE_ANY,
- DixGetAttrAccess, &pGlxDraw, &error))
- return error;
-
- numAttribs = 3;
- reply.length = numAttribs << 1;
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
- reply.numAttribs = numAttribs;
-
- attributes[0] = GLX_TEXTURE_TARGET_EXT;
- attributes[1] = pGlxDraw->target == GL_TEXTURE_2D ? GLX_TEXTURE_2D_EXT :
- GLX_TEXTURE_RECTANGLE_EXT;
- attributes[2] = GLX_Y_INVERTED_EXT;
- attributes[3] = GL_FALSE;
- attributes[4] = GLX_EVENT_MASK;
- attributes[5] = pGlxDraw->eventMask;
-
- if (client->swapped) {
- __glXSwapGetDrawableAttributesReply(client, &reply, attributes);
- } else {
- WriteToClient(client, sz_xGLXGetDrawableAttributesReply,
- (char *)&reply);
- WriteToClient(client, reply.length * sizeof (CARD32),
- (char *)attributes);
- }
-
- return Success;
-}
-
-int __glXDisp_GetDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXGetDrawableAttributesReq *req = (xGLXGetDrawableAttributesReq *)pc;
-
- REQUEST_SIZE_MATCH(xGLXGetDrawableAttributesReq);
-
- return DoGetDrawableAttributes(cl, req->drawable);
-}
-
-int __glXDisp_GetDrawableAttributesSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXGetDrawableAttributesSGIXReq *req =
- (xGLXGetDrawableAttributesSGIXReq *)pc;
-
- REQUEST_SIZE_MATCH(xGLXGetDrawableAttributesSGIXReq);
-
- return DoGetDrawableAttributes(cl, req->drawable);
-}
-
-/************************************************************************/
-
-/*
-** Render and Renderlarge are not in the GLX API. They are used by the GLX
-** client library to send batches of GL rendering commands.
-*/
-
-/*
-** Execute all the drawing commands in a request.
-*/
-int __glXDisp_Render(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXRenderReq *req;
- ClientPtr client= cl->client;
- int left, cmdlen, error;
- int commandsDone;
- CARD16 opcode;
- __GLXrenderHeader *hdr;
- struct glx_context *glxc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_AT_LEAST_SIZE(xGLXRenderReq);
-
- req = (xGLXRenderReq *) pc;
- if (client->swapped) {
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
- }
-
- glxc = __glXForceCurrent(cl, req->contextTag, &error);
- if (!glxc) {
- return error;
- }
-
- commandsDone = 0;
- pc += sz_xGLXRenderReq;
- left = (req->length << 2) - sz_xGLXRenderReq;
- while (left > 0) {
- __GLXrenderSizeData entry;
- int extra;
- __GLXdispatchRenderProcPtr proc;
- int err;
-
- if (left < sizeof(__GLXrenderHeader))
- return BadLength;
-
- /*
- ** Verify that the header length and the overall length agree.
- ** Also, each command must be word aligned.
- */
- hdr = (__GLXrenderHeader *) pc;
- if (client->swapped) {
- __GLX_SWAP_SHORT(&hdr->length);
- __GLX_SWAP_SHORT(&hdr->opcode);
- }
- cmdlen = hdr->length;
- opcode = hdr->opcode;
-
- /*
- ** Check for core opcodes and grab entry data.
- */
- err = __glXGetProtocolSizeData(& Render_dispatch_info, opcode, & entry);
- proc = (__GLXdispatchRenderProcPtr)
- __glXGetProtocolDecodeFunction(& Render_dispatch_info,
- opcode, client->swapped);
-
- if ((err < 0) || (proc == NULL)) {
- client->errorValue = commandsDone;
- return __glXError(GLXBadRenderRequest);
- }
-
- if (entry.varsize) {
- /* variable size command */
- extra = (*entry.varsize)(pc + __GLX_RENDER_HDR_SIZE,
- client->swapped);
- if (extra < 0) {
- extra = 0;
- }
- if (cmdlen != __GLX_PAD(entry.bytes + extra)) {
- return BadLength;
- }
- } else {
- /* constant size command */
- if (cmdlen != __GLX_PAD(entry.bytes)) {
- return BadLength;
- }
- }
- if (left < cmdlen) {
- return BadLength;
- }
-
- /*
- ** Skip over the header and execute the command. We allow the
- ** caller to trash the command memory. This is useful especially
- ** for things that require double alignment - they can just shift
- ** the data towards lower memory (trashing the header) by 4 bytes
- ** and achieve the required alignment.
- */
- (*proc)(pc + __GLX_RENDER_HDR_SIZE);
- pc += cmdlen;
- left -= cmdlen;
- commandsDone++;
- }
- __GLX_NOTE_UNFLUSHED_CMDS(glxc);
- return Success;
-}
-
-
-/*
-** Execute a large rendering request (one that spans multiple X requests).
-*/
-int __glXDisp_RenderLarge(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXRenderLargeReq *req;
- ClientPtr client= cl->client;
- size_t dataBytes;
- __GLXrenderLargeHeader *hdr;
- struct glx_context *glxc;
- int error;
- CARD16 opcode;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- req = (xGLXRenderLargeReq *) pc;
- if (client->swapped) {
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
- __GLX_SWAP_INT(&req->dataBytes);
- __GLX_SWAP_SHORT(&req->requestNumber);
- __GLX_SWAP_SHORT(&req->requestTotal);
- }
-
- glxc = __glXForceCurrent(cl, req->contextTag, &error);
- if (!glxc) {
- /* Reset in case this isn't 1st request. */
- __glXResetLargeCommandStatus(cl);
- return error;
- }
- dataBytes = req->dataBytes;
-
- /*
- ** Check the request length.
- */
- if ((req->length << 2) != __GLX_PAD(dataBytes) + sz_xGLXRenderLargeReq) {
- client->errorValue = req->length;
- /* Reset in case this isn't 1st request. */
- __glXResetLargeCommandStatus(cl);
- return BadLength;
- }
- pc += sz_xGLXRenderLargeReq;
-
- if (cl->largeCmdRequestsSoFar == 0) {
- __GLXrenderSizeData entry;
- int extra;
- size_t cmdlen;
- int err;
-
- /*
- ** This is the first request of a multi request command.
- ** Make enough space in the buffer, then copy the entire request.
- */
- if (req->requestNumber != 1) {
- client->errorValue = req->requestNumber;
- return __glXError(GLXBadLargeRequest);
- }
-
- hdr = (__GLXrenderLargeHeader *) pc;
- if (client->swapped) {
- __GLX_SWAP_INT(&hdr->length);
- __GLX_SWAP_INT(&hdr->opcode);
- }
- cmdlen = hdr->length;
- opcode = hdr->opcode;
-
- /*
- ** Check for core opcodes and grab entry data.
- */
- err = __glXGetProtocolSizeData(& Render_dispatch_info, opcode, & entry);
- if (err < 0) {
- client->errorValue = opcode;
- return __glXError(GLXBadLargeRequest);
- }
-
- if (entry.varsize) {
- /*
- ** If it's a variable-size command (a command whose length must
- ** be computed from its parameters), all the parameters needed
- ** will be in the 1st request, so it's okay to do this.
- */
- extra = (*entry.varsize)(pc + __GLX_RENDER_LARGE_HDR_SIZE,
- client->swapped);
- if (extra < 0) {
- extra = 0;
- }
- /* large command's header is 4 bytes longer, so add 4 */
- if (cmdlen != __GLX_PAD(entry.bytes + 4 + extra)) {
- return BadLength;
- }
- } else {
- /* constant size command */
- if (cmdlen != __GLX_PAD(entry.bytes + 4)) {
- return BadLength;
- }
- }
- /*
- ** Make enough space in the buffer, then copy the entire request.
- */
- if (cl->largeCmdBufSize < cmdlen) {
- if (!cl->largeCmdBuf) {
- cl->largeCmdBuf = (GLbyte *) malloc(cmdlen);
- } else {
- cl->largeCmdBuf = (GLbyte *) realloc(cl->largeCmdBuf, cmdlen);
- }
- if (!cl->largeCmdBuf) {
- return BadAlloc;
- }
- cl->largeCmdBufSize = cmdlen;
- }
- memcpy(cl->largeCmdBuf, pc, dataBytes);
-
- cl->largeCmdBytesSoFar = dataBytes;
- cl->largeCmdBytesTotal = cmdlen;
- cl->largeCmdRequestsSoFar = 1;
- cl->largeCmdRequestsTotal = req->requestTotal;
- return Success;
-
- } else {
- /*
- ** We are receiving subsequent (i.e. not the first) requests of a
- ** multi request command.
- */
-
- /*
- ** Check the request number and the total request count.
- */
- if (req->requestNumber != cl->largeCmdRequestsSoFar + 1) {
- client->errorValue = req->requestNumber;
- __glXResetLargeCommandStatus(cl);
- return __glXError(GLXBadLargeRequest);
- }
- if (req->requestTotal != cl->largeCmdRequestsTotal) {
- client->errorValue = req->requestTotal;
- __glXResetLargeCommandStatus(cl);
- return __glXError(GLXBadLargeRequest);
- }
-
- /*
- ** Check that we didn't get too much data.
- */
- if ((cl->largeCmdBytesSoFar + dataBytes) > cl->largeCmdBytesTotal) {
- client->errorValue = dataBytes;
- __glXResetLargeCommandStatus(cl);
- return __glXError(GLXBadLargeRequest);
- }
- memcpy(cl->largeCmdBuf + cl->largeCmdBytesSoFar, pc, dataBytes);
- cl->largeCmdBytesSoFar += dataBytes;
- cl->largeCmdRequestsSoFar++;
-
- if (req->requestNumber == cl->largeCmdRequestsTotal) {
- __GLXdispatchRenderProcPtr proc;
-
- /*
- ** This is the last request; it must have enough bytes to complete
- ** the command.
- */
- /* NOTE: the two pad macros have been added below; they are needed
- ** because the client library pads the total byte count, but not
- ** the per-request byte counts. The Protocol Encoding says the
- ** total byte count should not be padded, so a proposal will be
- ** made to the ARB to relax the padding constraint on the total
- ** byte count, thus preserving backward compatibility. Meanwhile,
- ** the padding done below fixes a bug that did not allow
- ** large commands of odd sizes to be accepted by the server.
- */
- if (__GLX_PAD(cl->largeCmdBytesSoFar) !=
- __GLX_PAD(cl->largeCmdBytesTotal)) {
- client->errorValue = dataBytes;
- __glXResetLargeCommandStatus(cl);
- return __glXError(GLXBadLargeRequest);
- }
- hdr = (__GLXrenderLargeHeader *) cl->largeCmdBuf;
- /*
- ** The opcode and length field in the header had already been
- ** swapped when the first request was received.
- **
- ** Use the opcode to index into the procedure table.
- */
- opcode = hdr->opcode;
-
- proc = (__GLXdispatchRenderProcPtr)
- __glXGetProtocolDecodeFunction(& Render_dispatch_info, opcode,
- client->swapped);
- if (proc == NULL) {
- client->errorValue = opcode;
- return __glXError(GLXBadLargeRequest);
- }
-
- /*
- ** Skip over the header and execute the command.
- */
- (*proc)(cl->largeCmdBuf + __GLX_RENDER_LARGE_HDR_SIZE);
- __GLX_NOTE_UNFLUSHED_CMDS(glxc);
-
- /*
- ** Reset for the next RenderLarge series.
- */
- __glXResetLargeCommandStatus(cl);
- } else {
- /*
- ** This is neither the first nor the last request.
- */
- }
- return Success;
- }
-}
-
-/************************************************************************/
-
-/*
-** No support is provided for the vendor-private requests other than
-** allocating the entry points in the dispatch table.
-*/
-
-int __glXDisp_VendorPrivate(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
- GLint vendorcode = req->vendorCode;
- __GLXdispatchVendorPrivProcPtr proc;
-
- REQUEST_AT_LEAST_SIZE(xGLXVendorPrivateReq);
-
- proc = (__GLXdispatchVendorPrivProcPtr)
- __glXGetProtocolDecodeFunction(& VendorPriv_dispatch_info,
- vendorcode, 0);
- if (proc != NULL) {
- (*proc)(cl, (GLbyte*)req);
- return Success;
- }
-
- cl->client->errorValue = req->vendorCode;
- return __glXError(GLXUnsupportedPrivateRequest);
-}
-
-int __glXDisp_VendorPrivateWithReply(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
- GLint vendorcode = req->vendorCode;
- __GLXdispatchVendorPrivProcPtr proc;
-
- REQUEST_AT_LEAST_SIZE(xGLXVendorPrivateReq);
-
- proc = (__GLXdispatchVendorPrivProcPtr)
- __glXGetProtocolDecodeFunction(& VendorPriv_dispatch_info,
- vendorcode, 0);
- if (proc != NULL) {
- return (*proc)(cl, (GLbyte*)req);
- }
-
- cl->client->errorValue = vendorcode;
- return __glXError(GLXUnsupportedPrivateRequest);
-}
-
-int __glXDisp_QueryExtensionsString(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXQueryExtensionsStringReq *req = (xGLXQueryExtensionsStringReq *) pc;
- xGLXQueryExtensionsStringReply reply;
- __GLXscreen *pGlxScreen;
- size_t n, length;
- char *buf;
- int err;
-
- REQUEST_SIZE_MATCH(xGLXQueryExtensionsStringReq);
-
- if (!validGlxScreen(client, req->screen, &pGlxScreen, &err))
- return err;
-
- n = strlen(pGlxScreen->GLXextensions) + 1;
- length = __GLX_PAD(n) >> 2;
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
- reply.length = length;
- reply.n = n;
-
- /* Allocate buffer to make sure it's a multiple of 4 bytes big.*/
- buf = (char *) malloc(length << 2);
- if (buf == NULL)
- return BadAlloc;
- memcpy(buf, pGlxScreen->GLXextensions, n);
-
- if (client->swapped) {
- glxSwapQueryExtensionsStringReply(client, &reply, buf);
- } else {
- WriteToClient(client, sz_xGLXQueryExtensionsStringReply,(char *)&reply);
- WriteToClient(client, (int)(length << 2), (char *)buf);
- }
-
- free(buf);
- return Success;
-}
-
-int __glXDisp_QueryServerString(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXQueryServerStringReq *req = (xGLXQueryServerStringReq *) pc;
- xGLXQueryServerStringReply reply;
- size_t n, length;
- const char *ptr;
- char *buf;
- __GLXscreen *pGlxScreen;
- int err;
- char ver_str[16];
-
- REQUEST_SIZE_MATCH(xGLXQueryServerStringReq);
-
- if (!validGlxScreen(client, req->screen, &pGlxScreen, &err))
- return err;
-
- switch(req->name) {
- case GLX_VENDOR:
- ptr = pGlxScreen->GLXvendor;
- break;
- case GLX_VERSION:
- /* Return to the server version rather than the screen version
- * to prevent confusion when they do not match.
- */
- snprintf(ver_str, 16, "%d.%d", glxMajorVersion, glxMinorVersion);
- ptr = ver_str;
- break;
- case GLX_EXTENSIONS:
- ptr = pGlxScreen->GLXextensions;
- break;
- default:
- return BadValue;
- }
-
- n = strlen(ptr) + 1;
- length = __GLX_PAD(n) >> 2;
- reply.type = X_Reply;
- reply.sequenceNumber = client->sequence;
- reply.length = length;
- reply.n = n;
-
- buf = (char *) malloc(length << 2);
- if (buf == NULL) {
- return BadAlloc;
- }
- memcpy(buf, ptr, n);
-
- if (client->swapped) {
- glxSwapQueryServerStringReply(client, &reply, buf);
- } else {
- WriteToClient(client, sz_xGLXQueryServerStringReply, (char *)&reply);
- WriteToClient(client, (int)(length << 2), buf);
- }
-
- free(buf);
- return Success;
-}
-
-int __glXDisp_ClientInfo(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXClientInfoReq *req = (xGLXClientInfoReq *) pc;
- const char *buf;
-
- REQUEST_AT_LEAST_SIZE(xGLXClientInfoReq);
-
- buf = (const char *)(req+1);
- if (!memchr(buf, 0, (client->req_len << 2) - sizeof(xGLXClientInfoReq)))
- return BadLength;
-
- cl->GLClientmajorVersion = req->major;
- cl->GLClientminorVersion = req->minor;
- free(cl->GLClientextensions);
- cl->GLClientextensions = strdup(buf);
-
- return Success;
-}
+/*
+ * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
+ * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice including the dates of first publication and
+ * either this permission notice or a reference to
+ * http://oss.sgi.com/projects/FreeB/
+ * shall be included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+ * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Except as contained in this notice, the name of Silicon Graphics, Inc.
+ * shall not be used in advertising or otherwise to promote the sale, use or
+ * other dealings in this Software without prior written authorization from
+ * Silicon Graphics, Inc.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#else
+
+#include "glheader.h"
+
+#endif
+
+#include <string.h>
+#include <assert.h>
+
+#include "glxserver.h"
+#include <GL/glxtokens.h>
+#include <unpack.h>
+#include <pixmapstr.h>
+#include <windowstr.h>
+#include "glxutil.h"
+#include "glxext.h"
+#include "glapitable.h"
+#include "glapi.h"
+#include "glthread.h"
+#include "dispatch.h"
+#include "indirect_dispatch.h"
+#include "indirect_table.h"
+#include "indirect_util.h"
+
+static int
+validGlxScreen(ClientPtr client, int screen, __GLXscreen **pGlxScreen, int *err)
+{
+ /*
+ ** Check if screen exists.
+ */
+ if (screen < 0 || screen >= screenInfo.numScreens) {
+ client->errorValue = screen;
+ *err = BadValue;
+ return FALSE;
+ }
+ *pGlxScreen = glxGetScreen(screenInfo.screens[screen]);
+
+ return TRUE;
+}
+
+static int
+validGlxFBConfig(ClientPtr client, __GLXscreen *pGlxScreen, XID id,
+ __GLXconfig **config, int *err)
+{
+ __GLXconfig *m;
+
+ for (m = pGlxScreen->fbconfigs; m != NULL; m = m->next)
+ if (m->fbconfigID == id) {
+ *config = m;
+ return TRUE;
+ }
+
+ client->errorValue = id;
+ *err = __glXError(GLXBadFBConfig);
+
+ return FALSE;
+}
+
+static int
+validGlxVisual(ClientPtr client, __GLXscreen *pGlxScreen, XID id,
+ __GLXconfig **config, int *err)
+{
+ int i;
+
+ for (i = 0; i < pGlxScreen->numVisuals; i++)
+ if (pGlxScreen->visuals[i]->visualID == id) {
+ *config = pGlxScreen->visuals[i];
+ return TRUE;
+ }
+
+ client->errorValue = id;
+ *err = BadValue;
+
+ return FALSE;
+}
+
+static int
+validGlxFBConfigForWindow(ClientPtr client, __GLXconfig *config,
+ DrawablePtr pDraw, int *err)
+{
+ ScreenPtr pScreen = pDraw->pScreen;
+ VisualPtr pVisual = NULL;
+ XID vid;
+ int i;
+
+ vid = wVisual((WindowPtr)pDraw);
+ for (i = 0; i < pScreen->numVisuals; i++) {
+ if (pScreen->visuals[i].vid == vid) {
+ pVisual = &pScreen->visuals[i];
+ break;
+ }
+ }
+
+ /* FIXME: What exactly should we check here... */
+ if (pVisual->class != glxConvertToXVisualType(config->visualType) ||
+ !(config->drawableType & GLX_WINDOW_BIT)) {
+ client->errorValue = pDraw->id;
+ *err = BadMatch;
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static int
+validGlxContext(ClientPtr client, XID id, int access_mode,
+ struct glx_context **context, int *err)
+{
+ *err = dixLookupResourceByType((pointer *) context, id,
+ __glXContextRes, client, access_mode);
+ if (*err != Success) {
+ client->errorValue = id;
+ if (*err == BadValue)
+ *err = __glXError(GLXBadContext);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static int
+validGlxDrawable(ClientPtr client, XID id, int type, int access_mode,
+ __GLXdrawable **drawable, int *err)
+{
+ int rc;
+
+ rc = dixLookupResourceByType((pointer *) drawable, id,
+ __glXDrawableRes, client, access_mode);
+ if (rc != Success && rc != BadValue) {
+ *err = rc;
+ client->errorValue = id;
+ return FALSE;
+ }
+
+ /* If the ID of the glx drawable we looked up doesn't match the id
+ * we looked for, it's because we looked it up under the X
+ * drawable ID (see DoCreateGLXDrawable). */
+ if (rc == BadValue ||
+ (*drawable)->drawId != id ||
+ (type != GLX_DRAWABLE_ANY && type != (*drawable)->type)) {
+ client->errorValue = id;
+ switch (type) {
+ case GLX_DRAWABLE_WINDOW:
+ *err = __glXError(GLXBadWindow);
+ return FALSE;
+ case GLX_DRAWABLE_PIXMAP:
+ *err = __glXError(GLXBadPixmap);
+ return FALSE;
+ case GLX_DRAWABLE_PBUFFER:
+ *err = __glXError(GLXBadPbuffer);
+ return FALSE;
+ case GLX_DRAWABLE_ANY:
+ *err = __glXError(GLXBadDrawable);
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+void
+__glXContextDestroy(struct glx_context *context)
+{
+ __glXFlushContextCache();
+}
+
+static void __glXdirectContextDestroy(struct glx_context *context)
+{
+ __glXContextDestroy(context);
+ free(context);
+}
+
+static struct glx_context *__glXdirectContextCreate(__GLXscreen *screen,
+ __GLXconfig *modes,
+ struct glx_context *shareContext)
+{
+ struct glx_context *context;
+
+ context = calloc(1, sizeof (struct glx_context));
+ if (context == NULL)
+ return NULL;
+
+ context->destroy = __glXdirectContextDestroy;
+
+ return context;
+}
+
+void FlushContext(struct glx_context *cx)
+{
+ CALL_Flush( GET_DISPATCH(), () );
+ __GLX_NOTE_FLUSHED_CMDS(cx);
+}
+
+/**
+ * Create a GL context with the given properties. This routine is used
+ * to implement \c glXCreateContext, \c glXCreateNewContext, and
+ * \c glXCreateContextWithConfigSGIX. This works becuase of the hack way
+ * that GLXFBConfigs are implemented. Basically, the FBConfigID is the
+ * same as the VisualID.
+ */
+
+static int
+DoCreateContext(__GLXclientState *cl, GLXContextID gcId,
+ GLXContextID shareList, __GLXconfig *config,
+ __GLXscreen *pGlxScreen, GLboolean isDirect)
+{
+ ClientPtr client = cl->client;
+ struct glx_context *glxc, *shareglxc;
+ int err;
+
+ LEGAL_NEW_RESOURCE(gcId, client);
+
+ /*
+ ** Find the display list space that we want to share.
+ **
+ ** NOTE: In a multithreaded X server, we would need to keep a reference
+ ** count for each display list so that if one client detroyed a list that
+ ** another client was using, the list would not really be freed until it
+ ** was no longer in use. Since this sample implementation has no support
+ ** for multithreaded servers, we don't do this.
+ */
+ if (shareList == None) {
+ shareglxc = 0;
+ } else {
+ if (!validGlxContext(client, shareList, DixReadAccess,
+ &shareglxc, &err))
+ return err;
+
+ if (shareglxc->isDirect) {
+ /*
+ ** NOTE: no support for sharing display lists between direct
+ ** contexts, even if they are in the same address space.
+ */
+#if 0
+ /* Disabling this code seems to allow shared display lists
+ * and texture objects to work. We'll leave it disabled for now.
+ */
+ client->errorValue = shareList;
+ return BadMatch;
+#endif
+ } else {
+ /*
+ ** Create an indirect context regardless of what the client asked
+ ** for; this way we can share display list space with shareList.
+ */
+ isDirect = GL_FALSE;
+ }
+ }
+
+ /*
+ ** Allocate memory for the new context
+ */
+ if (!isDirect)
+ glxc = pGlxScreen->createContext(pGlxScreen, config, shareglxc);
+ else
+ glxc = __glXdirectContextCreate(pGlxScreen, config, shareglxc);
+ if (!glxc) {
+ return BadAlloc;
+ }
+
+ /*
+ ** Initially, setup the part of the context that could be used by
+ ** a GL core that needs windowing information (e.g., Mesa).
+ */
+ glxc->pGlxScreen = pGlxScreen;
+ glxc->config = config;
+
+ /*
+ ** Register this context as a resource.
+ */
+ if (!AddResource(gcId, __glXContextRes, (pointer)glxc)) {
+ (*glxc->destroy)(glxc);
+ client->errorValue = gcId;
+ return BadAlloc;
+ }
+
+ /*
+ ** Finally, now that everything is working, setup the rest of the
+ ** context.
+ */
+ glxc->id = gcId;
+ glxc->share_id = shareList;
+ glxc->idExists = GL_TRUE;
+ glxc->isCurrent = GL_FALSE;
+ glxc->isDirect = isDirect;
+ glxc->renderMode = GL_RENDER;
+
+ __glXAddToContextList(glxc);
+
+ return Success;
+}
+
+int __glXDisp_CreateContext(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCreateContextReq *req = (xGLXCreateContextReq *) pc;
+ __GLXconfig *config;
+ __GLXscreen *pGlxScreen;
+ int err;
+
+ REQUEST_SIZE_MATCH(xGLXCreateContextReq);
+
+ if (!validGlxScreen(cl->client, req->screen, &pGlxScreen, &err))
+ return err;
+ if (!validGlxVisual(cl->client, pGlxScreen, req->visual, &config, &err))
+ return err;
+
+ return DoCreateContext(cl, req->context, req->shareList,
+ config, pGlxScreen, req->isDirect);
+}
+
+int __glXDisp_CreateNewContext(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCreateNewContextReq *req = (xGLXCreateNewContextReq *) pc;
+ __GLXconfig *config;
+ __GLXscreen *pGlxScreen;
+ int err;
+
+ REQUEST_SIZE_MATCH(xGLXCreateNewContextReq);
+
+ if (!validGlxScreen(cl->client, req->screen, &pGlxScreen, &err))
+ return err;
+ if (!validGlxFBConfig(cl->client, pGlxScreen, req->fbconfig, &config, &err))
+ return err;
+
+ return DoCreateContext(cl, req->context, req->shareList,
+ config, pGlxScreen, req->isDirect);
+}
+
+int __glXDisp_CreateContextWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCreateContextWithConfigSGIXReq *req =
+ (xGLXCreateContextWithConfigSGIXReq *) pc;
+ __GLXconfig *config;
+ __GLXscreen *pGlxScreen;
+ int err;
+
+ REQUEST_SIZE_MATCH(xGLXCreateContextWithConfigSGIXReq);
+
+ if (!validGlxScreen(cl->client, req->screen, &pGlxScreen, &err))
+ return err;
+ if (!validGlxFBConfig(cl->client, pGlxScreen, req->fbconfig, &config, &err))
+ return err;
+
+ return DoCreateContext(cl, req->context, req->shareList,
+ config, pGlxScreen, req->isDirect);
+}
+int __glXDisp_DestroyContext(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXDestroyContextReq *req = (xGLXDestroyContextReq *) pc;
+ struct glx_context *glxc;
+ int err;
+
+ REQUEST_SIZE_MATCH(xGLXDestroyContextReq);
+
+ if (!validGlxContext(cl->client, req->context, DixDestroyAccess,
+ &glxc, &err))
+ return err;
+
+ FreeResourceByType(req->context, __glXContextRes, FALSE);
+ return Success;
+}
+
+/*****************************************************************************/
+
+/*
+** For each client, the server keeps a table of all the contexts that are
+** current for that client (each thread of a client may have its own current
+** context). These routines add, change, and lookup contexts in the table.
+*/
+
+/*
+** Add a current context, and return the tag that will be used to refer to it.
+*/
+static int AddCurrentContext(__GLXclientState *cl, struct glx_context *glxc)
+{
+ int i;
+ int num = cl->numCurrentContexts;
+ struct glx_context **table = cl->currentContexts;
+
+ if (!glxc) return -1;
+
+ /*
+ ** Try to find an empty slot and use it.
+ */
+ for (i=0; i < num; i++) {
+ if (!table[i]) {
+ table[i] = glxc;
+ return i+1;
+ }
+ }
+ /*
+ ** Didn't find a free slot, so we'll have to grow the table.
+ */
+ if (!num) {
+ table = (struct glx_context **) malloc(sizeof(struct glx_context *));
+ } else {
+ table = (struct glx_context **) realloc(table,
+ (num+1)*sizeof(struct glx_context *));
+ }
+ table[num] = glxc;
+ cl->currentContexts = table;
+ cl->numCurrentContexts++;
+ return num+1;
+}
+
+/*
+** Given a tag, change the current context for the corresponding entry.
+*/
+static void ChangeCurrentContext(__GLXclientState *cl, struct glx_context *glxc,
+ GLXContextTag tag)
+{
+ struct glx_context **table = cl->currentContexts;
+ table[tag-1] = glxc;
+}
+
+/*
+** For this implementation we have chosen to simply use the index of the
+** context's entry in the table as the context tag. A tag must be greater
+** than 0.
+*/
+struct glx_context *__glXLookupContextByTag(__GLXclientState *cl, GLXContextTag tag)
+{
+ int num = cl->numCurrentContexts;
+
+ if (tag < 1 || tag > num) {
+ return 0;
+ } else {
+ return cl->currentContexts[tag-1];
+ }
+}
+
+/*****************************************************************************/
+
+static void StopUsingContext(struct glx_context *glxc)
+{
+ if (glxc) {
+ if (glxc == __glXLastContext) {
+ /* Tell server GL library */
+ __glXLastContext = 0;
+ }
+ glxc->isCurrent = GL_FALSE;
+ if (!glxc->idExists) {
+ __glXFreeContext(glxc);
+ }
+ }
+}
+
+static void StartUsingContext(__GLXclientState *cl, struct glx_context *glxc)
+{
+ glxc->isCurrent = GL_TRUE;
+ __glXLastContext = glxc;
+}
+
+/**
+ * This is a helper function to handle the legacy (pre GLX 1.3) cases
+ * where passing an X window to glXMakeCurrent is valid. Given a
+ * resource ID, look up the GLX drawable if available, otherwise, make
+ * sure it's an X window and create a GLX drawable one the fly.
+ */
+static __GLXdrawable *
+__glXGetDrawable(struct glx_context *glxc, GLXDrawable drawId, ClientPtr client,
+ int *error)
+{
+ DrawablePtr pDraw;
+ __GLXdrawable *pGlxDraw;
+ int rc;
+
+ if (validGlxDrawable(client, drawId, GLX_DRAWABLE_ANY,
+ DixWriteAccess, &pGlxDraw, &rc)) {
+ if (glxc != NULL && pGlxDraw->config != glxc->config) {
+ client->errorValue = drawId;
+ *error = BadMatch;
+ return NULL;
+ }
+
+ return pGlxDraw;
+ }
+
+ /* No active context and an unknown drawable, bail. */
+ if (glxc == NULL) {
+ client->errorValue = drawId;
+ *error = BadMatch;
+ return NULL;
+ }
+
+ /* The drawId wasn't a GLX drawable. Make sure it's a window and
+ * create a GLXWindow for it. Check that the drawable screen
+ * matches the context screen and that the context fbconfig is
+ * compatible with the window visual. */
+
+ rc = dixLookupDrawable(&pDraw, drawId, client, 0, DixGetAttrAccess);
+ if (rc != Success || pDraw->type != DRAWABLE_WINDOW) {
+ client->errorValue = drawId;
+ *error = __glXError(GLXBadDrawable);
+ return NULL;
+ }
+
+ if (!glxc || pDraw->pScreen != glxc->pGlxScreen->pScreen) {
+ client->errorValue = pDraw->pScreen->myNum;
+ *error = BadMatch;
+ return NULL;
+ }
+
+ if (!validGlxFBConfigForWindow(client, glxc->config, pDraw, error))
+ return NULL;
+
+ pGlxDraw = glxc->pGlxScreen->createDrawable(client, glxc->pGlxScreen,
+ pDraw, drawId,
+ GLX_DRAWABLE_WINDOW,
+ drawId, glxc->config);
+
+ /* since we are creating the drawablePrivate, drawId should be new */
+ if (!AddResource(drawId, __glXDrawableRes, pGlxDraw)) {
+ pGlxDraw->destroy (pGlxDraw);
+ *error = BadAlloc;
+ return NULL;
+ }
+
+ return pGlxDraw;
+}
+
+/*****************************************************************************/
+/*
+** Make an OpenGL context and drawable current.
+*/
+
+static int
+DoMakeCurrent(__GLXclientState *cl,
+ GLXDrawable drawId, GLXDrawable readId,
+ GLXContextID contextId, GLXContextTag tag)
+{
+ ClientPtr client = cl->client;
+ xGLXMakeCurrentReply reply;
+ struct glx_context *glxc, *prevglxc;
+ __GLXdrawable *drawPriv = NULL;
+ __GLXdrawable *readPriv = NULL;
+ int error;
+ GLuint mask;
+
+ /*
+ ** If one is None and the other isn't, it's a bad match.
+ */
+
+ mask = (drawId == None) ? (1 << 0) : 0;
+ mask |= (readId == None) ? (1 << 1) : 0;
+ mask |= (contextId == None) ? (1 << 2) : 0;
+
+ if ( (mask != 0x00) && (mask != 0x07) ) {
+ return BadMatch;
+ }
+
+ /*
+ ** Lookup old context. If we have one, it must be in a usable state.
+ */
+ if (tag != 0) {
+ prevglxc = __glXLookupContextByTag(cl, tag);
+ if (!prevglxc) {
+ /*
+ ** Tag for previous context is invalid.
+ */
+ return __glXError(GLXBadContextTag);
+ }
+ if (prevglxc->renderMode != GL_RENDER) {
+ /* Oops. Not in render mode render. */
+ client->errorValue = prevglxc->id;
+ return __glXError(GLXBadContextState);
+ }
+ } else {
+ prevglxc = 0;
+ }
+
+ /*
+ ** Lookup new context. It must not be current for someone else.
+ */
+ if (contextId != None) {
+ int status;
+
+ if (!validGlxContext(client, contextId, DixUseAccess, &glxc, &error))
+ return error;
+ if ((glxc != prevglxc) && glxc->isCurrent) {
+ /* Context is current to somebody else */
+ return BadAccess;
+ }
+
+ assert( drawId != None );
+ assert( readId != None );
+
+ drawPriv = __glXGetDrawable(glxc, drawId, client, &status);
+ if (drawPriv == NULL)
+ return status;
+
+ readPriv = __glXGetDrawable(glxc, readId, client, &status);
+ if (readPriv == NULL)
+ return status;
+
+ } else {
+ /* Switching to no context. Ignore new drawable. */
+ glxc = 0;
+ drawPriv = 0;
+ readPriv = 0;
+ }
+
+
+ if (prevglxc) {
+ /*
+ ** Flush the previous context if needed.
+ */
+ if (__GLX_HAS_UNFLUSHED_CMDS(prevglxc)) {
+ if (__glXForceCurrent(cl, tag, (int *)&error)) {
+ CALL_Flush( GET_DISPATCH(), () );
+ __GLX_NOTE_FLUSHED_CMDS(prevglxc);
+ } else {
+ return error;
+ }
+ }
+
+ /*
+ ** Make the previous context not current.
+ */
+ if (!(*prevglxc->loseCurrent)(prevglxc)) {
+ return __glXError(GLXBadContext);
+ }
+ __glXFlushContextCache();
+ if (!prevglxc->isDirect) {
+ prevglxc->drawPriv = NULL;
+ prevglxc->readPriv = NULL;
+ }
+ }
+
+
+ if ((glxc != 0) && !glxc->isDirect) {
+
+ glxc->drawPriv = drawPriv;
+ glxc->readPriv = readPriv;
+
+ /* make the context current */
+ if (!(*glxc->makeCurrent)(glxc)) {
+ glxc->drawPriv = NULL;
+ glxc->readPriv = NULL;
+ return __glXError(GLXBadContext);
+ }
+
+ glxc->isCurrent = GL_TRUE;
+ }
+
+ if (prevglxc) {
+ ChangeCurrentContext(cl, glxc, tag);
+ StopUsingContext(prevglxc);
+ } else {
+ tag = AddCurrentContext(cl, glxc);
+ }
+
+ if (glxc) {
+ StartUsingContext(cl, glxc);
+ reply.contextTag = tag;
+ } else {
+ reply.contextTag = 0;
+ }
+
+ reply.length = 0;
+ reply.type = X_Reply;
+ reply.sequenceNumber = client->sequence;
+
+ if (client->swapped) {
+ __glXSwapMakeCurrentReply(client, &reply);
+ } else {
+ WriteToClient(client, sz_xGLXMakeCurrentReply, (char *)&reply);
+ }
+ return Success;
+}
+
+int __glXDisp_MakeCurrent(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXMakeCurrentReq *req = (xGLXMakeCurrentReq *) pc;
+
+ REQUEST_SIZE_MATCH(xGLXMakeCurrentReq);
+
+ return DoMakeCurrent( cl, req->drawable, req->drawable,
+ req->context, req->oldContextTag );
+}
+
+int __glXDisp_MakeContextCurrent(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXMakeContextCurrentReq *req = (xGLXMakeContextCurrentReq *) pc;
+
+ REQUEST_SIZE_MATCH(xGLXMakeContextCurrentReq);
+
+ return DoMakeCurrent( cl, req->drawable, req->readdrawable,
+ req->context, req->oldContextTag );
+}
+
+int __glXDisp_MakeCurrentReadSGI(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXMakeCurrentReadSGIReq *req = (xGLXMakeCurrentReadSGIReq *) pc;
+
+ REQUEST_SIZE_MATCH(xGLXMakeCurrentReadSGIReq);
+
+ return DoMakeCurrent( cl, req->drawable, req->readable,
+ req->context, req->oldContextTag );
+}
+
+int __glXDisp_IsDirect(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXIsDirectReq *req = (xGLXIsDirectReq *) pc;
+ xGLXIsDirectReply reply;
+ struct glx_context *glxc;
+ int err;
+
+ REQUEST_SIZE_MATCH(xGLXIsDirectReq);
+
+ if (!validGlxContext(cl->client, req->context, DixReadAccess, &glxc, &err))
+ return err;
+
+ reply.isDirect = glxc->isDirect;
+ reply.length = 0;
+ reply.type = X_Reply;
+ reply.sequenceNumber = client->sequence;
+
+ if (client->swapped) {
+ __glXSwapIsDirectReply(client, &reply);
+ } else {
+ WriteToClient(client, sz_xGLXIsDirectReply, (char *)&reply);
+ }
+
+ return Success;
+}
+
+int __glXDisp_QueryVersion(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXQueryVersionReq *req = (xGLXQueryVersionReq *) pc;
+ xGLXQueryVersionReply reply;
+ GLuint major, minor;
+
+ REQUEST_SIZE_MATCH(xGLXQueryVersionReq);
+
+ major = req->majorVersion;
+ minor = req->minorVersion;
+ (void)major;
+ (void)minor;
+
+ /*
+ ** Server should take into consideration the version numbers sent by the
+ ** client if it wants to work with older clients; however, in this
+ ** implementation the server just returns its version number.
+ */
+ reply.majorVersion = glxMajorVersion;
+ reply.minorVersion = glxMinorVersion;
+ reply.length = 0;
+ reply.type = X_Reply;
+ reply.sequenceNumber = client->sequence;
+
+ if (client->swapped) {
+ __glXSwapQueryVersionReply(client, &reply);
+ } else {
+ WriteToClient(client, sz_xGLXQueryVersionReply, (char *)&reply);
+ }
+ return Success;
+}
+
+int __glXDisp_WaitGL(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXWaitGLReq *req = (xGLXWaitGLReq *)pc;
+ GLXContextTag tag;
+ struct glx_context *glxc = NULL;
+ int error;
+
+ REQUEST_SIZE_MATCH(xGLXWaitGLReq);
+
+ tag = req->contextTag;
+ if (tag) {
+ glxc = __glXLookupContextByTag(cl, tag);
+ if (!glxc)
+ return __glXError(GLXBadContextTag);
+
+ if (!__glXForceCurrent(cl, req->contextTag, &error))
+ return error;
+
+ CALL_Finish( GET_DISPATCH(), () );
+ }
+
+ if (glxc && glxc->drawPriv->waitGL)
+ (*glxc->drawPriv->waitGL)(glxc->drawPriv);
+
+ return Success;
+}
+
+int __glXDisp_WaitX(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXWaitXReq *req = (xGLXWaitXReq *)pc;
+ GLXContextTag tag;
+ struct glx_context *glxc = NULL;
+ int error;
+
+ REQUEST_SIZE_MATCH(xGLXWaitXReq);
+
+ tag = req->contextTag;
+ if (tag) {
+ glxc = __glXLookupContextByTag(cl, tag);
+ if (!glxc)
+ return __glXError(GLXBadContextTag);
+
+ if (!__glXForceCurrent(cl, req->contextTag, &error))
+ return error;
+ }
+
+ if (glxc && glxc->drawPriv->waitX)
+ (*glxc->drawPriv->waitX)(glxc->drawPriv);
+
+ return Success;
+}
+
+int __glXDisp_CopyContext(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCopyContextReq *req = (xGLXCopyContextReq *) pc;
+ GLXContextID source;
+ GLXContextID dest;
+ GLXContextTag tag;
+ unsigned long mask;
+ struct glx_context *src, *dst;
+ int error;
+
+ REQUEST_SIZE_MATCH(xGLXCopyContextReq);
+
+ source = req->source;
+ dest = req->dest;
+ tag = req->contextTag;
+ mask = req->mask;
+ if (!validGlxContext(cl->client, source, DixReadAccess, &src, &error))
+ return error;
+ if (!validGlxContext(cl->client, dest, DixWriteAccess, &dst, &error))
+ return error;
+
+ /*
+ ** They must be in the same address space, and same screen.
+ ** NOTE: no support for direct rendering contexts here.
+ */
+ if (src->isDirect || dst->isDirect ||
+ (src->pGlxScreen != dst->pGlxScreen)) {
+ client->errorValue = source;
+ return BadMatch;
+ }
+
+ /*
+ ** The destination context must not be current for any client.
+ */
+ if (dst->isCurrent) {
+ client->errorValue = dest;
+ return BadAccess;
+ }
+
+ if (tag) {
+ struct glx_context *tagcx = __glXLookupContextByTag(cl, tag);
+
+ if (!tagcx) {
+ return __glXError(GLXBadContextTag);
+ }
+ if (tagcx != src) {
+ /*
+ ** This would be caused by a faulty implementation of the client
+ ** library.
+ */
+ return BadMatch;
+ }
+ /*
+ ** In this case, glXCopyContext is in both GL and X streams, in terms
+ ** of sequentiality.
+ */
+ if (__glXForceCurrent(cl, tag, &error)) {
+ /*
+ ** Do whatever is needed to make sure that all preceding requests
+ ** in both streams are completed before the copy is executed.
+ */
+ CALL_Finish( GET_DISPATCH(), () );
+ __GLX_NOTE_FLUSHED_CMDS(tagcx);
+ } else {
+ return error;
+ }
+ }
+ /*
+ ** Issue copy. The only reason for failure is a bad mask.
+ */
+ if (!(*dst->copy)(dst, src, mask)) {
+ client->errorValue = mask;
+ return BadValue;
+ }
+ return Success;
+}
+
+enum {
+ GLX_VIS_CONFIG_UNPAIRED = 18,
+ GLX_VIS_CONFIG_PAIRED = 20
+};
+
+enum {
+ GLX_VIS_CONFIG_TOTAL = GLX_VIS_CONFIG_UNPAIRED + GLX_VIS_CONFIG_PAIRED
+};
+
+int __glXDisp_GetVisualConfigs(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXGetVisualConfigsReq *req = (xGLXGetVisualConfigsReq *) pc;
+ ClientPtr client = cl->client;
+ xGLXGetVisualConfigsReply reply;
+ __GLXscreen *pGlxScreen;
+ __GLXconfig *modes;
+ CARD32 buf[GLX_VIS_CONFIG_TOTAL];
+ int p, i, err;
+ __GLX_DECLARE_SWAP_VARIABLES;
+ __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXGetVisualConfigsReq);
+
+ if (!validGlxScreen(cl->client, req->screen, &pGlxScreen, &err))
+ return err;
+
+ reply.numVisuals = pGlxScreen->numVisuals;
+ reply.numProps = GLX_VIS_CONFIG_TOTAL;
+ reply.length = (reply.numVisuals * __GLX_SIZE_CARD32 * GLX_VIS_CONFIG_TOTAL) >> 2;
+ reply.type = X_Reply;
+ reply.sequenceNumber = client->sequence;
+
+ if (client->swapped) {
+ __GLX_SWAP_SHORT(&reply.sequenceNumber);
+ __GLX_SWAP_INT(&reply.length);
+ __GLX_SWAP_INT(&reply.numVisuals);
+ __GLX_SWAP_INT(&reply.numProps);
+ }
+
+ WriteToClient(client, sz_xGLXGetVisualConfigsReply, (char *)&reply);
+
+ for (i = 0; i < pGlxScreen->numVisuals; i++) {
+ modes = pGlxScreen->visuals[i];
+
+ p = 0;
+ buf[p++] = modes->visualID;
+ buf[p++] = glxConvertToXVisualType( modes->visualType );
+ buf[p++] = (modes->renderType & GLX_RGBA_BIT) ? GL_TRUE : GL_FALSE;
+
+ buf[p++] = modes->redBits;
+ buf[p++] = modes->greenBits;
+ buf[p++] = modes->blueBits;
+ buf[p++] = modes->alphaBits;
+ buf[p++] = modes->accumRedBits;
+ buf[p++] = modes->accumGreenBits;
+ buf[p++] = modes->accumBlueBits;
+ buf[p++] = modes->accumAlphaBits;
+
+ buf[p++] = modes->doubleBufferMode;
+ buf[p++] = modes->stereoMode;
+
+ buf[p++] = modes->rgbBits;
+ buf[p++] = modes->depthBits;
+ buf[p++] = modes->stencilBits;
+ buf[p++] = modes->numAuxBuffers;
+ buf[p++] = modes->level;
+
+ assert(p == GLX_VIS_CONFIG_UNPAIRED);
+ /*
+ ** Add token/value pairs for extensions.
+ */
+ buf[p++] = GLX_VISUAL_CAVEAT_EXT;
+ buf[p++] = modes->visualRating;
+ buf[p++] = GLX_TRANSPARENT_TYPE;
+ buf[p++] = modes->transparentPixel;
+ buf[p++] = GLX_TRANSPARENT_RED_VALUE;
+ buf[p++] = modes->transparentRed;
+ buf[p++] = GLX_TRANSPARENT_GREEN_VALUE;
+ buf[p++] = modes->transparentGreen;
+ buf[p++] = GLX_TRANSPARENT_BLUE_VALUE;
+ buf[p++] = modes->transparentBlue;
+ buf[p++] = GLX_TRANSPARENT_ALPHA_VALUE;
+ buf[p++] = modes->transparentAlpha;
+ buf[p++] = GLX_TRANSPARENT_INDEX_VALUE;
+ buf[p++] = modes->transparentIndex;
+ buf[p++] = GLX_SAMPLES_SGIS;
+ buf[p++] = modes->samples;
+ buf[p++] = GLX_SAMPLE_BUFFERS_SGIS;
+ buf[p++] = modes->sampleBuffers;
+ buf[p++] = 0; /* copy over visualSelectGroup (GLX_VISUAL_SELECT_GROUP_SGIX)? */
+ buf[p++] = 0;
+
+ assert(p == GLX_VIS_CONFIG_TOTAL);
+ if (client->swapped) {
+ __GLX_SWAP_INT_ARRAY(buf, p);
+ }
+ WriteToClient(client, __GLX_SIZE_CARD32 * p, (char *)buf);
+ }
+ return Success;
+}
+
+#define __GLX_TOTAL_FBCONFIG_ATTRIBS (36)
+#define __GLX_FBCONFIG_ATTRIBS_LENGTH (__GLX_TOTAL_FBCONFIG_ATTRIBS * 2)
+/**
+ * Send the set of GLXFBConfigs to the client. There is not currently
+ * and interface into the driver on the server-side to get GLXFBConfigs,
+ * so we "invent" some based on the \c __GLXvisualConfig structures that
+ * the driver does supply.
+ *
+ * The reply format for both \c glXGetFBConfigs and \c glXGetFBConfigsSGIX
+ * is the same, so this routine pulls double duty.
+ */
+
+static int
+DoGetFBConfigs(__GLXclientState *cl, unsigned screen)
+{
+ ClientPtr client = cl->client;
+ xGLXGetFBConfigsReply reply;
+ __GLXscreen *pGlxScreen;
+ CARD32 buf[__GLX_FBCONFIG_ATTRIBS_LENGTH];
+ int p, err;
+ __GLXconfig *modes;
+ __GLX_DECLARE_SWAP_VARIABLES;
+ __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
+
+ if (!validGlxScreen(cl->client, screen, &pGlxScreen, &err))
+ return err;
+
+ reply.numFBConfigs = pGlxScreen->numFBConfigs;
+ reply.numAttribs = __GLX_TOTAL_FBCONFIG_ATTRIBS;
+ reply.length = (__GLX_FBCONFIG_ATTRIBS_LENGTH * reply.numFBConfigs);
+ reply.type = X_Reply;
+ reply.sequenceNumber = client->sequence;
+
+ if (client->swapped) {
+ __GLX_SWAP_SHORT(&reply.sequenceNumber);
+ __GLX_SWAP_INT(&reply.length);
+ __GLX_SWAP_INT(&reply.numFBConfigs);
+ __GLX_SWAP_INT(&reply.numAttribs);
+ }
+
+ WriteToClient(client, sz_xGLXGetFBConfigsReply, (char *)&reply);
+
+ for (modes = pGlxScreen->fbconfigs; modes != NULL; modes = modes->next) {
+ p = 0;
+
+#define WRITE_PAIR(tag,value) \
+ do { buf[p++] = tag ; buf[p++] = value ; } while( 0 )
+
+ WRITE_PAIR( GLX_VISUAL_ID, modes->visualID );
+ WRITE_PAIR( GLX_FBCONFIG_ID, modes->fbconfigID );
+ WRITE_PAIR( GLX_X_RENDERABLE, GL_TRUE );
+
+ WRITE_PAIR( GLX_RGBA,
+ (modes->renderType & GLX_RGBA_BIT) ? GL_TRUE : GL_FALSE );
+ WRITE_PAIR( GLX_RENDER_TYPE, modes->renderType );
+ WRITE_PAIR( GLX_DOUBLEBUFFER, modes->doubleBufferMode );
+ WRITE_PAIR( GLX_STEREO, modes->stereoMode );
+
+ WRITE_PAIR( GLX_BUFFER_SIZE, modes->rgbBits );
+ WRITE_PAIR( GLX_LEVEL, modes->level );
+ WRITE_PAIR( GLX_AUX_BUFFERS, modes->numAuxBuffers );
+ WRITE_PAIR( GLX_RED_SIZE, modes->redBits );
+ WRITE_PAIR( GLX_GREEN_SIZE, modes->greenBits );
+ WRITE_PAIR( GLX_BLUE_SIZE, modes->blueBits );
+ WRITE_PAIR( GLX_ALPHA_SIZE, modes->alphaBits );
+ WRITE_PAIR( GLX_ACCUM_RED_SIZE, modes->accumRedBits );
+ WRITE_PAIR( GLX_ACCUM_GREEN_SIZE, modes->accumGreenBits );
+ WRITE_PAIR( GLX_ACCUM_BLUE_SIZE, modes->accumBlueBits );
+ WRITE_PAIR( GLX_ACCUM_ALPHA_SIZE, modes->accumAlphaBits );
+ WRITE_PAIR( GLX_DEPTH_SIZE, modes->depthBits );
+ WRITE_PAIR( GLX_STENCIL_SIZE, modes->stencilBits );
+ WRITE_PAIR( GLX_X_VISUAL_TYPE, modes->visualType );
+ WRITE_PAIR( GLX_CONFIG_CAVEAT, modes->visualRating );
+ WRITE_PAIR( GLX_TRANSPARENT_TYPE, modes->transparentPixel );
+ WRITE_PAIR( GLX_TRANSPARENT_RED_VALUE, modes->transparentRed );
+ WRITE_PAIR( GLX_TRANSPARENT_GREEN_VALUE, modes->transparentGreen );
+ WRITE_PAIR( GLX_TRANSPARENT_BLUE_VALUE, modes->transparentBlue );
+ WRITE_PAIR( GLX_TRANSPARENT_ALPHA_VALUE, modes->transparentAlpha );
+ WRITE_PAIR( GLX_TRANSPARENT_INDEX_VALUE, modes->transparentIndex );
+ WRITE_PAIR( GLX_SWAP_METHOD_OML, modes->swapMethod );
+ WRITE_PAIR( GLX_SAMPLES_SGIS, modes->samples );
+ WRITE_PAIR( GLX_SAMPLE_BUFFERS_SGIS, modes->sampleBuffers );
+ /* GLX_VISUAL_SELECT_GROUP_SGIX ? */
+ WRITE_PAIR( GLX_DRAWABLE_TYPE, modes->drawableType );
+ WRITE_PAIR( GLX_BIND_TO_TEXTURE_RGB_EXT, modes->bindToTextureRgb );
+ WRITE_PAIR( GLX_BIND_TO_TEXTURE_RGBA_EXT, modes->bindToTextureRgba );
+ WRITE_PAIR( GLX_BIND_TO_MIPMAP_TEXTURE_EXT, modes->bindToMipmapTexture );
+ WRITE_PAIR( GLX_BIND_TO_TEXTURE_TARGETS_EXT, modes->bindToTextureTargets );
+
+ if (client->swapped) {
+ __GLX_SWAP_INT_ARRAY(buf, __GLX_FBCONFIG_ATTRIBS_LENGTH);
+ }
+ WriteToClient(client, __GLX_SIZE_CARD32 * __GLX_FBCONFIG_ATTRIBS_LENGTH,
+ (char *)buf);
+ }
+ return Success;
+}
+
+
+int __glXDisp_GetFBConfigs(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXGetFBConfigsReq *req = (xGLXGetFBConfigsReq *) pc;
+ REQUEST_SIZE_MATCH(xGLXGetFBConfigsReq);
+ return DoGetFBConfigs(cl, req->screen);
+}
+
+int __glXDisp_GetFBConfigsSGIX(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXGetFBConfigsSGIXReq *req = (xGLXGetFBConfigsSGIXReq *) pc;
+ /* work around mesa bug, don't use REQUEST_SIZE_MATCH */
+ REQUEST_AT_LEAST_SIZE(xGLXGetFBConfigsSGIXReq);
+ return DoGetFBConfigs(cl, req->screen);
+}
+
+GLboolean
+__glXDrawableInit(__GLXdrawable *drawable,
+ __GLXscreen *screen, DrawablePtr pDraw, int type,
+ XID drawId, __GLXconfig *config)
+{
+ drawable->pDraw = pDraw;
+ drawable->type = type;
+ drawable->drawId = drawId;
+ drawable->config = config;
+ drawable->eventMask = 0;
+
+ return GL_TRUE;
+}
+
+void
+__glXDrawableRelease(__GLXdrawable *drawable)
+{
+}
+
+static int
+DoCreateGLXDrawable(ClientPtr client, __GLXscreen *pGlxScreen,
+ __GLXconfig *config, DrawablePtr pDraw, XID drawableId,
+ XID glxDrawableId, int type)
+{
+ __GLXdrawable *pGlxDraw;
+
+ if (pGlxScreen->pScreen != pDraw->pScreen)
+ return BadMatch;
+
+ pGlxDraw = pGlxScreen->createDrawable(client, pGlxScreen, pDraw,
+ drawableId, type,
+ glxDrawableId, config);
+ if (pGlxDraw == NULL)
+ return BadAlloc;
+
+ if (!AddResource(glxDrawableId, __glXDrawableRes, pGlxDraw)) {
+ pGlxDraw->destroy (pGlxDraw);
+ return BadAlloc;
+ }
+
+ /* Add the glx drawable under the XID of the underlying X drawable
+ * too. That way we'll get a callback in DrawableGone and can
+ * clean up properly when the drawable is destroyed. */
+ if (drawableId != glxDrawableId &&
+ !AddResource(pDraw->id, __glXDrawableRes, pGlxDraw)) {
+ pGlxDraw->destroy (pGlxDraw);
+ return BadAlloc;
+ }
+
+ return Success;
+}
+
+static int
+DoCreateGLXPixmap(ClientPtr client, __GLXscreen *pGlxScreen, __GLXconfig *config,
+ XID drawableId, XID glxDrawableId)
+{
+ DrawablePtr pDraw;
+ int err;
+
+ LEGAL_NEW_RESOURCE(glxDrawableId, client);
+
+ err = dixLookupDrawable(&pDraw, drawableId, client, 0, DixAddAccess);
+ if (err != Success) {
+ client->errorValue = drawableId;
+ return err;
+ }
+ if (pDraw->type != DRAWABLE_PIXMAP) {
+ client->errorValue = drawableId;
+ return BadPixmap;
+ }
+
+ err = DoCreateGLXDrawable(client, pGlxScreen, config, pDraw, drawableId,
+ glxDrawableId, GLX_DRAWABLE_PIXMAP);
+
+ return err;
+}
+
+static void
+determineTextureTarget(ClientPtr client, XID glxDrawableID,
+ CARD32 *attribs, CARD32 numAttribs)
+{
+ GLenum target = 0;
+ GLenum format = 0;
+ int i, err;
+ __GLXdrawable *pGlxDraw;
+
+ if (!validGlxDrawable(client, glxDrawableID, GLX_DRAWABLE_PIXMAP,
+ DixWriteAccess, &pGlxDraw, &err))
+ /* We just added it in CreatePixmap, so we should never get here. */
+ return;
+
+ for (i = 0; i < numAttribs; i++) {
+ if (attribs[2 * i] == GLX_TEXTURE_TARGET_EXT) {
+ switch (attribs[2 * i + 1]) {
+ case GLX_TEXTURE_2D_EXT:
+ target = GL_TEXTURE_2D;
+ break;
+ case GLX_TEXTURE_RECTANGLE_EXT:
+ target = GL_TEXTURE_RECTANGLE_ARB;
+ break;
+ }
+ }
+
+ if (attribs[2 * i] == GLX_TEXTURE_FORMAT_EXT)
+ format = attribs[2 * i + 1];
+ }
+
+ if (!target) {
+ int w = pGlxDraw->pDraw->width, h = pGlxDraw->pDraw->height;
+
+ if (h & (h - 1) || w & (w - 1))
+ target = GL_TEXTURE_RECTANGLE_ARB;
+ else
+ target = GL_TEXTURE_2D;
+ }
+
+ pGlxDraw->target = target;
+ pGlxDraw->format = format;
+}
+
+int __glXDisp_CreateGLXPixmap(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCreateGLXPixmapReq *req = (xGLXCreateGLXPixmapReq *) pc;
+ __GLXconfig *config;
+ __GLXscreen *pGlxScreen;
+ int err;
+
+ REQUEST_SIZE_MATCH(xGLXCreateGLXPixmapReq);
+
+ if (!validGlxScreen(cl->client, req->screen, &pGlxScreen, &err))
+ return err;
+ if (!validGlxVisual(cl->client, pGlxScreen, req->visual, &config, &err))
+ return err;
+
+ return DoCreateGLXPixmap(cl->client, pGlxScreen, config,
+ req->pixmap, req->glxpixmap);
+}
+
+int __glXDisp_CreatePixmap(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCreatePixmapReq *req = (xGLXCreatePixmapReq *) pc;
+ __GLXconfig *config;
+ __GLXscreen *pGlxScreen;
+ int err;
+
+ REQUEST_AT_LEAST_SIZE(xGLXCreatePixmapReq);
+ if (req->numAttribs > (UINT32_MAX >> 3)) {
+ client->errorValue = req->numAttribs;
+ return BadValue;
+ }
+ REQUEST_FIXED_SIZE(xGLXCreatePixmapReq, req->numAttribs << 3);
+
+ if (!validGlxScreen(cl->client, req->screen, &pGlxScreen, &err))
+ return err;
+ if (!validGlxFBConfig(cl->client, pGlxScreen, req->fbconfig, &config, &err))
+ return err;
+
+ err = DoCreateGLXPixmap(cl->client, pGlxScreen, config,
+ req->pixmap, req->glxpixmap);
+ if (err != Success)
+ return err;
+
+ determineTextureTarget(cl->client, req->glxpixmap,
+ (CARD32*) (req + 1), req->numAttribs);
+
+ return Success;
+}
+
+int __glXDisp_CreateGLXPixmapWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCreateGLXPixmapWithConfigSGIXReq *req =
+ (xGLXCreateGLXPixmapWithConfigSGIXReq *) pc;
+ __GLXconfig *config;
+ __GLXscreen *pGlxScreen;
+ int err;
+
+ REQUEST_SIZE_MATCH(xGLXCreateGLXPixmapWithConfigSGIXReq);
+
+ if (!validGlxScreen(cl->client, req->screen, &pGlxScreen, &err))
+ return err;
+ if (!validGlxFBConfig(cl->client, pGlxScreen, req->fbconfig, &config, &err))
+ return err;
+
+ return DoCreateGLXPixmap(cl->client, pGlxScreen,
+ config, req->pixmap, req->glxpixmap);
+}
+
+
+static int DoDestroyDrawable(__GLXclientState *cl, XID glxdrawable, int type)
+{
+ __GLXdrawable *pGlxDraw;
+ int err;
+
+ if (!validGlxDrawable(cl->client, glxdrawable, type,
+ DixDestroyAccess, &pGlxDraw, &err))
+ return err;
+
+ FreeResource(glxdrawable, FALSE);
+
+ return Success;
+}
+
+int __glXDisp_DestroyGLXPixmap(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXDestroyGLXPixmapReq *req = (xGLXDestroyGLXPixmapReq *) pc;
+
+ REQUEST_SIZE_MATCH(xGLXDestroyGLXPixmapReq);
+
+ return DoDestroyDrawable(cl, req->glxpixmap, GLX_DRAWABLE_PIXMAP);
+}
+
+int __glXDisp_DestroyPixmap(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXDestroyPixmapReq *req = (xGLXDestroyPixmapReq *) pc;
+
+ /* should be REQUEST_SIZE_MATCH, but mesa's glXDestroyPixmap used to set
+ * length to 3 instead of 2 */
+ REQUEST_AT_LEAST_SIZE(xGLXDestroyPixmapReq);
+
+ return DoDestroyDrawable(cl, req->glxpixmap, GLX_DRAWABLE_PIXMAP);
+}
+
+static int
+DoCreatePbuffer(ClientPtr client, int screenNum, XID fbconfigId,
+ int width, int height, XID glxDrawableId)
+{
+ __GLXconfig *config;
+ __GLXscreen *pGlxScreen;
+ PixmapPtr pPixmap;
+ int err;
+
+ LEGAL_NEW_RESOURCE(glxDrawableId, client);
+
+ if (!validGlxScreen(client, screenNum, &pGlxScreen, &err))
+ return err;
+ if (!validGlxFBConfig(client, pGlxScreen, fbconfigId, &config, &err))
+ return err;
+
+ __glXenterServer(GL_FALSE);
+ pPixmap = (*pGlxScreen->pScreen->CreatePixmap) (pGlxScreen->pScreen,
+ width, height, config->rgbBits, 0);
+ __glXleaveServer(GL_FALSE);
+
+ /* Assign the pixmap the same id as the pbuffer and add it as a
+ * resource so it and the DRI2 drawable will be reclaimed when the
+ * pbuffer is destroyed. */
+ pPixmap->drawable.id = glxDrawableId;
+ if (!AddResource(pPixmap->drawable.id, RT_PIXMAP, pPixmap))
+ return BadAlloc;
+
+ return DoCreateGLXDrawable(client, pGlxScreen, config, &pPixmap->drawable,
+ glxDrawableId, glxDrawableId,
+ GLX_DRAWABLE_PBUFFER);
+}
+
+int __glXDisp_CreatePbuffer(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCreatePbufferReq *req = (xGLXCreatePbufferReq *) pc;
+ CARD32 *attrs;
+ int width, height, i;
+
+ REQUEST_AT_LEAST_SIZE(xGLXCreatePbufferReq);
+ if (req->numAttribs > (UINT32_MAX >> 3)) {
+ client->errorValue = req->numAttribs;
+ return BadValue;
+ }
+ REQUEST_FIXED_SIZE(xGLXCreatePbufferReq, req->numAttribs << 3);
+
+ attrs = (CARD32 *) (req + 1);
+ width = 0;
+ height = 0;
+
+ for (i = 0; i < req->numAttribs; i++) {
+ switch (attrs[i * 2]) {
+ case GLX_PBUFFER_WIDTH:
+ width = attrs[i * 2 + 1];
+ break;
+ case GLX_PBUFFER_HEIGHT:
+ height = attrs[i * 2 + 1];
+ break;
+ case GLX_LARGEST_PBUFFER:
+ case GLX_PRESERVED_CONTENTS:
+ /* FIXME: huh... */
+ break;
+ }
+ }
+
+ return DoCreatePbuffer(cl->client, req->screen, req->fbconfig,
+ width, height, req->pbuffer);
+}
+
+int __glXDisp_CreateGLXPbufferSGIX(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCreateGLXPbufferSGIXReq *req = (xGLXCreateGLXPbufferSGIXReq *) pc;
+
+ REQUEST_AT_LEAST_SIZE(xGLXCreateGLXPbufferSGIXReq);
+
+ return DoCreatePbuffer(cl->client, req->screen, req->fbconfig,
+ req->width, req->height, req->pbuffer);
+}
+
+int __glXDisp_DestroyPbuffer(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXDestroyPbufferReq *req = (xGLXDestroyPbufferReq *) pc;
+
+ REQUEST_SIZE_MATCH(xGLXDestroyPbufferReq);
+
+ return DoDestroyDrawable(cl, req->pbuffer, GLX_DRAWABLE_PBUFFER);
+}
+
+int __glXDisp_DestroyGLXPbufferSGIX(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXDestroyGLXPbufferSGIXReq *req = (xGLXDestroyGLXPbufferSGIXReq *) pc;
+
+ REQUEST_SIZE_MATCH(xGLXDestroyGLXPbufferSGIXReq);
+
+ return DoDestroyDrawable(cl, req->pbuffer, GLX_DRAWABLE_PBUFFER);
+}
+
+static int
+DoChangeDrawableAttributes(ClientPtr client, XID glxdrawable,
+ int numAttribs, CARD32 *attribs)
+{
+ __GLXdrawable *pGlxDraw;
+ int i, err;
+
+ if (!validGlxDrawable(client, glxdrawable, GLX_DRAWABLE_ANY,
+ DixSetAttrAccess, &pGlxDraw, &err))
+ return err;
+
+ for (i = 0; i < numAttribs; i++) {
+ switch(attribs[i * 2]) {
+ case GLX_EVENT_MASK:
+ /* All we do is to record the event mask so we can send it
+ * back when queried. We never actually clobber the
+ * pbuffers, so we never need to send out the event. */
+ pGlxDraw->eventMask = attribs[i * 2 + 1];
+ break;
+ }
+ }
+
+ return Success;
+}
+
+int __glXDisp_ChangeDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXChangeDrawableAttributesReq *req =
+ (xGLXChangeDrawableAttributesReq *) pc;
+
+ REQUEST_AT_LEAST_SIZE(xGLXChangeDrawableAttributesReq);
+ if (req->numAttribs > (UINT32_MAX >> 3)) {
+ client->errorValue = req->numAttribs;
+ return BadValue;
+ }
+#if 0
+ /* mesa sends an additional 8 bytes */
+ REQUEST_FIXED_SIZE(xGLXChangeDrawableAttributesReq, req->numAttribs << 3);
+#else
+ if (((sizeof(xGLXChangeDrawableAttributesReq) + (req->numAttribs << 3)) >> 2) < client->req_len)
+ return BadLength;
+#endif
+
+ return DoChangeDrawableAttributes(cl->client, req->drawable,
+ req->numAttribs, (CARD32 *) (req + 1));
+}
+
+int __glXDisp_ChangeDrawableAttributesSGIX(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXChangeDrawableAttributesSGIXReq *req =
+ (xGLXChangeDrawableAttributesSGIXReq *)pc;
+
+ REQUEST_AT_LEAST_SIZE(xGLXChangeDrawableAttributesSGIXReq);
+ if (req->numAttribs > (UINT32_MAX >> 3)) {
+ client->errorValue = req->numAttribs;
+ return BadValue;
+ }
+ REQUEST_FIXED_SIZE(xGLXChangeDrawableAttributesSGIXReq, req->numAttribs << 3);
+
+ return DoChangeDrawableAttributes(cl->client, req->drawable,
+ req->numAttribs, (CARD32 *) (req + 1));
+}
+
+int __glXDisp_CreateWindow(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXCreateWindowReq *req = (xGLXCreateWindowReq *) pc;
+ __GLXconfig *config;
+ __GLXscreen *pGlxScreen;
+ ClientPtr client = cl->client;
+ DrawablePtr pDraw;
+ int err;
+
+ REQUEST_AT_LEAST_SIZE(xGLXCreateWindowReq);
+ if (req->numAttribs > (UINT32_MAX >> 3)) {
+ client->errorValue = req->numAttribs;
+ return BadValue;
+ }
+ REQUEST_FIXED_SIZE(xGLXCreateWindowReq, req->numAttribs << 3);
+
+ LEGAL_NEW_RESOURCE(req->glxwindow, client);
+
+ if (!validGlxScreen(client, req->screen, &pGlxScreen, &err))
+ return err;
+ if (!validGlxFBConfig(client, pGlxScreen, req->fbconfig, &config, &err))
+ return err;
+
+ err = dixLookupDrawable(&pDraw, req->window, client, 0, DixAddAccess);
+ if (err != Success || pDraw->type != DRAWABLE_WINDOW) {
+ client->errorValue = req->window;
+ return BadWindow;
+ }
+
+ if (!validGlxFBConfigForWindow(client, config, pDraw, &err))
+ return err;
+
+ return DoCreateGLXDrawable(client, pGlxScreen, config,
+ pDraw, req->window,
+ req->glxwindow, GLX_DRAWABLE_WINDOW);
+}
+
+int __glXDisp_DestroyWindow(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXDestroyWindowReq *req = (xGLXDestroyWindowReq *) pc;
+
+ /* mesa's glXDestroyWindow used to set length to 3 instead of 2 */
+ REQUEST_AT_LEAST_SIZE(xGLXDestroyWindowReq);
+
+ return DoDestroyDrawable(cl, req->glxwindow, GLX_DRAWABLE_WINDOW);
+}
+
+
+/*****************************************************************************/
+
+/*
+** NOTE: There is no portable implementation for swap buffers as of
+** this time that is of value. Consequently, this code must be
+** implemented by somebody other than SGI.
+*/
+int __glXDisp_SwapBuffers(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXSwapBuffersReq *req = (xGLXSwapBuffersReq *) pc;
+ GLXContextTag tag;
+ XID drawId;
+ struct glx_context *glxc = NULL;
+ __GLXdrawable *pGlxDraw;
+ int error;
+
+ REQUEST_SIZE_MATCH(xGLXSwapBuffersReq);
+
+ tag = req->contextTag;
+ drawId = req->drawable;
+ if (tag) {
+ glxc = __glXLookupContextByTag(cl, tag);
+ if (!glxc) {
+ return __glXError(GLXBadContextTag);
+ }
+ /*
+ ** The calling thread is swapping its current drawable. In this case,
+ ** glxSwapBuffers is in both GL and X streams, in terms of
+ ** sequentiality.
+ */
+ if (__glXForceCurrent(cl, tag, &error)) {
+ /*
+ ** Do whatever is needed to make sure that all preceding requests
+ ** in both streams are completed before the swap is executed.
+ */
+ CALL_Finish( GET_DISPATCH(), () );
+ __GLX_NOTE_FLUSHED_CMDS(glxc);
+ } else {
+ return error;
+ }
+ }
+
+ pGlxDraw = __glXGetDrawable(glxc, drawId, client, &error);
+ if (pGlxDraw == NULL)
+ return error;
+
+ if (pGlxDraw->type == DRAWABLE_WINDOW &&
+ (*pGlxDraw->swapBuffers)(cl->client, pGlxDraw) == GL_FALSE)
+ return __glXError(GLXBadDrawable);
+
+ return Success;
+}
+
+
+static int
+DoQueryContext(__GLXclientState *cl, GLXContextID gcId)
+{
+ ClientPtr client = cl->client;
+ struct glx_context *ctx;
+ xGLXQueryContextInfoEXTReply reply;
+ int nProps;
+ int *sendBuf, *pSendBuf;
+ int nReplyBytes;
+ int err;
+
+ if (!validGlxContext(cl->client, gcId, DixReadAccess, &ctx, &err))
+ return err;
+
+ nProps = 3;
+ reply.length = nProps << 1;
+ reply.type = X_Reply;
+ reply.sequenceNumber = client->sequence;
+ reply.n = nProps;
+
+ nReplyBytes = reply.length << 2;
+ sendBuf = (int *)malloc((size_t)nReplyBytes);
+ if (sendBuf == NULL) {
+ return __glXError(GLXBadContext); /* XXX: Is this correct? */
+ }
+ pSendBuf = sendBuf;
+ *pSendBuf++ = GLX_SHARE_CONTEXT_EXT;
+ *pSendBuf++ = (int)(ctx->share_id);
+ *pSendBuf++ = GLX_VISUAL_ID_EXT;
+ *pSendBuf++ = (int)(ctx->config->visualID);
+ *pSendBuf++ = GLX_SCREEN_EXT;
+ *pSendBuf++ = (int)(ctx->pGlxScreen->pScreen->myNum);
+
+ if (client->swapped) {
+ __glXSwapQueryContextInfoEXTReply(client, &reply, sendBuf);
+ } else {
+ WriteToClient(client, sz_xGLXQueryContextInfoEXTReply, (char *)&reply);
+ WriteToClient(client, nReplyBytes, (char *)sendBuf);
+ }
+ free((char *)sendBuf);
+
+ return Success;
+}
+
+int __glXDisp_QueryContextInfoEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXQueryContextInfoEXTReq *req = (xGLXQueryContextInfoEXTReq *) pc;
+
+ REQUEST_SIZE_MATCH(xGLXQueryContextInfoEXTReq);
+
+ return DoQueryContext(cl, req->context);
+}
+
+int __glXDisp_QueryContext(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXQueryContextReq *req = (xGLXQueryContextReq *) pc;
+
+ REQUEST_SIZE_MATCH(xGLXQueryContextReq);
+
+ return DoQueryContext(cl, req->context);
+}
+
+int __glXDisp_BindTexImageEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
+ ClientPtr client = cl->client;
+ struct glx_context *context;
+ __GLXdrawable *pGlxDraw;
+ GLXDrawable drawId;
+ int buffer;
+ int error;
+ CARD32 num_attribs;
+
+ if ((sizeof(xGLXVendorPrivateReq) + 12) >> 2 > client->req_len)
+ return BadLength;
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+
+ drawId = *((CARD32 *) (pc));
+ buffer = *((INT32 *) (pc + 4));
+ num_attribs = *((CARD32 *) (pc + 8));
+ if (num_attribs > (UINT32_MAX >> 3)) {
+ client->errorValue = num_attribs;
+ return BadValue;
+ }
+ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 12 + (num_attribs << 3));
+
+ if (buffer != GLX_FRONT_LEFT_EXT)
+ return __glXError(GLXBadPixmap);
+
+ context = __glXForceCurrent (cl, req->contextTag, &error);
+ if (!context)
+ return error;
+
+ if (!validGlxDrawable(client, drawId, GLX_DRAWABLE_PIXMAP,
+ DixReadAccess, &pGlxDraw, &error))
+ return error;
+
+ if (!context->textureFromPixmap)
+ return __glXError(GLXUnsupportedPrivateRequest);
+
+ return context->textureFromPixmap->bindTexImage(context,
+ buffer,
+ pGlxDraw);
+}
+
+int __glXDisp_ReleaseTexImageEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
+ ClientPtr client = cl->client;
+ __GLXdrawable *pGlxDraw;
+ struct glx_context *context;
+ GLXDrawable drawId;
+ int buffer;
+ int error;
+
+ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 8);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+
+ drawId = *((CARD32 *) (pc));
+ buffer = *((INT32 *) (pc + 4));
+
+ context = __glXForceCurrent (cl, req->contextTag, &error);
+ if (!context)
+ return error;
+
+ if (!validGlxDrawable(client, drawId, GLX_DRAWABLE_PIXMAP,
+ DixReadAccess, &pGlxDraw, &error))
+ return error;
+
+ if (!context->textureFromPixmap)
+ return __glXError(GLXUnsupportedPrivateRequest);
+
+ return context->textureFromPixmap->releaseTexImage(context,
+ buffer,
+ pGlxDraw);
+}
+
+int __glXDisp_CopySubBufferMESA(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
+ GLXContextTag tag = req->contextTag;
+ struct glx_context *glxc = NULL;
+ __GLXdrawable *pGlxDraw;
+ ClientPtr client = cl->client;
+ GLXDrawable drawId;
+ int error;
+ int x, y, width, height;
+
+ (void) client;
+ (void) req;
+
+ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 20);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+
+ drawId = *((CARD32 *) (pc));
+ x = *((INT32 *) (pc + 4));
+ y = *((INT32 *) (pc + 8));
+ width = *((INT32 *) (pc + 12));
+ height = *((INT32 *) (pc + 16));
+
+ if (tag) {
+ glxc = __glXLookupContextByTag(cl, tag);
+ if (!glxc) {
+ return __glXError(GLXBadContextTag);
+ }
+ /*
+ ** The calling thread is swapping its current drawable. In this case,
+ ** glxSwapBuffers is in both GL and X streams, in terms of
+ ** sequentiality.
+ */
+ if (__glXForceCurrent(cl, tag, &error)) {
+ /*
+ ** Do whatever is needed to make sure that all preceding requests
+ ** in both streams are completed before the swap is executed.
+ */
+ CALL_Finish( GET_DISPATCH(), () );
+ __GLX_NOTE_FLUSHED_CMDS(glxc);
+ } else {
+ return error;
+ }
+ }
+
+ pGlxDraw = __glXGetDrawable(glxc, drawId, client, &error);
+ if (!pGlxDraw)
+ return error;
+
+ if (pGlxDraw == NULL ||
+ pGlxDraw->type != GLX_DRAWABLE_WINDOW ||
+ pGlxDraw->copySubBuffer == NULL)
+ return __glXError(GLXBadDrawable);
+
+ (*pGlxDraw->copySubBuffer)(pGlxDraw, x, y, width, height);
+
+ return Success;
+}
+
+/*
+** Get drawable attributes
+*/
+static int
+DoGetDrawableAttributes(__GLXclientState *cl, XID drawId)
+{
+ ClientPtr client = cl->client;
+ xGLXGetDrawableAttributesReply reply;
+ __GLXdrawable *pGlxDraw;
+ CARD32 attributes[6];
+ int numAttribs, error;
+
+ if (!validGlxDrawable(client, drawId, GLX_DRAWABLE_ANY,
+ DixGetAttrAccess, &pGlxDraw, &error))
+ return error;
+
+ numAttribs = 3;
+ reply.length = numAttribs << 1;
+ reply.type = X_Reply;
+ reply.sequenceNumber = client->sequence;
+ reply.numAttribs = numAttribs;
+
+ attributes[0] = GLX_TEXTURE_TARGET_EXT;
+ attributes[1] = pGlxDraw->target == GL_TEXTURE_2D ? GLX_TEXTURE_2D_EXT :
+ GLX_TEXTURE_RECTANGLE_EXT;
+ attributes[2] = GLX_Y_INVERTED_EXT;
+ attributes[3] = GL_FALSE;
+ attributes[4] = GLX_EVENT_MASK;
+ attributes[5] = pGlxDraw->eventMask;
+
+ if (client->swapped) {
+ __glXSwapGetDrawableAttributesReply(client, &reply, attributes);
+ } else {
+ WriteToClient(client, sz_xGLXGetDrawableAttributesReply,
+ (char *)&reply);
+ WriteToClient(client, reply.length * sizeof (CARD32),
+ (char *)attributes);
+ }
+
+ return Success;
+}
+
+int __glXDisp_GetDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXGetDrawableAttributesReq *req = (xGLXGetDrawableAttributesReq *)pc;
+
+ /* this should be REQUEST_SIZE_MATCH, but mesa sends an additional 4 bytes */
+ REQUEST_AT_LEAST_SIZE(xGLXGetDrawableAttributesReq);
+
+ return DoGetDrawableAttributes(cl, req->drawable);
+}
+
+int __glXDisp_GetDrawableAttributesSGIX(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXGetDrawableAttributesSGIXReq *req =
+ (xGLXGetDrawableAttributesSGIXReq *)pc;
+
+ REQUEST_SIZE_MATCH(xGLXGetDrawableAttributesSGIXReq);
+
+ return DoGetDrawableAttributes(cl, req->drawable);
+}
+
+/************************************************************************/
+
+/*
+** Render and Renderlarge are not in the GLX API. They are used by the GLX
+** client library to send batches of GL rendering commands.
+*/
+
+/*
+** Execute all the drawing commands in a request.
+*/
+int __glXDisp_Render(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXRenderReq *req;
+ ClientPtr client= cl->client;
+ int left, cmdlen, error;
+ int commandsDone;
+ CARD16 opcode;
+ __GLXrenderHeader *hdr;
+ struct glx_context *glxc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_AT_LEAST_SIZE(xGLXRenderReq);
+
+ req = (xGLXRenderReq *) pc;
+ if (client->swapped) {
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->contextTag);
+ }
+
+ glxc = __glXForceCurrent(cl, req->contextTag, &error);
+ if (!glxc) {
+ return error;
+ }
+
+ commandsDone = 0;
+ pc += sz_xGLXRenderReq;
+ left = (req->length << 2) - sz_xGLXRenderReq;
+ while (left > 0) {
+ __GLXrenderSizeData entry;
+ int extra;
+ __GLXdispatchRenderProcPtr proc;
+ int err;
+
+ if (left < sizeof(__GLXrenderHeader))
+ return BadLength;
+
+ /*
+ ** Verify that the header length and the overall length agree.
+ ** Also, each command must be word aligned.
+ */
+ hdr = (__GLXrenderHeader *) pc;
+ if (client->swapped) {
+ __GLX_SWAP_SHORT(&hdr->length);
+ __GLX_SWAP_SHORT(&hdr->opcode);
+ }
+ cmdlen = hdr->length;
+ opcode = hdr->opcode;
+
+ /*
+ ** Check for core opcodes and grab entry data.
+ */
+ err = __glXGetProtocolSizeData(& Render_dispatch_info, opcode, & entry);
+ proc = (__GLXdispatchRenderProcPtr)
+ __glXGetProtocolDecodeFunction(& Render_dispatch_info,
+ opcode, client->swapped);
+
+ if ((err < 0) || (proc == NULL)) {
+ client->errorValue = commandsDone;
+ return __glXError(GLXBadRenderRequest);
+ }
+
+ if (entry.varsize) {
+ /* variable size command */
+ extra = (*entry.varsize)(pc + __GLX_RENDER_HDR_SIZE,
+ client->swapped);
+ if (extra < 0) {
+ extra = 0;
+ }
+ if (cmdlen != __GLX_PAD(entry.bytes + extra)) {
+ return BadLength;
+ }
+ } else {
+ /* constant size command */
+ if (cmdlen != __GLX_PAD(entry.bytes)) {
+ return BadLength;
+ }
+ }
+ if (left < cmdlen) {
+ return BadLength;
+ }
+
+ /*
+ ** Skip over the header and execute the command. We allow the
+ ** caller to trash the command memory. This is useful especially
+ ** for things that require double alignment - they can just shift
+ ** the data towards lower memory (trashing the header) by 4 bytes
+ ** and achieve the required alignment.
+ */
+ (*proc)(pc + __GLX_RENDER_HDR_SIZE);
+ pc += cmdlen;
+ left -= cmdlen;
+ commandsDone++;
+ }
+ __GLX_NOTE_UNFLUSHED_CMDS(glxc);
+ return Success;
+}
+
+
+/*
+** Execute a large rendering request (one that spans multiple X requests).
+*/
+int __glXDisp_RenderLarge(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXRenderLargeReq *req;
+ ClientPtr client= cl->client;
+ size_t dataBytes;
+ __GLXrenderLargeHeader *hdr;
+ struct glx_context *glxc;
+ int error;
+ CARD16 opcode;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ req = (xGLXRenderLargeReq *) pc;
+ if (client->swapped) {
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->contextTag);
+ __GLX_SWAP_INT(&req->dataBytes);
+ __GLX_SWAP_SHORT(&req->requestNumber);
+ __GLX_SWAP_SHORT(&req->requestTotal);
+ }
+
+ glxc = __glXForceCurrent(cl, req->contextTag, &error);
+ if (!glxc) {
+ /* Reset in case this isn't 1st request. */
+ __glXResetLargeCommandStatus(cl);
+ return error;
+ }
+ dataBytes = req->dataBytes;
+
+ /*
+ ** Check the request length.
+ */
+ if ((req->length << 2) != __GLX_PAD(dataBytes) + sz_xGLXRenderLargeReq) {
+ client->errorValue = req->length;
+ /* Reset in case this isn't 1st request. */
+ __glXResetLargeCommandStatus(cl);
+ return BadLength;
+ }
+ pc += sz_xGLXRenderLargeReq;
+
+ if (cl->largeCmdRequestsSoFar == 0) {
+ __GLXrenderSizeData entry;
+ int extra;
+ size_t cmdlen;
+ int err;
+
+ /*
+ ** This is the first request of a multi request command.
+ ** Make enough space in the buffer, then copy the entire request.
+ */
+ if (req->requestNumber != 1) {
+ client->errorValue = req->requestNumber;
+ return __glXError(GLXBadLargeRequest);
+ }
+
+ hdr = (__GLXrenderLargeHeader *) pc;
+ if (client->swapped) {
+ __GLX_SWAP_INT(&hdr->length);
+ __GLX_SWAP_INT(&hdr->opcode);
+ }
+ cmdlen = hdr->length;
+ opcode = hdr->opcode;
+
+ /*
+ ** Check for core opcodes and grab entry data.
+ */
+ err = __glXGetProtocolSizeData(& Render_dispatch_info, opcode, & entry);
+ if (err < 0) {
+ client->errorValue = opcode;
+ return __glXError(GLXBadLargeRequest);
+ }
+
+ if (entry.varsize) {
+ /*
+ ** If it's a variable-size command (a command whose length must
+ ** be computed from its parameters), all the parameters needed
+ ** will be in the 1st request, so it's okay to do this.
+ */
+ extra = (*entry.varsize)(pc + __GLX_RENDER_LARGE_HDR_SIZE,
+ client->swapped);
+ if (extra < 0) {
+ extra = 0;
+ }
+ /* large command's header is 4 bytes longer, so add 4 */
+ if (cmdlen != __GLX_PAD(entry.bytes + 4 + extra)) {
+ return BadLength;
+ }
+ } else {
+ /* constant size command */
+ if (cmdlen != __GLX_PAD(entry.bytes + 4)) {
+ return BadLength;
+ }
+ }
+ /*
+ ** Make enough space in the buffer, then copy the entire request.
+ */
+ if (cl->largeCmdBufSize < cmdlen) {
+ if (!cl->largeCmdBuf) {
+ cl->largeCmdBuf = (GLbyte *) malloc(cmdlen);
+ } else {
+ cl->largeCmdBuf = (GLbyte *) realloc(cl->largeCmdBuf, cmdlen);
+ }
+ if (!cl->largeCmdBuf) {
+ return BadAlloc;
+ }
+ cl->largeCmdBufSize = cmdlen;
+ }
+ memcpy(cl->largeCmdBuf, pc, dataBytes);
+
+ cl->largeCmdBytesSoFar = dataBytes;
+ cl->largeCmdBytesTotal = cmdlen;
+ cl->largeCmdRequestsSoFar = 1;
+ cl->largeCmdRequestsTotal = req->requestTotal;
+ return Success;
+
+ } else {
+ /*
+ ** We are receiving subsequent (i.e. not the first) requests of a
+ ** multi request command.
+ */
+
+ /*
+ ** Check the request number and the total request count.
+ */
+ if (req->requestNumber != cl->largeCmdRequestsSoFar + 1) {
+ client->errorValue = req->requestNumber;
+ __glXResetLargeCommandStatus(cl);
+ return __glXError(GLXBadLargeRequest);
+ }
+ if (req->requestTotal != cl->largeCmdRequestsTotal) {
+ client->errorValue = req->requestTotal;
+ __glXResetLargeCommandStatus(cl);
+ return __glXError(GLXBadLargeRequest);
+ }
+
+ /*
+ ** Check that we didn't get too much data.
+ */
+ if ((cl->largeCmdBytesSoFar + dataBytes) > cl->largeCmdBytesTotal) {
+ client->errorValue = dataBytes;
+ __glXResetLargeCommandStatus(cl);
+ return __glXError(GLXBadLargeRequest);
+ }
+ memcpy(cl->largeCmdBuf + cl->largeCmdBytesSoFar, pc, dataBytes);
+ cl->largeCmdBytesSoFar += dataBytes;
+ cl->largeCmdRequestsSoFar++;
+
+ if (req->requestNumber == cl->largeCmdRequestsTotal) {
+ __GLXdispatchRenderProcPtr proc;
+
+ /*
+ ** This is the last request; it must have enough bytes to complete
+ ** the command.
+ */
+ /* NOTE: the two pad macros have been added below; they are needed
+ ** because the client library pads the total byte count, but not
+ ** the per-request byte counts. The Protocol Encoding says the
+ ** total byte count should not be padded, so a proposal will be
+ ** made to the ARB to relax the padding constraint on the total
+ ** byte count, thus preserving backward compatibility. Meanwhile,
+ ** the padding done below fixes a bug that did not allow
+ ** large commands of odd sizes to be accepted by the server.
+ */
+ if (__GLX_PAD(cl->largeCmdBytesSoFar) !=
+ __GLX_PAD(cl->largeCmdBytesTotal)) {
+ client->errorValue = dataBytes;
+ __glXResetLargeCommandStatus(cl);
+ return __glXError(GLXBadLargeRequest);
+ }
+ hdr = (__GLXrenderLargeHeader *) cl->largeCmdBuf;
+ /*
+ ** The opcode and length field in the header had already been
+ ** swapped when the first request was received.
+ **
+ ** Use the opcode to index into the procedure table.
+ */
+ opcode = hdr->opcode;
+
+ proc = (__GLXdispatchRenderProcPtr)
+ __glXGetProtocolDecodeFunction(& Render_dispatch_info, opcode,
+ client->swapped);
+ if (proc == NULL) {
+ client->errorValue = opcode;
+ return __glXError(GLXBadLargeRequest);
+ }
+
+ /*
+ ** Skip over the header and execute the command.
+ */
+ (*proc)(cl->largeCmdBuf + __GLX_RENDER_LARGE_HDR_SIZE);
+ __GLX_NOTE_UNFLUSHED_CMDS(glxc);
+
+ /*
+ ** Reset for the next RenderLarge series.
+ */
+ __glXResetLargeCommandStatus(cl);
+ } else {
+ /*
+ ** This is neither the first nor the last request.
+ */
+ }
+ return Success;
+ }
+}
+
+/************************************************************************/
+
+/*
+** No support is provided for the vendor-private requests other than
+** allocating the entry points in the dispatch table.
+*/
+
+int __glXDisp_VendorPrivate(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
+ GLint vendorcode = req->vendorCode;
+ __GLXdispatchVendorPrivProcPtr proc;
+
+ REQUEST_AT_LEAST_SIZE(xGLXVendorPrivateReq);
+
+ proc = (__GLXdispatchVendorPrivProcPtr)
+ __glXGetProtocolDecodeFunction(& VendorPriv_dispatch_info,
+ vendorcode, 0);
+ if (proc != NULL) {
+ (*proc)(cl, (GLbyte*)req);
+ return Success;
+ }
+
+ cl->client->errorValue = req->vendorCode;
+ return __glXError(GLXUnsupportedPrivateRequest);
+}
+
+int __glXDisp_VendorPrivateWithReply(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
+ GLint vendorcode = req->vendorCode;
+ __GLXdispatchVendorPrivProcPtr proc;
+
+ REQUEST_AT_LEAST_SIZE(xGLXVendorPrivateReq);
+
+ proc = (__GLXdispatchVendorPrivProcPtr)
+ __glXGetProtocolDecodeFunction(& VendorPriv_dispatch_info,
+ vendorcode, 0);
+ if (proc != NULL) {
+ return (*proc)(cl, (GLbyte*)req);
+ }
+
+ cl->client->errorValue = vendorcode;
+ return __glXError(GLXUnsupportedPrivateRequest);
+}
+
+int __glXDisp_QueryExtensionsString(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXQueryExtensionsStringReq *req = (xGLXQueryExtensionsStringReq *) pc;
+ xGLXQueryExtensionsStringReply reply;
+ __GLXscreen *pGlxScreen;
+ size_t n, length;
+ char *buf;
+ int err;
+
+ REQUEST_SIZE_MATCH(xGLXQueryExtensionsStringReq);
+
+ if (!validGlxScreen(client, req->screen, &pGlxScreen, &err))
+ return err;
+
+ n = strlen(pGlxScreen->GLXextensions) + 1;
+ length = __GLX_PAD(n) >> 2;
+ reply.type = X_Reply;
+ reply.sequenceNumber = client->sequence;
+ reply.length = length;
+ reply.n = n;
+
+ /* Allocate buffer to make sure it's a multiple of 4 bytes big.*/
+ buf = (char *) malloc(length << 2);
+ if (buf == NULL)
+ return BadAlloc;
+ memcpy(buf, pGlxScreen->GLXextensions, n);
+
+ if (client->swapped) {
+ glxSwapQueryExtensionsStringReply(client, &reply, buf);
+ } else {
+ WriteToClient(client, sz_xGLXQueryExtensionsStringReply,(char *)&reply);
+ WriteToClient(client, (int)(length << 2), (char *)buf);
+ }
+
+ free(buf);
+ return Success;
+}
+
+int __glXDisp_QueryServerString(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXQueryServerStringReq *req = (xGLXQueryServerStringReq *) pc;
+ xGLXQueryServerStringReply reply;
+ size_t n, length;
+ const char *ptr;
+ char *buf;
+ __GLXscreen *pGlxScreen;
+ int err;
+ char ver_str[16];
+
+ REQUEST_SIZE_MATCH(xGLXQueryServerStringReq);
+
+ if (!validGlxScreen(client, req->screen, &pGlxScreen, &err))
+ return err;
+
+ switch(req->name) {
+ case GLX_VENDOR:
+ ptr = pGlxScreen->GLXvendor;
+ break;
+ case GLX_VERSION:
+ /* Return to the server version rather than the screen version
+ * to prevent confusion when they do not match.
+ */
+ snprintf(ver_str, 16, "%d.%d", glxMajorVersion, glxMinorVersion);
+ ptr = ver_str;
+ break;
+ case GLX_EXTENSIONS:
+ ptr = pGlxScreen->GLXextensions;
+ break;
+ default:
+ return BadValue;
+ }
+
+ n = strlen(ptr) + 1;
+ length = __GLX_PAD(n) >> 2;
+ reply.type = X_Reply;
+ reply.sequenceNumber = client->sequence;
+ reply.length = length;
+ reply.n = n;
+
+ buf = (char *) malloc(length << 2);
+ if (buf == NULL) {
+ return BadAlloc;
+ }
+ memcpy(buf, ptr, n);
+
+ if (client->swapped) {
+ glxSwapQueryServerStringReply(client, &reply, buf);
+ } else {
+ WriteToClient(client, sz_xGLXQueryServerStringReply, (char *)&reply);
+ WriteToClient(client, (int)(length << 2), buf);
+ }
+
+ free(buf);
+ return Success;
+}
+
+int __glXDisp_ClientInfo(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXClientInfoReq *req = (xGLXClientInfoReq *) pc;
+ const char *buf;
+
+ REQUEST_AT_LEAST_SIZE(xGLXClientInfoReq);
+
+ buf = (const char *)(req+1);
+ if (!memchr(buf, 0, (client->req_len << 2) - sizeof(xGLXClientInfoReq)))
+ return BadLength;
+
+ cl->GLClientmajorVersion = req->major;
+ cl->GLClientminorVersion = req->minor;
+ free(cl->GLClientextensions);
+ cl->GLClientextensions = strdup(buf);
+
+ return Success;
+}
diff --git a/xorg-server/glx/glxcmdsswap.c b/xorg-server/glx/glxcmdsswap.c
index f053b1ad5..4725cb788 100644
--- a/xorg-server/glx/glxcmdsswap.c
+++ b/xorg-server/glx/glxcmdsswap.c
@@ -1,920 +1,926 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#else
-
-#include "glheader.h"
-
-#endif
-
-#include <string.h>
-#include "glxserver.h"
-#include "glxutil.h"
-#include <GL/glxtokens.h>
-#include <unpack.h>
-#include <pixmapstr.h>
-#include <windowstr.h>
-#include "glxext.h"
-#include "GL/gl.h"
-#include "glapitable.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "dispatch.h"
-#include "indirect_dispatch.h"
-#include "indirect_table.h"
-#include "indirect_util.h"
-
-
-/************************************************************************/
-
-/*
-** Byteswapping versions of GLX commands. In most cases they just swap
-** the incoming arguments and then call the unswapped routine. For commands
-** that have replies, a separate swapping routine for the reply is provided;
-** it is called at the end of the unswapped routine.
-*/
-
-int __glXDispSwap_CreateContext(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreateContextReq *req = (xGLXCreateContextReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXCreateContextReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->context);
- __GLX_SWAP_INT(&req->visual);
- __GLX_SWAP_INT(&req->screen);
- __GLX_SWAP_INT(&req->shareList);
-
- return __glXDisp_CreateContext(cl, pc);
-}
-
-int __glXDispSwap_CreateNewContext(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreateNewContextReq *req = (xGLXCreateNewContextReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXCreateNewContextReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->context);
- __GLX_SWAP_INT(&req->fbconfig);
- __GLX_SWAP_INT(&req->screen);
- __GLX_SWAP_INT(&req->renderType);
- __GLX_SWAP_INT(&req->shareList);
-
- return __glXDisp_CreateNewContext(cl, pc);
-}
-
-int __glXDispSwap_CreateContextWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreateContextWithConfigSGIXReq *req =
- (xGLXCreateContextWithConfigSGIXReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXCreateContextWithConfigSGIXReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->context);
- __GLX_SWAP_INT(&req->fbconfig);
- __GLX_SWAP_INT(&req->screen);
- __GLX_SWAP_INT(&req->renderType);
- __GLX_SWAP_INT(&req->shareList);
-
- return __glXDisp_CreateContextWithConfigSGIX(cl, pc);
-}
-
-int __glXDispSwap_DestroyContext(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXDestroyContextReq *req = (xGLXDestroyContextReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXDestroyContextReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->context);
-
- return __glXDisp_DestroyContext(cl, pc);
-}
-
-int __glXDispSwap_MakeCurrent(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXMakeCurrentReq *req = (xGLXMakeCurrentReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXMakeCurrentReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->drawable);
- __GLX_SWAP_INT(&req->context);
- __GLX_SWAP_INT(&req->oldContextTag);
-
- return __glXDisp_MakeCurrent(cl, pc);
-}
-
-int __glXDispSwap_MakeContextCurrent(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXMakeContextCurrentReq *req = (xGLXMakeContextCurrentReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXMakeContextCurrentReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->drawable);
- __GLX_SWAP_INT(&req->readdrawable);
- __GLX_SWAP_INT(&req->context);
- __GLX_SWAP_INT(&req->oldContextTag);
-
- return __glXDisp_MakeContextCurrent(cl, pc);
-}
-
-int __glXDispSwap_MakeCurrentReadSGI(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXMakeCurrentReadSGIReq *req = (xGLXMakeCurrentReadSGIReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXMakeCurrentReadSGIReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->drawable);
- __GLX_SWAP_INT(&req->readable);
- __GLX_SWAP_INT(&req->context);
- __GLX_SWAP_INT(&req->oldContextTag);
-
- return __glXDisp_MakeCurrentReadSGI(cl, pc);
-}
-
-int __glXDispSwap_IsDirect(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXIsDirectReq *req = (xGLXIsDirectReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXIsDirectReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->context);
-
- return __glXDisp_IsDirect(cl, pc);
-}
-
-int __glXDispSwap_QueryVersion(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXQueryVersionReq *req = (xGLXQueryVersionReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXQueryVersionReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->majorVersion);
- __GLX_SWAP_INT(&req->minorVersion);
-
- return __glXDisp_QueryVersion(cl, pc);
-}
-
-int __glXDispSwap_WaitGL(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXWaitGLReq *req = (xGLXWaitGLReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXWaitGLReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
-
- return __glXDisp_WaitGL(cl, pc);
-}
-
-int __glXDispSwap_WaitX(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXWaitXReq *req = (xGLXWaitXReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXWaitXReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
-
- return __glXDisp_WaitX(cl, pc);
-}
-
-int __glXDispSwap_CopyContext(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCopyContextReq *req = (xGLXCopyContextReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXCopyContextReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->source);
- __GLX_SWAP_INT(&req->dest);
- __GLX_SWAP_INT(&req->mask);
-
- return __glXDisp_CopyContext(cl, pc);
-}
-
-int __glXDispSwap_GetVisualConfigs(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXGetVisualConfigsReq *req = (xGLXGetVisualConfigsReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXGetVisualConfigsReq);
-
- __GLX_SWAP_INT(&req->screen);
- return __glXDisp_GetVisualConfigs(cl, pc);
-}
-
-int __glXDispSwap_GetFBConfigs(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXGetFBConfigsReq *req = (xGLXGetFBConfigsReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXGetFBConfigsReq);
-
- __GLX_SWAP_INT(&req->screen);
- return __glXDisp_GetFBConfigs(cl, pc);
-}
-
-int __glXDispSwap_GetFBConfigsSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXGetFBConfigsSGIXReq *req = (xGLXGetFBConfigsSGIXReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXGetFBConfigsSGIXReq);
-
- __GLX_SWAP_INT(&req->screen);
- return __glXDisp_GetFBConfigsSGIX(cl, pc);
-}
-
-int __glXDispSwap_CreateGLXPixmap(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreateGLXPixmapReq *req = (xGLXCreateGLXPixmapReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXCreateGLXPixmapReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->screen);
- __GLX_SWAP_INT(&req->visual);
- __GLX_SWAP_INT(&req->pixmap);
- __GLX_SWAP_INT(&req->glxpixmap);
-
- return __glXDisp_CreateGLXPixmap(cl, pc);
-}
-
-int __glXDispSwap_CreatePixmap(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreatePixmapReq *req = (xGLXCreatePixmapReq *) pc;
- CARD32 *attribs;
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
-
- REQUEST_AT_LEAST_SIZE(xGLXCreatePixmapReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->screen);
- __GLX_SWAP_INT(&req->fbconfig);
- __GLX_SWAP_INT(&req->pixmap);
- __GLX_SWAP_INT(&req->glxpixmap);
- __GLX_SWAP_INT(&req->numAttribs);
-
- if (req->numAttribs > (UINT32_MAX >> 3)) {
- client->errorValue = req->numAttribs;
- return BadValue;
- }
- REQUEST_FIXED_SIZE(xGLXCreatePixmapReq, req->numAttribs << 3);
- attribs = (CARD32*)(req + 1);
- __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1);
-
- return __glXDisp_CreatePixmap(cl, pc);
-}
-
-int __glXDispSwap_CreateGLXPixmapWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreateGLXPixmapWithConfigSGIXReq *req =
- (xGLXCreateGLXPixmapWithConfigSGIXReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXCreateGLXPixmapWithConfigSGIXReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->screen);
- __GLX_SWAP_INT(&req->fbconfig);
- __GLX_SWAP_INT(&req->pixmap);
- __GLX_SWAP_INT(&req->glxpixmap);
-
- return __glXDisp_CreateGLXPixmapWithConfigSGIX(cl, pc);
-}
-
-int __glXDispSwap_DestroyGLXPixmap(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXDestroyGLXPixmapReq *req = (xGLXDestroyGLXPixmapReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXDestroyGLXPixmapReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->glxpixmap);
-
- return __glXDisp_DestroyGLXPixmap(cl, pc);
-}
-
-int __glXDispSwap_DestroyPixmap(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXDestroyGLXPixmapReq *req = (xGLXDestroyGLXPixmapReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXDestroyGLXPixmapReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->glxpixmap);
-
- return __glXDisp_DestroyGLXPixmap(cl, pc);
-}
-
-int __glXDispSwap_QueryContext(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXQueryContextReq *req = (xGLXQueryContextReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXQueryContextReq);
-
- __GLX_SWAP_INT(&req->context);
-
- return __glXDisp_QueryContext(cl, pc);
-}
-
-int __glXDispSwap_CreatePbuffer(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreatePbufferReq *req = (xGLXCreatePbufferReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
- CARD32 *attribs;
-
- REQUEST_AT_LEAST_SIZE(xGLXCreatePbufferReq);
-
- __GLX_SWAP_INT(&req->screen);
- __GLX_SWAP_INT(&req->fbconfig);
- __GLX_SWAP_INT(&req->pbuffer);
- __GLX_SWAP_INT(&req->numAttribs);
-
- if (req->numAttribs > (UINT32_MAX >> 3)) {
- client->errorValue = req->numAttribs;
- return BadValue;
- }
- REQUEST_FIXED_SIZE(xGLXCreatePbufferReq, req->numAttribs << 3);
- attribs = (CARD32*)(req + 1);
- __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1);
-
- return __glXDisp_CreatePbuffer(cl, pc);
-}
-
-int __glXDispSwap_CreateGLXPbufferSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreateGLXPbufferSGIXReq *req = (xGLXCreateGLXPbufferSGIXReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXCreateGLXPbufferSGIXReq);
-
- __GLX_SWAP_INT(&req->screen);
- __GLX_SWAP_INT(&req->fbconfig);
- __GLX_SWAP_INT(&req->pbuffer);
- __GLX_SWAP_INT(&req->width);
- __GLX_SWAP_INT(&req->height);
-
- return __glXDisp_CreateGLXPbufferSGIX(cl, pc);
-}
-
-int __glXDispSwap_DestroyPbuffer(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXDestroyPbufferReq *req = (xGLXDestroyPbufferReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXDestroyPbufferReq);
-
- __GLX_SWAP_INT(&req->pbuffer);
-
- return __glXDisp_DestroyPbuffer(cl, pc);
-}
-
-int __glXDispSwap_DestroyGLXPbufferSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXDestroyGLXPbufferSGIXReq *req = (xGLXDestroyGLXPbufferSGIXReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXDestroyGLXPbufferSGIXReq);
-
- __GLX_SWAP_INT(&req->pbuffer);
-
- return __glXDisp_DestroyGLXPbufferSGIX(cl, pc);
-}
-
-int __glXDispSwap_ChangeDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXChangeDrawableAttributesReq *req =
- (xGLXChangeDrawableAttributesReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
- CARD32 *attribs;
-
- REQUEST_AT_LEAST_SIZE(xGLXChangeDrawableAttributesReq);
-
- __GLX_SWAP_INT(&req->drawable);
- __GLX_SWAP_INT(&req->numAttribs);
-
- if (req->numAttribs > (UINT32_MAX >> 3)) {
- client->errorValue = req->numAttribs;
- return BadValue;
- }
- REQUEST_FIXED_SIZE(xGLXChangeDrawableAttributesReq, req->numAttribs << 3);
- attribs = (CARD32*)(req + 1);
- __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1);
-
- return __glXDisp_ChangeDrawableAttributes(cl, pc);
-}
-
-int __glXDispSwap_ChangeDrawableAttributesSGIX(__GLXclientState *cl,
- GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXChangeDrawableAttributesSGIXReq *req =
- (xGLXChangeDrawableAttributesSGIXReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
- CARD32 *attribs;
-
- REQUEST_AT_LEAST_SIZE(xGLXChangeDrawableAttributesSGIXReq);
-
- __GLX_SWAP_INT(&req->drawable);
- __GLX_SWAP_INT(&req->numAttribs);
-
- if (req->numAttribs > (UINT32_MAX >> 3)) {
- client->errorValue = req->numAttribs;
- return BadValue;
- }
- REQUEST_FIXED_SIZE(xGLXChangeDrawableAttributesSGIXReq, req->numAttribs << 3);
- attribs = (CARD32*)(req + 1);
- __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1);
-
- return __glXDisp_ChangeDrawableAttributesSGIX(cl, pc);
-}
-
-int __glXDispSwap_CreateWindow(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXCreateWindowReq *req = (xGLXCreateWindowReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
- CARD32 *attribs;
-
- REQUEST_AT_LEAST_SIZE(xGLXCreateWindowReq);
-
- __GLX_SWAP_INT(&req->screen);
- __GLX_SWAP_INT(&req->fbconfig);
- __GLX_SWAP_INT(&req->window);
- __GLX_SWAP_INT(&req->glxwindow);
- __GLX_SWAP_INT(&req->numAttribs);
-
- if (req->numAttribs > (UINT32_MAX >> 3)) {
- client->errorValue = req->numAttribs;
- return BadValue;
- }
- REQUEST_FIXED_SIZE(xGLXCreateWindowReq, req->numAttribs << 3);
- attribs = (CARD32*)(req + 1);
- __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1);
-
- return __glXDisp_CreateWindow(cl, pc);
-}
-
-int __glXDispSwap_DestroyWindow(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXDestroyWindowReq *req = (xGLXDestroyWindowReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXDestroyWindowReq);
-
- __GLX_SWAP_INT(&req->glxwindow);
-
- return __glXDisp_DestroyWindow(cl, pc);
-}
-
-int __glXDispSwap_SwapBuffers(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXSwapBuffersReq *req = (xGLXSwapBuffersReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXSwapBuffersReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
- __GLX_SWAP_INT(&req->drawable);
-
- return __glXDisp_SwapBuffers(cl, pc);
-}
-
-int __glXDispSwap_UseXFont(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXUseXFontReq *req = (xGLXUseXFontReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXUseXFontReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
- __GLX_SWAP_INT(&req->font);
- __GLX_SWAP_INT(&req->first);
- __GLX_SWAP_INT(&req->count);
- __GLX_SWAP_INT(&req->listBase);
-
- return __glXDisp_UseXFont(cl, pc);
-}
-
-
-int __glXDispSwap_QueryExtensionsString(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXQueryExtensionsStringReq *req = (xGLXQueryExtensionsStringReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXQueryExtensionsStringReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->screen);
-
- return __glXDisp_QueryExtensionsString(cl, pc);
-}
-
-int __glXDispSwap_QueryServerString(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXQueryServerStringReq *req = (xGLXQueryServerStringReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXQueryServerStringReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->screen);
- __GLX_SWAP_INT(&req->name);
-
- return __glXDisp_QueryServerString(cl, pc);
-}
-
-int __glXDispSwap_ClientInfo(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXClientInfoReq *req = (xGLXClientInfoReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_AT_LEAST_SIZE(xGLXClientInfoReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->major);
- __GLX_SWAP_INT(&req->minor);
- __GLX_SWAP_INT(&req->numbytes);
-
- return __glXDisp_ClientInfo(cl, pc);
-}
-
-int __glXDispSwap_QueryContextInfoEXT(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXQueryContextInfoEXTReq *req = (xGLXQueryContextInfoEXTReq *) pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXQueryContextInfoEXTReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->context);
-
- return __glXDisp_QueryContextInfoEXT(cl, pc);
-}
-
-int __glXDispSwap_BindTexImageEXT(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
- GLXDrawable *drawId;
- int *buffer;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 8);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
-
- drawId = ((GLXDrawable *) (pc));
- buffer = ((int *) (pc + 4));
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
- __GLX_SWAP_INT(drawId);
- __GLX_SWAP_INT(buffer);
-
- return __glXDisp_BindTexImageEXT(cl, (GLbyte *)pc);
-}
-
-int __glXDispSwap_ReleaseTexImageEXT(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
- GLXDrawable *drawId;
- int *buffer;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 8);
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
-
- drawId = ((GLXDrawable *) (pc));
- buffer = ((int *) (pc + 4));
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
- __GLX_SWAP_INT(drawId);
- __GLX_SWAP_INT(buffer);
-
- return __glXDisp_ReleaseTexImageEXT(cl, (GLbyte *)pc);
-}
-
-int __glXDispSwap_CopySubBufferMESA(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
- GLXDrawable *drawId;
- int *buffer;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 20);
-
- (void) drawId;
- (void) buffer;
-
- pc += __GLX_VENDPRIV_HDR_SIZE;
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
- __GLX_SWAP_INT(pc);
- __GLX_SWAP_INT(pc + 4);
- __GLX_SWAP_INT(pc + 8);
- __GLX_SWAP_INT(pc + 12);
- __GLX_SWAP_INT(pc + 16);
-
- return __glXDisp_CopySubBufferMESA(cl, pc);
-
-}
-
-int __glXDispSwap_GetDrawableAttributesSGIX(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXVendorPrivateWithReplyReq *req = (xGLXVendorPrivateWithReplyReq *)pc;
- CARD32 *data;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXGetDrawableAttributesSGIXReq);
-
- data = (CARD32 *) (req + 1);
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->contextTag);
- __GLX_SWAP_INT(data);
-
- return __glXDisp_GetDrawableAttributesSGIX(cl, pc);
-}
-
-int __glXDispSwap_GetDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
-{
- ClientPtr client = cl->client;
- xGLXGetDrawableAttributesReq *req = (xGLXGetDrawableAttributesReq *)pc;
- __GLX_DECLARE_SWAP_VARIABLES;
-
- REQUEST_SIZE_MATCH(xGLXGetDrawableAttributesReq);
-
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->drawable);
-
- return __glXDisp_GetDrawableAttributes(cl, pc);
-}
-
-
-/************************************************************************/
-
-/*
-** Swap replies.
-*/
-
-void __glXSwapMakeCurrentReply(ClientPtr client, xGLXMakeCurrentReply *reply)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_SWAP_SHORT(&reply->sequenceNumber);
- __GLX_SWAP_INT(&reply->length);
- __GLX_SWAP_INT(&reply->contextTag);
- WriteToClient(client, sz_xGLXMakeCurrentReply, (char *)reply);
-}
-
-void __glXSwapIsDirectReply(ClientPtr client, xGLXIsDirectReply *reply)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_SWAP_SHORT(&reply->sequenceNumber);
- __GLX_SWAP_INT(&reply->length);
- WriteToClient(client, sz_xGLXIsDirectReply, (char *)reply);
-}
-
-void __glXSwapQueryVersionReply(ClientPtr client, xGLXQueryVersionReply *reply)
-{
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_SWAP_SHORT(&reply->sequenceNumber);
- __GLX_SWAP_INT(&reply->length);
- __GLX_SWAP_INT(&reply->majorVersion);
- __GLX_SWAP_INT(&reply->minorVersion);
- WriteToClient(client, sz_xGLXQueryVersionReply, (char *)reply);
-}
-
-void glxSwapQueryExtensionsStringReply(ClientPtr client,
- xGLXQueryExtensionsStringReply *reply, char *buf)
-{
- int length = reply->length;
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
- __GLX_SWAP_SHORT(&reply->sequenceNumber);
- __GLX_SWAP_INT(&reply->length);
- __GLX_SWAP_INT(&reply->n);
- WriteToClient(client, sz_xGLXQueryExtensionsStringReply, (char *)reply);
- __GLX_SWAP_INT_ARRAY((int *)buf, length);
- WriteToClient(client, length << 2, buf);
-}
-
-void glxSwapQueryServerStringReply(ClientPtr client,
- xGLXQueryServerStringReply *reply, char *buf)
-{
- int length = reply->length;
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_SWAP_SHORT(&reply->sequenceNumber);
- __GLX_SWAP_INT(&reply->length);
- __GLX_SWAP_INT(&reply->n);
- WriteToClient(client, sz_xGLXQueryServerStringReply, (char *)reply);
- /** no swap is needed for an array of chars **/
- /* __GLX_SWAP_INT_ARRAY((int *)buf, length); */
- WriteToClient(client, length << 2, buf);
-}
-
-void __glXSwapQueryContextInfoEXTReply(ClientPtr client, xGLXQueryContextInfoEXTReply *reply, int *buf)
-{
- int length = reply->length;
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
- __GLX_SWAP_SHORT(&reply->sequenceNumber);
- __GLX_SWAP_INT(&reply->length);
- __GLX_SWAP_INT(&reply->n);
- WriteToClient(client, sz_xGLXQueryContextInfoEXTReply, (char *)reply);
- __GLX_SWAP_INT_ARRAY((int *)buf, length);
- WriteToClient(client, length << 2, (char *)buf);
-}
-
-void __glXSwapGetDrawableAttributesReply(ClientPtr client,
- xGLXGetDrawableAttributesReply *reply, CARD32 *buf)
-{
- int length = reply->length;
- __GLX_DECLARE_SWAP_VARIABLES;
- __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
- __GLX_SWAP_SHORT(&reply->sequenceNumber);
- __GLX_SWAP_INT(&reply->length);
- __GLX_SWAP_INT(&reply->numAttribs);
- WriteToClient(client, sz_xGLXGetDrawableAttributesReply, (char *)reply);
- __GLX_SWAP_INT_ARRAY((int *)buf, length);
- WriteToClient(client, length << 2, (char *)buf);
-}
-
-/************************************************************************/
-
-/*
-** Render and Renderlarge are not in the GLX API. They are used by the GLX
-** client library to send batches of GL rendering commands.
-*/
-
-int __glXDispSwap_Render(__GLXclientState *cl, GLbyte *pc)
-{
- return __glXDisp_Render(cl, pc);
-}
-
-/*
-** Execute a large rendering request (one that spans multiple X requests).
-*/
-int __glXDispSwap_RenderLarge(__GLXclientState *cl, GLbyte *pc)
-{
- return __glXDisp_RenderLarge(cl, pc);
-}
-
-/************************************************************************/
-
-/*
-** No support is provided for the vendor-private requests other than
-** allocating these entry points in the dispatch table.
-*/
-
-int __glXDispSwap_VendorPrivate(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateReq *req;
- GLint vendorcode;
- __GLXdispatchVendorPrivProcPtr proc;
-
- __GLX_DECLARE_SWAP_VARIABLES;
-
- req = (xGLXVendorPrivateReq *) pc;
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->vendorCode);
-
- vendorcode = req->vendorCode;
-
- proc = (__GLXdispatchVendorPrivProcPtr)
- __glXGetProtocolDecodeFunction(& VendorPriv_dispatch_info,
- vendorcode, 1);
- if (proc != NULL) {
- (*proc)(cl, (GLbyte*)req);
- return Success;
- }
-
- cl->client->errorValue = req->vendorCode;
- return __glXError(GLXUnsupportedPrivateRequest);
-}
-
-
-int __glXDispSwap_VendorPrivateWithReply(__GLXclientState *cl, GLbyte *pc)
-{
- xGLXVendorPrivateWithReplyReq *req;
- GLint vendorcode;
- __GLXdispatchVendorPrivProcPtr proc;
-
- __GLX_DECLARE_SWAP_VARIABLES;
-
- req = (xGLXVendorPrivateWithReplyReq *) pc;
- __GLX_SWAP_SHORT(&req->length);
- __GLX_SWAP_INT(&req->vendorCode);
-
- vendorcode = req->vendorCode;
-
- proc = (__GLXdispatchVendorPrivProcPtr)
- __glXGetProtocolDecodeFunction(& VendorPriv_dispatch_info,
- vendorcode, 1);
- if (proc != NULL) {
- return (*proc)(cl, (GLbyte*)req);
- }
-
- cl->client->errorValue = req->vendorCode;
- return __glXError(GLXUnsupportedPrivateRequest);
-}
+/*
+ * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
+ * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice including the dates of first publication and
+ * either this permission notice or a reference to
+ * http://oss.sgi.com/projects/FreeB/
+ * shall be included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+ * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Except as contained in this notice, the name of Silicon Graphics, Inc.
+ * shall not be used in advertising or otherwise to promote the sale, use or
+ * other dealings in this Software without prior written authorization from
+ * Silicon Graphics, Inc.
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#else
+
+#include "glheader.h"
+
+#endif
+
+#include <string.h>
+#include "glxserver.h"
+#include "glxutil.h"
+#include <GL/glxtokens.h>
+#include <unpack.h>
+#include <pixmapstr.h>
+#include <windowstr.h>
+#include "glxext.h"
+#include "GL/gl.h"
+#include "glapitable.h"
+#include "glapi.h"
+#include "glthread.h"
+#include "dispatch.h"
+#include "indirect_dispatch.h"
+#include "indirect_table.h"
+#include "indirect_util.h"
+
+
+/************************************************************************/
+
+/*
+** Byteswapping versions of GLX commands. In most cases they just swap
+** the incoming arguments and then call the unswapped routine. For commands
+** that have replies, a separate swapping routine for the reply is provided;
+** it is called at the end of the unswapped routine.
+*/
+
+int __glXDispSwap_CreateContext(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCreateContextReq *req = (xGLXCreateContextReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXCreateContextReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->context);
+ __GLX_SWAP_INT(&req->visual);
+ __GLX_SWAP_INT(&req->screen);
+ __GLX_SWAP_INT(&req->shareList);
+
+ return __glXDisp_CreateContext(cl, pc);
+}
+
+int __glXDispSwap_CreateNewContext(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCreateNewContextReq *req = (xGLXCreateNewContextReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXCreateNewContextReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->context);
+ __GLX_SWAP_INT(&req->fbconfig);
+ __GLX_SWAP_INT(&req->screen);
+ __GLX_SWAP_INT(&req->renderType);
+ __GLX_SWAP_INT(&req->shareList);
+
+ return __glXDisp_CreateNewContext(cl, pc);
+}
+
+int __glXDispSwap_CreateContextWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCreateContextWithConfigSGIXReq *req =
+ (xGLXCreateContextWithConfigSGIXReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXCreateContextWithConfigSGIXReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->context);
+ __GLX_SWAP_INT(&req->fbconfig);
+ __GLX_SWAP_INT(&req->screen);
+ __GLX_SWAP_INT(&req->renderType);
+ __GLX_SWAP_INT(&req->shareList);
+
+ return __glXDisp_CreateContextWithConfigSGIX(cl, pc);
+}
+
+int __glXDispSwap_DestroyContext(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXDestroyContextReq *req = (xGLXDestroyContextReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXDestroyContextReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->context);
+
+ return __glXDisp_DestroyContext(cl, pc);
+}
+
+int __glXDispSwap_MakeCurrent(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXMakeCurrentReq *req = (xGLXMakeCurrentReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXMakeCurrentReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->drawable);
+ __GLX_SWAP_INT(&req->context);
+ __GLX_SWAP_INT(&req->oldContextTag);
+
+ return __glXDisp_MakeCurrent(cl, pc);
+}
+
+int __glXDispSwap_MakeContextCurrent(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXMakeContextCurrentReq *req = (xGLXMakeContextCurrentReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXMakeContextCurrentReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->drawable);
+ __GLX_SWAP_INT(&req->readdrawable);
+ __GLX_SWAP_INT(&req->context);
+ __GLX_SWAP_INT(&req->oldContextTag);
+
+ return __glXDisp_MakeContextCurrent(cl, pc);
+}
+
+int __glXDispSwap_MakeCurrentReadSGI(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXMakeCurrentReadSGIReq *req = (xGLXMakeCurrentReadSGIReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXMakeCurrentReadSGIReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->drawable);
+ __GLX_SWAP_INT(&req->readable);
+ __GLX_SWAP_INT(&req->context);
+ __GLX_SWAP_INT(&req->oldContextTag);
+
+ return __glXDisp_MakeCurrentReadSGI(cl, pc);
+}
+
+int __glXDispSwap_IsDirect(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXIsDirectReq *req = (xGLXIsDirectReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXIsDirectReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->context);
+
+ return __glXDisp_IsDirect(cl, pc);
+}
+
+int __glXDispSwap_QueryVersion(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXQueryVersionReq *req = (xGLXQueryVersionReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXQueryVersionReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->majorVersion);
+ __GLX_SWAP_INT(&req->minorVersion);
+
+ return __glXDisp_QueryVersion(cl, pc);
+}
+
+int __glXDispSwap_WaitGL(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXWaitGLReq *req = (xGLXWaitGLReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXWaitGLReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->contextTag);
+
+ return __glXDisp_WaitGL(cl, pc);
+}
+
+int __glXDispSwap_WaitX(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXWaitXReq *req = (xGLXWaitXReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXWaitXReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->contextTag);
+
+ return __glXDisp_WaitX(cl, pc);
+}
+
+int __glXDispSwap_CopyContext(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCopyContextReq *req = (xGLXCopyContextReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXCopyContextReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->source);
+ __GLX_SWAP_INT(&req->dest);
+ __GLX_SWAP_INT(&req->mask);
+
+ return __glXDisp_CopyContext(cl, pc);
+}
+
+int __glXDispSwap_GetVisualConfigs(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXGetVisualConfigsReq *req = (xGLXGetVisualConfigsReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXGetVisualConfigsReq);
+
+ __GLX_SWAP_INT(&req->screen);
+ return __glXDisp_GetVisualConfigs(cl, pc);
+}
+
+int __glXDispSwap_GetFBConfigs(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXGetFBConfigsReq *req = (xGLXGetFBConfigsReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXGetFBConfigsReq);
+
+ __GLX_SWAP_INT(&req->screen);
+ return __glXDisp_GetFBConfigs(cl, pc);
+}
+
+int __glXDispSwap_GetFBConfigsSGIX(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXGetFBConfigsSGIXReq *req = (xGLXGetFBConfigsSGIXReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_AT_LEAST_SIZE(xGLXGetFBConfigsSGIXReq);
+
+ __GLX_SWAP_INT(&req->screen);
+ return __glXDisp_GetFBConfigsSGIX(cl, pc);
+}
+
+int __glXDispSwap_CreateGLXPixmap(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCreateGLXPixmapReq *req = (xGLXCreateGLXPixmapReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXCreateGLXPixmapReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->screen);
+ __GLX_SWAP_INT(&req->visual);
+ __GLX_SWAP_INT(&req->pixmap);
+ __GLX_SWAP_INT(&req->glxpixmap);
+
+ return __glXDisp_CreateGLXPixmap(cl, pc);
+}
+
+int __glXDispSwap_CreatePixmap(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCreatePixmapReq *req = (xGLXCreatePixmapReq *) pc;
+ CARD32 *attribs;
+ __GLX_DECLARE_SWAP_VARIABLES;
+ __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
+
+ REQUEST_AT_LEAST_SIZE(xGLXCreatePixmapReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->screen);
+ __GLX_SWAP_INT(&req->fbconfig);
+ __GLX_SWAP_INT(&req->pixmap);
+ __GLX_SWAP_INT(&req->glxpixmap);
+ __GLX_SWAP_INT(&req->numAttribs);
+
+ if (req->numAttribs > (UINT32_MAX >> 3)) {
+ client->errorValue = req->numAttribs;
+ return BadValue;
+ }
+ REQUEST_FIXED_SIZE(xGLXCreatePixmapReq, req->numAttribs << 3);
+ attribs = (CARD32*)(req + 1);
+ __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1);
+
+ return __glXDisp_CreatePixmap(cl, pc);
+}
+
+int __glXDispSwap_CreateGLXPixmapWithConfigSGIX(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCreateGLXPixmapWithConfigSGIXReq *req =
+ (xGLXCreateGLXPixmapWithConfigSGIXReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXCreateGLXPixmapWithConfigSGIXReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->screen);
+ __GLX_SWAP_INT(&req->fbconfig);
+ __GLX_SWAP_INT(&req->pixmap);
+ __GLX_SWAP_INT(&req->glxpixmap);
+
+ return __glXDisp_CreateGLXPixmapWithConfigSGIX(cl, pc);
+}
+
+int __glXDispSwap_DestroyGLXPixmap(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXDestroyGLXPixmapReq *req = (xGLXDestroyGLXPixmapReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXDestroyGLXPixmapReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->glxpixmap);
+
+ return __glXDisp_DestroyGLXPixmap(cl, pc);
+}
+
+int __glXDispSwap_DestroyPixmap(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXDestroyGLXPixmapReq *req = (xGLXDestroyGLXPixmapReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_AT_LEAST_SIZE(xGLXDestroyGLXPixmapReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->glxpixmap);
+
+ return __glXDisp_DestroyGLXPixmap(cl, pc);
+}
+
+int __glXDispSwap_QueryContext(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXQueryContextReq *req = (xGLXQueryContextReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXQueryContextReq);
+
+ __GLX_SWAP_INT(&req->context);
+
+ return __glXDisp_QueryContext(cl, pc);
+}
+
+int __glXDispSwap_CreatePbuffer(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCreatePbufferReq *req = (xGLXCreatePbufferReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+ __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
+ CARD32 *attribs;
+
+ REQUEST_AT_LEAST_SIZE(xGLXCreatePbufferReq);
+
+ __GLX_SWAP_INT(&req->screen);
+ __GLX_SWAP_INT(&req->fbconfig);
+ __GLX_SWAP_INT(&req->pbuffer);
+ __GLX_SWAP_INT(&req->numAttribs);
+
+ if (req->numAttribs > (UINT32_MAX >> 3)) {
+ client->errorValue = req->numAttribs;
+ return BadValue;
+ }
+ REQUEST_FIXED_SIZE(xGLXCreatePbufferReq, req->numAttribs << 3);
+ attribs = (CARD32*)(req + 1);
+ __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1);
+
+ return __glXDisp_CreatePbuffer(cl, pc);
+}
+
+int __glXDispSwap_CreateGLXPbufferSGIX(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCreateGLXPbufferSGIXReq *req = (xGLXCreateGLXPbufferSGIXReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_AT_LEAST_SIZE(xGLXCreateGLXPbufferSGIXReq);
+
+ __GLX_SWAP_INT(&req->screen);
+ __GLX_SWAP_INT(&req->fbconfig);
+ __GLX_SWAP_INT(&req->pbuffer);
+ __GLX_SWAP_INT(&req->width);
+ __GLX_SWAP_INT(&req->height);
+
+ return __glXDisp_CreateGLXPbufferSGIX(cl, pc);
+}
+
+int __glXDispSwap_DestroyPbuffer(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXDestroyPbufferReq *req = (xGLXDestroyPbufferReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXDestroyPbufferReq);
+
+ __GLX_SWAP_INT(&req->pbuffer);
+
+ return __glXDisp_DestroyPbuffer(cl, pc);
+}
+
+int __glXDispSwap_DestroyGLXPbufferSGIX(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXDestroyGLXPbufferSGIXReq *req = (xGLXDestroyGLXPbufferSGIXReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXDestroyGLXPbufferSGIXReq);
+
+ __GLX_SWAP_INT(&req->pbuffer);
+
+ return __glXDisp_DestroyGLXPbufferSGIX(cl, pc);
+}
+
+int __glXDispSwap_ChangeDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXChangeDrawableAttributesReq *req =
+ (xGLXChangeDrawableAttributesReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+ __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
+ CARD32 *attribs;
+
+ REQUEST_AT_LEAST_SIZE(xGLXChangeDrawableAttributesReq);
+
+ __GLX_SWAP_INT(&req->drawable);
+ __GLX_SWAP_INT(&req->numAttribs);
+
+ if (req->numAttribs > (UINT32_MAX >> 3)) {
+ client->errorValue = req->numAttribs;
+ return BadValue;
+ }
+ if (((sizeof(xGLXChangeDrawableAttributesReq) + (req->numAttribs << 3)) >> 2) < client->req_len)
+ return BadLength;
+
+ attribs = (CARD32*)(req + 1);
+ __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1);
+
+ return __glXDisp_ChangeDrawableAttributes(cl, pc);
+}
+
+int __glXDispSwap_ChangeDrawableAttributesSGIX(__GLXclientState *cl,
+ GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXChangeDrawableAttributesSGIXReq *req =
+ (xGLXChangeDrawableAttributesSGIXReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+ __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
+ CARD32 *attribs;
+
+ REQUEST_AT_LEAST_SIZE(xGLXChangeDrawableAttributesSGIXReq);
+
+ __GLX_SWAP_INT(&req->drawable);
+ __GLX_SWAP_INT(&req->numAttribs);
+
+ if (req->numAttribs > (UINT32_MAX >> 3)) {
+ client->errorValue = req->numAttribs;
+ return BadValue;
+ }
+ REQUEST_FIXED_SIZE(xGLXChangeDrawableAttributesSGIXReq, req->numAttribs << 3);
+ attribs = (CARD32*)(req + 1);
+ __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1);
+
+ return __glXDisp_ChangeDrawableAttributesSGIX(cl, pc);
+}
+
+int __glXDispSwap_CreateWindow(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXCreateWindowReq *req = (xGLXCreateWindowReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+ __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
+ CARD32 *attribs;
+
+ REQUEST_AT_LEAST_SIZE(xGLXCreateWindowReq);
+
+ __GLX_SWAP_INT(&req->screen);
+ __GLX_SWAP_INT(&req->fbconfig);
+ __GLX_SWAP_INT(&req->window);
+ __GLX_SWAP_INT(&req->glxwindow);
+ __GLX_SWAP_INT(&req->numAttribs);
+
+ if (req->numAttribs > (UINT32_MAX >> 3)) {
+ client->errorValue = req->numAttribs;
+ return BadValue;
+ }
+ REQUEST_FIXED_SIZE(xGLXCreateWindowReq, req->numAttribs << 3);
+ attribs = (CARD32*)(req + 1);
+ __GLX_SWAP_INT_ARRAY(attribs, req->numAttribs << 1);
+
+ return __glXDisp_CreateWindow(cl, pc);
+}
+
+int __glXDispSwap_DestroyWindow(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXDestroyWindowReq *req = (xGLXDestroyWindowReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_AT_LEAST_SIZE(xGLXDestroyWindowReq);
+
+ __GLX_SWAP_INT(&req->glxwindow);
+
+ return __glXDisp_DestroyWindow(cl, pc);
+}
+
+int __glXDispSwap_SwapBuffers(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXSwapBuffersReq *req = (xGLXSwapBuffersReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXSwapBuffersReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->contextTag);
+ __GLX_SWAP_INT(&req->drawable);
+
+ return __glXDisp_SwapBuffers(cl, pc);
+}
+
+int __glXDispSwap_UseXFont(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXUseXFontReq *req = (xGLXUseXFontReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXUseXFontReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->contextTag);
+ __GLX_SWAP_INT(&req->font);
+ __GLX_SWAP_INT(&req->first);
+ __GLX_SWAP_INT(&req->count);
+ __GLX_SWAP_INT(&req->listBase);
+
+ return __glXDisp_UseXFont(cl, pc);
+}
+
+
+int __glXDispSwap_QueryExtensionsString(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXQueryExtensionsStringReq *req = (xGLXQueryExtensionsStringReq *)pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXQueryExtensionsStringReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->screen);
+
+ return __glXDisp_QueryExtensionsString(cl, pc);
+}
+
+int __glXDispSwap_QueryServerString(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXQueryServerStringReq *req = (xGLXQueryServerStringReq *)pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXQueryServerStringReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->screen);
+ __GLX_SWAP_INT(&req->name);
+
+ return __glXDisp_QueryServerString(cl, pc);
+}
+
+int __glXDispSwap_ClientInfo(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXClientInfoReq *req = (xGLXClientInfoReq *)pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_AT_LEAST_SIZE(xGLXClientInfoReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->major);
+ __GLX_SWAP_INT(&req->minor);
+ __GLX_SWAP_INT(&req->numbytes);
+
+ return __glXDisp_ClientInfo(cl, pc);
+}
+
+int __glXDispSwap_QueryContextInfoEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXQueryContextInfoEXTReq *req = (xGLXQueryContextInfoEXTReq *) pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXQueryContextInfoEXTReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->context);
+
+ return __glXDisp_QueryContextInfoEXT(cl, pc);
+}
+
+int __glXDispSwap_BindTexImageEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
+ GLXDrawable *drawId;
+ int *buffer;
+ CARD32 *num_attribs;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ if ((sizeof(xGLXVendorPrivateReq) + 12) >> 2 > client->req_len)
+ return BadLength;
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+
+ drawId = ((GLXDrawable *) (pc));
+ buffer = ((int *) (pc + 4));
+ num_attribs = ((CARD32 *) (pc + 8));
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->contextTag);
+ __GLX_SWAP_INT(drawId);
+ __GLX_SWAP_INT(buffer);
+ __GLX_SWAP_INT(num_attribs);
+
+ return __glXDisp_BindTexImageEXT(cl, (GLbyte *)pc);
+}
+
+int __glXDispSwap_ReleaseTexImageEXT(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
+ GLXDrawable *drawId;
+ int *buffer;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 8);
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+
+ drawId = ((GLXDrawable *) (pc));
+ buffer = ((int *) (pc + 4));
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->contextTag);
+ __GLX_SWAP_INT(drawId);
+ __GLX_SWAP_INT(buffer);
+
+ return __glXDisp_ReleaseTexImageEXT(cl, (GLbyte *)pc);
+}
+
+int __glXDispSwap_CopySubBufferMESA(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXVendorPrivateReq *req = (xGLXVendorPrivateReq *) pc;
+ GLXDrawable *drawId;
+ int *buffer;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 20);
+
+ (void) drawId;
+ (void) buffer;
+
+ pc += __GLX_VENDPRIV_HDR_SIZE;
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->contextTag);
+ __GLX_SWAP_INT(pc);
+ __GLX_SWAP_INT(pc + 4);
+ __GLX_SWAP_INT(pc + 8);
+ __GLX_SWAP_INT(pc + 12);
+ __GLX_SWAP_INT(pc + 16);
+
+ return __glXDisp_CopySubBufferMESA(cl, pc);
+
+}
+
+int __glXDispSwap_GetDrawableAttributesSGIX(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXVendorPrivateWithReplyReq *req = (xGLXVendorPrivateWithReplyReq *)pc;
+ CARD32 *data;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_SIZE_MATCH(xGLXGetDrawableAttributesSGIXReq);
+
+ data = (CARD32 *) (req + 1);
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->contextTag);
+ __GLX_SWAP_INT(data);
+
+ return __glXDisp_GetDrawableAttributesSGIX(cl, pc);
+}
+
+int __glXDispSwap_GetDrawableAttributes(__GLXclientState *cl, GLbyte *pc)
+{
+ ClientPtr client = cl->client;
+ xGLXGetDrawableAttributesReq *req = (xGLXGetDrawableAttributesReq *)pc;
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ REQUEST_AT_LEAST_SIZE(xGLXGetDrawableAttributesReq);
+
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->drawable);
+
+ return __glXDisp_GetDrawableAttributes(cl, pc);
+}
+
+
+/************************************************************************/
+
+/*
+** Swap replies.
+*/
+
+void __glXSwapMakeCurrentReply(ClientPtr client, xGLXMakeCurrentReply *reply)
+{
+ __GLX_DECLARE_SWAP_VARIABLES;
+ __GLX_SWAP_SHORT(&reply->sequenceNumber);
+ __GLX_SWAP_INT(&reply->length);
+ __GLX_SWAP_INT(&reply->contextTag);
+ WriteToClient(client, sz_xGLXMakeCurrentReply, (char *)reply);
+}
+
+void __glXSwapIsDirectReply(ClientPtr client, xGLXIsDirectReply *reply)
+{
+ __GLX_DECLARE_SWAP_VARIABLES;
+ __GLX_SWAP_SHORT(&reply->sequenceNumber);
+ __GLX_SWAP_INT(&reply->length);
+ WriteToClient(client, sz_xGLXIsDirectReply, (char *)reply);
+}
+
+void __glXSwapQueryVersionReply(ClientPtr client, xGLXQueryVersionReply *reply)
+{
+ __GLX_DECLARE_SWAP_VARIABLES;
+ __GLX_SWAP_SHORT(&reply->sequenceNumber);
+ __GLX_SWAP_INT(&reply->length);
+ __GLX_SWAP_INT(&reply->majorVersion);
+ __GLX_SWAP_INT(&reply->minorVersion);
+ WriteToClient(client, sz_xGLXQueryVersionReply, (char *)reply);
+}
+
+void glxSwapQueryExtensionsStringReply(ClientPtr client,
+ xGLXQueryExtensionsStringReply *reply, char *buf)
+{
+ int length = reply->length;
+ __GLX_DECLARE_SWAP_VARIABLES;
+ __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
+ __GLX_SWAP_SHORT(&reply->sequenceNumber);
+ __GLX_SWAP_INT(&reply->length);
+ __GLX_SWAP_INT(&reply->n);
+ WriteToClient(client, sz_xGLXQueryExtensionsStringReply, (char *)reply);
+ __GLX_SWAP_INT_ARRAY((int *)buf, length);
+ WriteToClient(client, length << 2, buf);
+}
+
+void glxSwapQueryServerStringReply(ClientPtr client,
+ xGLXQueryServerStringReply *reply, char *buf)
+{
+ int length = reply->length;
+ __GLX_DECLARE_SWAP_VARIABLES;
+ __GLX_SWAP_SHORT(&reply->sequenceNumber);
+ __GLX_SWAP_INT(&reply->length);
+ __GLX_SWAP_INT(&reply->n);
+ WriteToClient(client, sz_xGLXQueryServerStringReply, (char *)reply);
+ /** no swap is needed for an array of chars **/
+ /* __GLX_SWAP_INT_ARRAY((int *)buf, length); */
+ WriteToClient(client, length << 2, buf);
+}
+
+void __glXSwapQueryContextInfoEXTReply(ClientPtr client, xGLXQueryContextInfoEXTReply *reply, int *buf)
+{
+ int length = reply->length;
+ __GLX_DECLARE_SWAP_VARIABLES;
+ __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
+ __GLX_SWAP_SHORT(&reply->sequenceNumber);
+ __GLX_SWAP_INT(&reply->length);
+ __GLX_SWAP_INT(&reply->n);
+ WriteToClient(client, sz_xGLXQueryContextInfoEXTReply, (char *)reply);
+ __GLX_SWAP_INT_ARRAY((int *)buf, length);
+ WriteToClient(client, length << 2, (char *)buf);
+}
+
+void __glXSwapGetDrawableAttributesReply(ClientPtr client,
+ xGLXGetDrawableAttributesReply *reply, CARD32 *buf)
+{
+ int length = reply->length;
+ __GLX_DECLARE_SWAP_VARIABLES;
+ __GLX_DECLARE_SWAP_ARRAY_VARIABLES;
+ __GLX_SWAP_SHORT(&reply->sequenceNumber);
+ __GLX_SWAP_INT(&reply->length);
+ __GLX_SWAP_INT(&reply->numAttribs);
+ WriteToClient(client, sz_xGLXGetDrawableAttributesReply, (char *)reply);
+ __GLX_SWAP_INT_ARRAY((int *)buf, length);
+ WriteToClient(client, length << 2, (char *)buf);
+}
+
+/************************************************************************/
+
+/*
+** Render and Renderlarge are not in the GLX API. They are used by the GLX
+** client library to send batches of GL rendering commands.
+*/
+
+int __glXDispSwap_Render(__GLXclientState *cl, GLbyte *pc)
+{
+ return __glXDisp_Render(cl, pc);
+}
+
+/*
+** Execute a large rendering request (one that spans multiple X requests).
+*/
+int __glXDispSwap_RenderLarge(__GLXclientState *cl, GLbyte *pc)
+{
+ return __glXDisp_RenderLarge(cl, pc);
+}
+
+/************************************************************************/
+
+/*
+** No support is provided for the vendor-private requests other than
+** allocating these entry points in the dispatch table.
+*/
+
+int __glXDispSwap_VendorPrivate(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateReq *req;
+ GLint vendorcode;
+ __GLXdispatchVendorPrivProcPtr proc;
+
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ req = (xGLXVendorPrivateReq *) pc;
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->vendorCode);
+
+ vendorcode = req->vendorCode;
+
+ proc = (__GLXdispatchVendorPrivProcPtr)
+ __glXGetProtocolDecodeFunction(& VendorPriv_dispatch_info,
+ vendorcode, 1);
+ if (proc != NULL) {
+ (*proc)(cl, (GLbyte*)req);
+ return Success;
+ }
+
+ cl->client->errorValue = req->vendorCode;
+ return __glXError(GLXUnsupportedPrivateRequest);
+}
+
+
+int __glXDispSwap_VendorPrivateWithReply(__GLXclientState *cl, GLbyte *pc)
+{
+ xGLXVendorPrivateWithReplyReq *req;
+ GLint vendorcode;
+ __GLXdispatchVendorPrivProcPtr proc;
+
+ __GLX_DECLARE_SWAP_VARIABLES;
+
+ req = (xGLXVendorPrivateWithReplyReq *) pc;
+ __GLX_SWAP_SHORT(&req->length);
+ __GLX_SWAP_INT(&req->vendorCode);
+
+ vendorcode = req->vendorCode;
+
+ proc = (__GLXdispatchVendorPrivProcPtr)
+ __glXGetProtocolDecodeFunction(& VendorPriv_dispatch_info,
+ vendorcode, 1);
+ if (proc != NULL) {
+ return (*proc)(cl, (GLbyte*)req);
+ }
+
+ cl->client->errorValue = req->vendorCode;
+ return __glXError(GLXUnsupportedPrivateRequest);
+}
diff --git a/xorg-server/hw/xfree86/common/xf86Init.c b/xorg-server/hw/xfree86/common/xf86Init.c
index a1fda54cd..e017d9dce 100644
--- a/xorg-server/hw/xfree86/common/xf86Init.c
+++ b/xorg-server/hw/xfree86/common/xf86Init.c
@@ -1,1497 +1,1497 @@
-/*
- * Loosely based on code bearing the following copyright:
- *
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- */
-/*
- * Copyright (c) 1992-2003 by The XFree86 Project, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of the copyright holder(s)
- * and author(s) shall not be used in advertising or otherwise to promote
- * the sale, use or other dealings in this Software without prior written
- * authorization from the copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <stdlib.h>
-#include <errno.h>
-
-#undef HAS_UTSNAME
-#if !defined(WIN32)
-#define HAS_UTSNAME 1
-#include <sys/utsname.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xproto.h>
-#include <X11/Xatom.h>
-#include "input.h"
-#include "servermd.h"
-#include "windowstr.h"
-#include "scrnintstr.h"
-#include "site.h"
-#include "mi.h"
-
-#include "compiler.h"
-
-#include "loaderProcs.h"
-#ifdef XFreeXDGA
-#include "dgaproc.h"
-#endif
-
-#define XF86_OS_PRIVS
-#include "xf86.h"
-#include "xf86Priv.h"
-#include "xf86Config.h"
-#include "xf86_OSlib.h"
-#include "xf86cmap.h"
-#include "xorgVersion.h"
-#include "xf86Build.h"
-#include "mipointer.h"
-#include <X11/extensions/XI.h>
-#include <X11/extensions/XIproto.h>
-#include "xf86DDC.h"
-#include "xf86Xinput.h"
-#include "xf86InPriv.h"
-#include "picturestr.h"
-
-#include "xf86Bus.h"
-#include "xf86VGAarbiter.h"
-#include "globals.h"
-
-#ifdef DPMSExtension
-#include <X11/extensions/dpmsconst.h>
-#include "dpmsproc.h"
-#endif
-#include <hotplug.h>
-
-
-#ifdef XF86PM
-void (*xf86OSPMClose)(void) = NULL;
-#endif
-static Bool xorgHWOpenConsole = FALSE;
-
-/* Common pixmap formats */
-
-static PixmapFormatRec formats[MAXFORMATS] = {
- { 1, 1, BITMAP_SCANLINE_PAD },
- { 4, 8, BITMAP_SCANLINE_PAD },
- { 8, 8, BITMAP_SCANLINE_PAD },
- { 15, 16, BITMAP_SCANLINE_PAD },
- { 16, 16, BITMAP_SCANLINE_PAD },
- { 24, 32, BITMAP_SCANLINE_PAD },
- { 32, 32, BITMAP_SCANLINE_PAD },
-};
-static int numFormats = 7;
-static Bool formatsDone = FALSE;
-
-#ifndef OSNAME
-#define OSNAME " unknown"
-#endif
-#ifndef OSVENDOR
-#define OSVENDOR ""
-#endif
-#ifndef PRE_RELEASE
-#define PRE_RELEASE XORG_VERSION_SNAP
-#endif
-
-static void
-xf86PrintBanner(void)
-{
-#if PRE_RELEASE
- xf86ErrorFVerb(0, "\n"
- "This is a pre-release version of the X server from " XVENDORNAME ".\n"
- "It is not supported in any way.\n"
- "Bugs may be filed in the bugzilla at http://bugs.freedesktop.org/.\n"
- "Select the \"xorg\" product for bugs you find in this release.\n"
- "Before reporting bugs in pre-release versions please check the\n"
- "latest version in the X.Org Foundation git repository.\n"
- "See http://wiki.x.org/wiki/GitPage for git access instructions.\n");
-#endif
- xf86ErrorFVerb(0, "\nX.Org X Server %d.%d.%d",
- XORG_VERSION_MAJOR,
- XORG_VERSION_MINOR,
- XORG_VERSION_PATCH);
-#if XORG_VERSION_SNAP > 0
- xf86ErrorFVerb(0, ".%d", XORG_VERSION_SNAP);
-#endif
-
-#if XORG_VERSION_SNAP >= 900
- /* When the minor number is 99, that signifies that the we are making
- * a release candidate for a major version. (X.0.0)
- * When the patch number is 99, that signifies that the we are making
- * a release candidate for a minor version. (X.Y.0)
- * When the patch number is < 99, then we are making a release
- * candidate for the next point release. (X.Y.Z)
- */
-#if XORG_VERSION_MINOR >= 99
- xf86ErrorFVerb(0, " (%d.0.0 RC %d)", XORG_VERSION_MAJOR+1,
- XORG_VERSION_SNAP - 900);
-#elif XORG_VERSION_PATCH == 99
- xf86ErrorFVerb(0, " (%d.%d.0 RC %d)", XORG_VERSION_MAJOR,
- XORG_VERSION_MINOR + 1, XORG_VERSION_SNAP - 900);
-#else
- xf86ErrorFVerb(0, " (%d.%d.%d RC %d)", XORG_VERSION_MAJOR,
- XORG_VERSION_MINOR, XORG_VERSION_PATCH + 1,
- XORG_VERSION_SNAP - 900);
-#endif
-#endif
-
-#ifdef XORG_CUSTOM_VERSION
- xf86ErrorFVerb(0, " (%s)", XORG_CUSTOM_VERSION);
-#endif
-#ifndef XORG_DATE
-# define XORG_DATE "Unknown"
-#endif
- xf86ErrorFVerb(0, "\nRelease Date: %s\n", XORG_DATE);
- xf86ErrorFVerb(0, "X Protocol Version %d, Revision %d\n",
- X_PROTOCOL, X_PROTOCOL_REVISION);
- xf86ErrorFVerb(0, "Build Operating System: %s %s\n", OSNAME, OSVENDOR);
-#ifdef HAS_UTSNAME
- {
- struct utsname name;
-
- /* Linux & BSD state that 0 is success, SysV (including Solaris, HP-UX,
- and Irix) and Single Unix Spec 3 just say that non-negative is success.
- All agree that failure is represented by a negative number.
- */
- if (uname(&name) >= 0) {
- xf86ErrorFVerb(0, "Current Operating System: %s %s %s %s %s\n",
- name.sysname, name.nodename, name.release, name.version, name.machine);
-#ifdef linux
- do {
- char buf[80];
- int fd = open("/proc/cmdline", O_RDONLY);
- if (fd != -1) {
- xf86ErrorFVerb(0, "Kernel command line: ");
- memset(buf, 0, 80);
- while (read(fd, buf, 80) > 0) {
- xf86ErrorFVerb(0, "%.80s", buf);
- memset(buf, 0, 80);
- }
- close(fd);
- }
- } while (0);
-#endif
- }
- }
-#endif
-#if defined(BUILD_DATE) && (BUILD_DATE > 19000000)
- {
- struct tm t;
- char buf[100];
-
- memset(&t, 0, sizeof(t));
- memset(buf, 0, sizeof(buf));
- t.tm_mday = BUILD_DATE % 100;
- t.tm_mon = (BUILD_DATE / 100) % 100 - 1;
- t.tm_year = BUILD_DATE / 10000 - 1900;
-#if defined(BUILD_TIME)
- t.tm_sec = BUILD_TIME % 100;
- t.tm_min = (BUILD_TIME / 100) % 100;
- t.tm_hour = (BUILD_TIME / 10000) % 100;
- if (strftime(buf, sizeof(buf), "%d %B %Y %I:%M:%S%p", &t))
- xf86ErrorFVerb(0, "Build Date: %s\n", buf);
-#else
- if (strftime(buf, sizeof(buf), "%d %B %Y", &t))
- xf86ErrorFVerb(0, "Build Date: %s\n", buf);
-#endif
- }
-#endif
-#if defined(BUILDERSTRING)
- xf86ErrorFVerb(0, "%s \n", BUILDERSTRING);
-#endif
- xf86ErrorFVerb(0, "Current version of pixman: %s\n",
- pixman_version_string());
- xf86ErrorFVerb(0, "\tBefore reporting problems, check "
- ""__VENDORDWEBSUPPORT__"\n"
- "\tto make sure that you have the latest version.\n");
-}
-
-static void
-xf86PrintMarkers(void)
-{
- LogPrintMarkers();
-}
-
-static Bool
-xf86CreateRootWindow(WindowPtr pWin)
-{
- int ret = TRUE;
- int err = Success;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- RootWinPropPtr pProp;
- CreateWindowProcPtr CreateWindow = (CreateWindowProcPtr)
- dixLookupPrivate(&pScreen->devPrivates, xf86CreateRootWindowKey);
-
- DebugF("xf86CreateRootWindow(%p)\n", pWin);
-
- if ( pScreen->CreateWindow != xf86CreateRootWindow ) {
- /* Can't find hook we are hung on */
- xf86DrvMsg(pScreen->myNum, X_WARNING /* X_ERROR */,
- "xf86CreateRootWindow %p called when not in pScreen->CreateWindow %p n",
- (void *)xf86CreateRootWindow,
- (void *)pScreen->CreateWindow );
- }
-
- /* Unhook this function ... */
- pScreen->CreateWindow = CreateWindow;
- dixSetPrivate(&pScreen->devPrivates, xf86CreateRootWindowKey, NULL);
-
- /* ... and call the previous CreateWindow fuction, if any */
- if (NULL!=pScreen->CreateWindow) {
- ret = (*pScreen->CreateWindow)(pWin);
- }
-
- /* Now do our stuff */
- if (xf86RegisteredPropertiesTable != NULL) {
- if (pWin->parent == NULL && xf86RegisteredPropertiesTable != NULL) {
- for (pProp = xf86RegisteredPropertiesTable[pScreen->myNum];
- pProp != NULL && err==Success;
- pProp = pProp->next )
- {
- Atom prop;
-
- prop = MakeAtom(pProp->name, strlen(pProp->name), TRUE);
- err = dixChangeWindowProperty(serverClient, pWin,
- prop, pProp->type,
- pProp->format, PropModeReplace,
- pProp->size, pProp->data,
- FALSE);
- }
-
- /* Look at err */
- ret &= (err==Success);
-
- } else {
- xf86Msg(X_ERROR, "xf86CreateRootWindow unexpectedly called with "
- "non-root window %p (parent %p)\n",
- (void *)pWin, (void *)pWin->parent);
- ret = FALSE;
- }
- }
-
- DebugF("xf86CreateRootWindow() returns %d\n", ret);
- return ret;
-}
-
-
-static void
-InstallSignalHandlers(void)
-{
- /*
- * Install signal handler for unexpected signals
- */
- xf86Info.caughtSignal=FALSE;
- if (!xf86Info.notrapSignals) {
- OsRegisterSigWrapper(xf86SigWrapper);
- } else {
- signal(SIGSEGV, SIG_DFL);
- signal(SIGILL, SIG_DFL);
-#ifdef SIGEMT
- signal(SIGEMT, SIG_DFL);
-#endif
- signal(SIGFPE, SIG_DFL);
- signal(SIGBUS, SIG_DFL);
- signal(SIGSYS, SIG_DFL);
- signal(SIGXCPU, SIG_DFL);
- signal(SIGXFSZ, SIG_DFL);
- }
-}
-
-/*
- * InitOutput --
- * Initialize screenInfo for all actually accessible framebuffers.
- * That includes vt-manager setup, querying all possible devices and
- * collecting the pixmap formats.
- */
-void
-InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
-{
- int i, j, k, scr_index, was_blocked = 0;
- char **modulelist;
- pointer *optionlist;
- Pix24Flags screenpix24, pix24;
- MessageType pix24From = X_DEFAULT;
- Bool pix24Fail = FALSE;
- Bool autoconfig = FALSE;
- GDevPtr configured_device;
-
- xf86Initialising = TRUE;
-
- if (serverGeneration == 1) {
- if ((xf86ServerName = strrchr(argv[0], '/')) != 0)
- xf86ServerName++;
- else
- xf86ServerName = argv[0];
-
- xf86PrintBanner();
- xf86PrintMarkers();
- if (xf86LogFile) {
- time_t t;
- const char *ct;
- t = time(NULL);
- ct = ctime(&t);
- xf86MsgVerb(xf86LogFileFrom, 0, "Log file: \"%s\", Time: %s",
- xf86LogFile, ct);
- }
-
- /* Read and parse the config file */
- if (!xf86DoConfigure && !xf86DoShowOptions) {
- switch (xf86HandleConfigFile(FALSE)) {
- case CONFIG_OK:
- break;
- case CONFIG_PARSE_ERROR:
- xf86Msg(X_ERROR, "Error parsing the config file\n");
- return;
- case CONFIG_NOFILE:
- autoconfig = TRUE;
- break;
- }
- }
-
- InstallSignalHandlers();
-
- /* Initialise the loader */
- LoaderInit();
-
- /* Tell the loader the default module search path */
- LoaderSetPath(xf86ModulePath);
-
- if (xf86Info.ignoreABI) {
- LoaderSetOptions(LDR_OPT_ABI_MISMATCH_NONFATAL);
- }
-
- if (xf86DoShowOptions)
- DoShowOptions();
-
- /* Do a general bus probe. This will be a PCI probe for x86 platforms */
- xf86BusProbe();
-
- if (xf86DoConfigure)
- DoConfigure();
-
- if (autoconfig) {
- if (!xf86AutoConfig()) {
- xf86Msg(X_ERROR, "Auto configuration failed\n");
- return;
- }
- }
-
-#ifdef XF86PM
- xf86OSPMClose = xf86OSPMOpen();
-#endif
-
- /* Load all modules specified explicitly in the config file */
- if ((modulelist = xf86ModulelistFromConfig(&optionlist))) {
- xf86LoadModules(modulelist, optionlist);
- free(modulelist);
- free(optionlist);
- }
-
- /* Load all driver modules specified in the config file */
- /* If there aren't any specified in the config file, autoconfig them */
- /* FIXME: Does not handle multiple active screen sections, but I'm not
- * sure if we really want to handle that case*/
- configured_device = xf86ConfigLayout.screens->screen->device;
- if ((!configured_device) || (!configured_device->driver)) {
- if (!autoConfigDevice(configured_device)) {
- xf86Msg(X_ERROR, "Automatic driver configuration failed\n");
- return ;
- }
- }
- if ((modulelist = xf86DriverlistFromConfig())) {
- xf86LoadModules(modulelist, NULL);
- free(modulelist);
- }
-
- /* Load all input driver modules specified in the config file. */
- if ((modulelist = xf86InputDriverlistFromConfig())) {
- xf86LoadModules(modulelist, NULL);
- free(modulelist);
- }
-
- /*
- * It is expected that xf86AddDriver()/xf86AddInputDriver will be
- * called for each driver as it is loaded. Those functions save the
- * module pointers for drivers.
- * XXX Nothing keeps track of them for other modules.
- */
- /* XXX What do we do if not all of these could be loaded? */
-
- /*
- * At this point, xf86DriverList[] is all filled in with entries for
- * each of the drivers to try and xf86NumDrivers has the number of
- * drivers. If there are none, return now.
- */
-
- if (xf86NumDrivers == 0) {
- xf86Msg(X_ERROR, "No drivers available.\n");
- return;
- }
-
- /*
- * Call each of the Identify functions and call the driverFunc to check
- * if HW access is required. The Identify functions print out some
- * identifying information, and anything else that might be
- * needed at this early stage.
- */
-
- for (i = 0; i < xf86NumDrivers; i++) {
- if (xf86DriverList[i]->Identify != NULL)
- xf86DriverList[i]->Identify(0);
-
- if (!xorgHWAccess || !xorgHWOpenConsole) {
- xorgHWFlags flags;
- if(!xf86DriverList[i]->driverFunc
- || !xf86DriverList[i]->driverFunc(NULL,
- GET_REQUIRED_HW_INTERFACES,
- &flags))
- flags = HW_IO;
-
- if(NEED_IO_ENABLED(flags))
- xorgHWAccess = TRUE;
- if(!(flags & HW_SKIP_CONSOLE))
- xorgHWOpenConsole = TRUE;
- }
- }
-
- if (xorgHWOpenConsole)
- xf86OpenConsole();
- else
- xf86Info.dontVTSwitch = TRUE;
-
- if (xf86BusConfig() == FALSE)
- return;
-
- xf86PostProbe();
-
- /*
- * Sort the drivers to match the requested ording. Using a slow
- * bubble sort.
- */
- for (j = 0; j < xf86NumScreens - 1; j++) {
- for (i = 0; i < xf86NumScreens - j - 1; i++) {
- if (xf86Screens[i + 1]->confScreen->screennum <
- xf86Screens[i]->confScreen->screennum) {
- ScrnInfoPtr tmpScrn = xf86Screens[i + 1];
- xf86Screens[i + 1] = xf86Screens[i];
- xf86Screens[i] = tmpScrn;
- }
- }
- }
- /* Fix up the indexes */
- for (i = 0; i < xf86NumScreens; i++) {
- xf86Screens[i]->scrnIndex = i;
- }
-
- /*
- * Call the driver's PreInit()'s to complete initialisation for the first
- * generation.
- */
-
- for (i = 0; i < xf86NumScreens; i++) {
- xf86VGAarbiterScrnInit(xf86Screens[i]);
- xf86VGAarbiterLock(xf86Screens[i]);
- if (xf86Screens[i]->PreInit &&
- xf86Screens[i]->PreInit(xf86Screens[i], 0))
- xf86Screens[i]->configured = TRUE;
- xf86VGAarbiterUnlock(xf86Screens[i]);
- }
- for (i = 0; i < xf86NumScreens; i++)
- if (!xf86Screens[i]->configured)
- xf86DeleteScreen(i--, 0);
-
- /*
- * If no screens left, return now.
- */
-
- if (xf86NumScreens == 0) {
- xf86Msg(X_ERROR,
- "Screen(s) found, but none have a usable configuration.\n");
- return;
- }
-
- for (i = 0; i < xf86NumScreens; i++) {
- if (xf86Screens[i]->name == NULL) {
- XNFasprintf(&xf86Screens[i]->name, "screen%d", i);
- xf86MsgVerb(X_WARNING, 0,
- "Screen driver %d has no name set, using `%s'.\n",
- i, xf86Screens[i]->name);
- }
- }
-
- /* Remove (unload) drivers that are not required */
- for (i = 0; i < xf86NumDrivers; i++)
- if (xf86DriverList[i] && xf86DriverList[i]->refCount <= 0)
- xf86DeleteDriver(i);
-
- /*
- * At this stage we know how many screens there are.
- */
-
- for (i = 0; i < xf86NumScreens; i++)
- xf86InitViewport(xf86Screens[i]);
-
- /*
- * Collect all pixmap formats and check for conflicts at the display
- * level. Should we die here? Or just delete the offending screens?
- */
- screenpix24 = Pix24DontCare;
- for (i = 0; i < xf86NumScreens; i++) {
- if (xf86Screens[i]->imageByteOrder !=
- xf86Screens[0]->imageByteOrder)
- FatalError("Inconsistent display bitmapBitOrder. Exiting\n");
- if (xf86Screens[i]->bitmapScanlinePad !=
- xf86Screens[0]->bitmapScanlinePad)
- FatalError("Inconsistent display bitmapScanlinePad. Exiting\n");
- if (xf86Screens[i]->bitmapScanlineUnit !=
- xf86Screens[0]->bitmapScanlineUnit)
- FatalError("Inconsistent display bitmapScanlineUnit. Exiting\n");
- if (xf86Screens[i]->bitmapBitOrder !=
- xf86Screens[0]->bitmapBitOrder)
- FatalError("Inconsistent display bitmapBitOrder. Exiting\n");
-
- /* Determine the depth 24 pixmap format the screens would like */
- if (xf86Screens[i]->pixmap24 != Pix24DontCare) {
- if (screenpix24 == Pix24DontCare)
- screenpix24 = xf86Screens[i]->pixmap24;
- else if (screenpix24 != xf86Screens[i]->pixmap24)
- FatalError("Inconsistent depth 24 pixmap format. Exiting\n");
- }
- }
- /* check if screenpix24 is consistent with the config/cmdline */
- if (xf86Info.pixmap24 != Pix24DontCare) {
- pix24 = xf86Info.pixmap24;
- pix24From = xf86Info.pix24From;
- if (screenpix24 != Pix24DontCare && screenpix24 != xf86Info.pixmap24)
- pix24Fail = TRUE;
- } else if (screenpix24 != Pix24DontCare) {
- pix24 = screenpix24;
- pix24From = X_PROBED;
- } else
- pix24 = Pix24Use32;
-
- if (pix24Fail)
- FatalError("Screen(s) can't use the required depth 24 pixmap format"
- " (%d). Exiting\n", PIX24TOBPP(pix24));
-
- /* Initialise the depth 24 format */
- for (j = 0; j < numFormats && formats[j].depth != 24; j++)
- ;
- formats[j].bitsPerPixel = PIX24TOBPP(pix24);
-
- /* Collect additional formats */
- for (i = 0; i < xf86NumScreens; i++) {
- for (j = 0; j < xf86Screens[i]->numFormats; j++) {
- for (k = 0; ; k++) {
- if (k >= numFormats) {
- if (k >= MAXFORMATS)
- FatalError("Too many pixmap formats! Exiting\n");
- formats[k] = xf86Screens[i]->formats[j];
- numFormats++;
- break;
- }
- if (formats[k].depth == xf86Screens[i]->formats[j].depth) {
- if ((formats[k].bitsPerPixel ==
- xf86Screens[i]->formats[j].bitsPerPixel) &&
- (formats[k].scanlinePad ==
- xf86Screens[i]->formats[j].scanlinePad))
- break;
- FatalError("Inconsistent pixmap format for depth %d."
- " Exiting\n", formats[k].depth);
- }
- }
- }
- }
- formatsDone = TRUE;
-
- if (xf86Info.vtno >= 0 ) {
-#define VT_ATOM_NAME "XFree86_VT"
- Atom VTAtom=-1;
- CARD32 *VT = NULL;
- int ret;
-
- /* This memory needs to stay available until the screen has been
- initialized, and we can create the property for real.
- */
- if ( (VT = malloc(sizeof(CARD32)))==NULL ) {
- FatalError("Unable to make VT property - out of memory. Exiting...\n");
- }
- *VT = xf86Info.vtno;
-
- VTAtom = MakeAtom(VT_ATOM_NAME, sizeof(VT_ATOM_NAME) - 1, TRUE);
-
- for (i = 0, ret = Success; i < xf86NumScreens && ret == Success; i++) {
- ret = xf86RegisterRootWindowProperty(xf86Screens[i]->scrnIndex,
- VTAtom, XA_INTEGER, 32,
- 1, VT );
- if (ret != Success)
- xf86DrvMsg(xf86Screens[i]->scrnIndex, X_WARNING,
- "Failed to register VT property\n");
- }
- }
-
- /* If a screen uses depth 24, show what the pixmap format is */
- for (i = 0; i < xf86NumScreens; i++) {
- if (xf86Screens[i]->depth == 24) {
- xf86Msg(pix24From, "Depth 24 pixmap format is %d bpp\n",
- PIX24TOBPP(pix24));
- break;
- }
- }
- } else {
- /*
- * serverGeneration != 1; some OSs have to do things here, too.
- */
- if (xorgHWOpenConsole)
- xf86OpenConsole();
-
-#ifdef XF86PM
- /*
- should we reopen it here? We need to deal with an already opened
- device. We could leave this to the OS layer. For now we simply
- close it here
- */
- if (xf86OSPMClose)
- xf86OSPMClose();
- if ((xf86OSPMClose = xf86OSPMOpen()) != NULL)
- xf86MsgVerb(X_INFO, 3, "APM registered successfully\n");
-#endif
-
- /* Make sure full I/O access is enabled */
- if (xorgHWAccess)
- xf86EnableIO();
- }
-
- /*
- * Use the previously collected parts to setup pScreenInfo
- */
-
- pScreenInfo->imageByteOrder = xf86Screens[0]->imageByteOrder;
- pScreenInfo->bitmapScanlinePad = xf86Screens[0]->bitmapScanlinePad;
- pScreenInfo->bitmapScanlineUnit = xf86Screens[0]->bitmapScanlineUnit;
- pScreenInfo->bitmapBitOrder = xf86Screens[0]->bitmapBitOrder;
- pScreenInfo->numPixmapFormats = numFormats;
- for (i = 0; i < numFormats; i++)
- pScreenInfo->formats[i] = formats[i];
-
- /* Make sure the server's VT is active */
-
- if (serverGeneration != 1) {
- xf86Resetting = TRUE;
- /* All screens are in the same state, so just check the first */
- if (!xf86Screens[0]->vtSema) {
-#ifdef HAS_USL_VTS
- ioctl(xf86Info.consoleFd, VT_RELDISP, VT_ACKACQ);
-#endif
- xf86AccessEnter();
- was_blocked = xf86BlockSIGIO();
- }
- }
-
- for (i = 0; i < xf86NumScreens; i++)
- if (!xf86ColormapAllocatePrivates(xf86Screens[i]))
- FatalError("Cannot register DDX private keys");
-
- if (!dixRegisterPrivateKey(&xf86ScreenKeyRec, PRIVATE_SCREEN, 0) ||
- !dixRegisterPrivateKey(&xf86CreateRootWindowKeyRec, PRIVATE_SCREEN, 0))
- FatalError("Cannot register DDX private keys");
-
- for (i = 0; i < xf86NumScreens; i++) {
- xf86VGAarbiterLock(xf86Screens[i]);
- /*
- * Almost everything uses these defaults, and many of those that
- * don't, will wrap them.
- */
- xf86Screens[i]->EnableDisableFBAccess = xf86EnableDisableFBAccess;
-#ifdef XFreeXDGA
- xf86Screens[i]->SetDGAMode = xf86SetDGAMode;
-#endif
- xf86Screens[i]->DPMSSet = NULL;
- xf86Screens[i]->LoadPalette = NULL;
- xf86Screens[i]->SetOverscan = NULL;
- xf86Screens[i]->DriverFunc = NULL;
- xf86Screens[i]->pScreen = NULL;
- scr_index = AddScreen(xf86Screens[i]->ScreenInit, argc, argv);
- xf86VGAarbiterUnlock(xf86Screens[i]);
- if (scr_index == i) {
- /*
- * Hook in our ScrnInfoRec, and initialise some other pScreen
- * fields.
- */
- dixSetPrivate(&screenInfo.screens[scr_index]->devPrivates,
- xf86ScreenKey, xf86Screens[i]);
- xf86Screens[i]->pScreen = screenInfo.screens[scr_index];
- /* The driver should set this, but make sure it is set anyway */
- xf86Screens[i]->vtSema = TRUE;
- } else {
- /* This shouldn't normally happen */
- FatalError("AddScreen/ScreenInit failed for driver %d\n", i);
- }
-
- DebugF("InitOutput - xf86Screens[%d]->pScreen = %p\n",
- i, xf86Screens[i]->pScreen );
- DebugF("xf86Screens[%d]->pScreen->CreateWindow = %p\n",
- i, xf86Screens[i]->pScreen->CreateWindow );
-
- dixSetPrivate(&screenInfo.screens[scr_index]->devPrivates,
- xf86CreateRootWindowKey,
- xf86Screens[i]->pScreen->CreateWindow);
- xf86Screens[i]->pScreen->CreateWindow = xf86CreateRootWindow;
-
- if (PictureGetSubpixelOrder (xf86Screens[i]->pScreen) == SubPixelUnknown)
- {
- xf86MonPtr DDC = (xf86MonPtr)(xf86Screens[i]->monitor->DDC);
- PictureSetSubpixelOrder (xf86Screens[i]->pScreen,
- DDC ?
- (DDC->features.input_type ?
- SubPixelHorizontalRGB : SubPixelNone) :
- SubPixelUnknown);
- }
-#ifdef RANDR
- if (!xf86Info.disableRandR)
- xf86RandRInit (screenInfo.screens[scr_index]);
- xf86Msg(xf86Info.randRFrom, "RandR %s\n",
- xf86Info.disableRandR ? "disabled" : "enabled");
-#endif
- }
-
- xf86VGAarbiterWrapFunctions();
- xf86UnblockSIGIO(was_blocked);
-
- xf86InitOrigins();
-
- xf86Resetting = FALSE;
- xf86Initialising = FALSE;
-
- RegisterBlockAndWakeupHandlers((BlockHandlerProcPtr)NoopDDA, xf86Wakeup,
- NULL);
-}
-
-/*
- * InitInput --
- * Initialize all supported input devices.
- */
-
-void
-InitInput(int argc, char **argv)
-{
- InputInfoPtr* pDev;
- DeviceIntPtr dev;
-
- xf86Info.vtRequestsPending = FALSE;
-
- mieqInit();
-
- GetEventList(&xf86Events);
-
- /* Call the PreInit function for each input device instance. */
- for (pDev = xf86ConfigLayout.inputs; pDev && *pDev; pDev++) {
- /* Replace obsolete keyboard driver with kbd */
- if (!xf86NameCmp((*pDev)->driver, "keyboard")) {
- strcpy((*pDev)->driver, "kbd");
- }
-
- /* If one fails, the others will too */
- if (xf86NewInputDevice(*pDev, &dev, TRUE) == BadAlloc)
- break;
- }
-
- config_init();
-}
-
-void
-CloseInput (void)
-{
- config_fini();
-}
-
-/*
- * OsVendorInit --
- * OS/Vendor-specific initialisations. Called from OsInit(), which
- * is called by dix before establishing the well known sockets.
- */
-
-void
-OsVendorInit(void)
-{
- static Bool beenHere = FALSE;
-
- signal(SIGCHLD, SIG_DFL); /* Need to wait for child processes */
-
- if (!beenHere) {
- umask(022);
- xf86LogInit();
- }
-
- /* Set stderr to non-blocking. */
-#ifndef O_NONBLOCK
-#if defined(FNDELAY)
-#define O_NONBLOCK FNDELAY
-#elif defined(O_NDELAY)
-#define O_NONBLOCK O_NDELAY
-#endif
-
-#ifdef O_NONBLOCK
- if (!beenHere) {
- if (geteuid() == 0 && getuid() != geteuid())
- {
- int status;
-
- status = fcntl(fileno(stderr), F_GETFL, 0);
- if (status != -1) {
- fcntl(fileno(stderr), F_SETFL, status | O_NONBLOCK);
- }
- }
- }
-#endif
-#endif
-
- beenHere = TRUE;
-}
-
-/*
- * ddxGiveUp --
- * Device dependent cleanup. Called by by dix before normal server death.
- * For SYSV386 we must switch the terminal back to normal mode. No error-
- * checking here, since there should be restored as much as possible.
- */
-
-void
-ddxGiveUp(void)
-{
- int i;
-
- xf86VGAarbiterFini();
-
-#ifdef XF86PM
- if (xf86OSPMClose)
- xf86OSPMClose();
- xf86OSPMClose = NULL;
-#endif
-
- for (i = 0; i < xf86NumScreens; i++) {
- /*
- * zero all access functions to
- * trap calls when switched away.
- */
- xf86Screens[i]->vtSema = FALSE;
- }
-
-#ifdef XFreeXDGA
- DGAShutdown();
-#endif
-
- if (xorgHWOpenConsole)
- xf86CloseConsole();
-
- xf86CloseLog();
-
- /* If an unexpected signal was caught, dump a core for debugging */
- if (xf86Info.caughtSignal)
- OsAbort();
-}
-
-
-
-/*
- * AbortDDX --
- * DDX - specific abort routine. Called by AbortServer(). The attempt is
- * made to restore all original setting of the displays. Also all devices
- * are closed.
- */
-
-void
-AbortDDX(void)
-{
- int i;
-
- xf86BlockSIGIO();
-
- /*
- * try to restore the original video state
- */
-#ifdef DPMSExtension /* Turn screens back on */
- if (DPMSPowerLevel != DPMSModeOn)
- DPMSSet(serverClient, DPMSModeOn);
-#endif
- if (xf86Screens) {
- for (i = 0; i < xf86NumScreens; i++)
- if (xf86Screens[i]->vtSema) {
- /*
- * if we are aborting before ScreenInit() has finished
- * we might not have been wrapped yet. Therefore enable
- * screen explicitely.
- */
- xf86VGAarbiterLock(xf86Screens[i]);
- (xf86Screens[i]->LeaveVT)(i, 0);
- xf86VGAarbiterUnlock(xf86Screens[i]);
- }
- }
-
- xf86AccessLeave();
-
- /*
- * This is needed for an abnormal server exit, since the normal exit stuff
- * MUST also be performed (i.e. the vt must be left in a defined state)
- */
- ddxGiveUp();
-}
-
-void
-OsVendorFatalError(void)
-{
-#ifdef VENDORSUPPORT
- ErrorF("\nPlease refer to your Operating System Vendor support pages\n"
- "at %s for support on this crash.\n",VENDORSUPPORT);
-#else
- ErrorF("\nPlease consult the "XVENDORNAME" support \n"
- "\t at "__VENDORDWEBSUPPORT__"\n for help. \n");
-#endif
- if (xf86LogFile && xf86LogFileWasOpened)
- ErrorF("Please also check the log file at \"%s\" for additional "
- "information.\n", xf86LogFile);
- ErrorF("\n");
-}
-
-int
-xf86SetVerbosity(int verb)
-{
- int save = xf86Verbose;
-
- xf86Verbose = verb;
- LogSetParameter(XLOG_VERBOSITY, verb);
- return save;
-}
-
-int
-xf86SetLogVerbosity(int verb)
-{
- int save = xf86LogVerbose;
-
- xf86LogVerbose = verb;
- LogSetParameter(XLOG_FILE_VERBOSITY, verb);
- return save;
-}
-
-static void
-xf86PrintDefaultModulePath(void)
-{
- ErrorF("%s\n", DEFAULT_MODULE_PATH);
-}
-
-static void
-xf86PrintDefaultLibraryPath(void)
-{
- ErrorF("%s\n", DEFAULT_LIBRARY_PATH);
-}
-
-/*
- * ddxProcessArgument --
- * Process device-dependent command line args. Returns 0 if argument is
- * not device dependent, otherwise Count of number of elements of argv
- * that are part of a device dependent commandline option.
- *
- */
-
-/* ARGSUSED */
-int
-ddxProcessArgument(int argc, char **argv, int i)
-{
-#define CHECK_FOR_REQUIRED_ARGUMENT() \
- if (((i + 1) >= argc) || (!argv[i + 1])) { \
- ErrorF("Required argument to %s not specified\n", argv[i]); \
- UseMsg(); \
- FatalError("Required argument to %s not specified\n", argv[i]); \
- }
-
- /* First the options that are only allowed for root */
- if (!strcmp(argv[i], "-modulepath") || !strcmp(argv[i], "-logfile")) {
- if ( (geteuid() == 0) && (getuid() != 0) ) {
- FatalError("The '%s' option can only be used by root.\n", argv[i]);
- }
- else if (!strcmp(argv[i], "-modulepath"))
- {
- char *mp;
- CHECK_FOR_REQUIRED_ARGUMENT();
- mp = strdup(argv[i + 1]);
- if (!mp)
- FatalError("Can't allocate memory for ModulePath\n");
- xf86ModulePath = mp;
- xf86ModPathFrom = X_CMDLINE;
- return 2;
- }
- else if (!strcmp(argv[i], "-logfile"))
- {
- char *lf;
- CHECK_FOR_REQUIRED_ARGUMENT();
- lf = strdup(argv[i + 1]);
- if (!lf)
- FatalError("Can't allocate memory for LogFile\n");
- xf86LogFile = lf;
- xf86LogFileFrom = X_CMDLINE;
- return 2;
- }
- }
- if (!strcmp(argv[i], "-config") || !strcmp(argv[i], "-xf86config"))
- {
- CHECK_FOR_REQUIRED_ARGUMENT();
- if (getuid() != 0 && !xf86PathIsSafe(argv[i + 1])) {
- FatalError("\nInvalid argument for %s\n"
- "\tFor non-root users, the file specified with %s must be\n"
- "\ta relative path and must not contain any \"..\" elements.\n"
- "\tUsing default "__XCONFIGFILE__" search path.\n\n",
- argv[i], argv[i]);
- }
- xf86ConfigFile = argv[i + 1];
- return 2;
- }
- if (!strcmp(argv[i], "-configdir"))
- {
- CHECK_FOR_REQUIRED_ARGUMENT();
- if (getuid() != 0 && !xf86PathIsSafe(argv[i + 1])) {
- FatalError("\nInvalid argument for %s\n"
- "\tFor non-root users, the file specified with %s must be\n"
- "\ta relative path and must not contain any \"..\" elements.\n"
- "\tUsing default "__XCONFIGDIR__" search path.\n\n",
- argv[i], argv[i]);
- }
- xf86ConfigDir = argv[i + 1];
- return 2;
- }
- if (!strcmp(argv[i],"-flipPixels"))
- {
- xf86FlipPixels = TRUE;
- return 1;
- }
-#ifdef XF86VIDMODE
- if (!strcmp(argv[i],"-disableVidMode"))
- {
- xf86VidModeDisabled = TRUE;
- return 1;
- }
- if (!strcmp(argv[i],"-allowNonLocalXvidtune"))
- {
- xf86VidModeAllowNonLocal = TRUE;
- return 1;
- }
-#endif
- if (!strcmp(argv[i],"-allowMouseOpenFail"))
- {
- xf86AllowMouseOpenFail = TRUE;
- return 1;
- }
- if (!strcmp(argv[i],"-ignoreABI"))
- {
- LoaderSetOptions(LDR_OPT_ABI_MISMATCH_NONFATAL);
- return 1;
- }
- if (!strcmp(argv[i],"-verbose"))
- {
- if (++i < argc && argv[i])
- {
- char *end;
- long val;
- val = strtol(argv[i], &end, 0);
- if (*end == '\0')
- {
- xf86SetVerbosity(val);
- return 2;
- }
- }
- xf86SetVerbosity(++xf86Verbose);
- return 1;
- }
- if (!strcmp(argv[i],"-logverbose"))
- {
- if (++i < argc && argv[i])
- {
- char *end;
- long val;
- val = strtol(argv[i], &end, 0);
- if (*end == '\0')
- {
- xf86SetLogVerbosity(val);
- return 2;
- }
- }
- xf86SetLogVerbosity(++xf86LogVerbose);
- return 1;
- }
- if (!strcmp(argv[i],"-quiet"))
- {
- xf86SetVerbosity(-1);
- return 1;
- }
- if (!strcmp(argv[i],"-showconfig") || !strcmp(argv[i],"-version"))
- {
- xf86PrintBanner();
- exit(0);
- }
- if (!strcmp(argv[i],"-showDefaultModulePath"))
- {
- xf86PrintDefaultModulePath();
- exit(0);
- }
- if (!strcmp(argv[i],"-showDefaultLibPath"))
- {
- xf86PrintDefaultLibraryPath();
- exit(0);
- }
- /* Notice the -fp flag, but allow it to pass to the dix layer */
- if (!strcmp(argv[i], "-fp"))
- {
- xf86fpFlag = TRUE;
- return 0;
- }
- /* Notice the -bs flag, but allow it to pass to the dix layer */
- if (!strcmp(argv[i], "-bs"))
- {
- xf86bsDisableFlag = TRUE;
- return 0;
- }
- /* Notice the +bs flag, but allow it to pass to the dix layer */
- if (!strcmp(argv[i], "+bs"))
- {
- xf86bsEnableFlag = TRUE;
- return 0;
- }
- /* Notice the -s flag, but allow it to pass to the dix layer */
- if (!strcmp(argv[i], "-s"))
- {
- xf86sFlag = TRUE;
- return 0;
- }
- if (!strcmp(argv[i], "-pixmap24"))
- {
- xf86Pix24 = Pix24Use24;
- return 1;
- }
- if (!strcmp(argv[i], "-pixmap32"))
- {
- xf86Pix24 = Pix24Use32;
- return 1;
- }
- if (!strcmp(argv[i], "-fbbpp"))
- {
- int bpp;
- CHECK_FOR_REQUIRED_ARGUMENT();
- if (sscanf(argv[++i], "%d", &bpp) == 1)
- {
- xf86FbBpp = bpp;
- return 2;
- }
- else
- {
- ErrorF("Invalid fbbpp\n");
- return 0;
- }
- }
- if (!strcmp(argv[i], "-depth"))
- {
- int depth;
- CHECK_FOR_REQUIRED_ARGUMENT();
- if (sscanf(argv[++i], "%d", &depth) == 1)
- {
- xf86Depth = depth;
- return 2;
- }
- else
- {
- ErrorF("Invalid depth\n");
- return 0;
- }
- }
- if (!strcmp(argv[i], "-weight"))
- {
- int red, green, blue;
- CHECK_FOR_REQUIRED_ARGUMENT();
- if (sscanf(argv[++i], "%1d%1d%1d", &red, &green, &blue) == 3)
- {
- xf86Weight.red = red;
- xf86Weight.green = green;
- xf86Weight.blue = blue;
- return 2;
- }
- else
- {
- ErrorF("Invalid weighting\n");
- return 0;
- }
- }
- if (!strcmp(argv[i], "-gamma") || !strcmp(argv[i], "-rgamma") ||
- !strcmp(argv[i], "-ggamma") || !strcmp(argv[i], "-bgamma"))
- {
- double gamma;
- CHECK_FOR_REQUIRED_ARGUMENT();
- if (sscanf(argv[++i], "%lf", &gamma) == 1) {
- if (gamma < GAMMA_MIN || gamma > GAMMA_MAX) {
- ErrorF("gamma out of range, only %.2f <= gamma_value <= %.1f"
- " is valid\n", GAMMA_MIN, GAMMA_MAX);
- return 0;
- }
- if (!strcmp(argv[i-1], "-gamma"))
- xf86Gamma.red = xf86Gamma.green = xf86Gamma.blue = gamma;
- else if (!strcmp(argv[i-1], "-rgamma")) xf86Gamma.red = gamma;
- else if (!strcmp(argv[i-1], "-ggamma")) xf86Gamma.green = gamma;
- else if (!strcmp(argv[i-1], "-bgamma")) xf86Gamma.blue = gamma;
- return 2;
- }
- }
- if (!strcmp(argv[i], "-layout"))
- {
- CHECK_FOR_REQUIRED_ARGUMENT();
- xf86LayoutName = argv[++i];
- return 2;
- }
- if (!strcmp(argv[i], "-screen"))
- {
- CHECK_FOR_REQUIRED_ARGUMENT();
- xf86ScreenName = argv[++i];
- return 2;
- }
- if (!strcmp(argv[i], "-pointer"))
- {
- CHECK_FOR_REQUIRED_ARGUMENT();
- xf86PointerName = argv[++i];
- return 2;
- }
- if (!strcmp(argv[i], "-keyboard"))
- {
- CHECK_FOR_REQUIRED_ARGUMENT();
- xf86KeyboardName = argv[++i];
- return 2;
- }
- if (!strcmp(argv[i], "-nosilk"))
- {
- xf86silkenMouseDisableFlag = TRUE;
- return 1;
- }
-#ifdef HAVE_ACPI
- if (!strcmp(argv[i], "-noacpi"))
- {
- xf86acpiDisableFlag = TRUE;
- return 1;
- }
-#endif
- if (!strcmp(argv[i], "-configure"))
- {
- if (getuid() != 0 && geteuid() == 0) {
- ErrorF("The '-configure' option can only be used by root.\n");
- exit(1);
- }
- xf86DoConfigure = TRUE;
- xf86AllowMouseOpenFail = TRUE;
- return 1;
- }
- if (!strcmp(argv[i], "-showopts"))
- {
- if (getuid() != 0 && geteuid() == 0) {
- ErrorF("The '-showopts' option can only be used by root.\n");
- exit(1);
- }
- xf86DoShowOptions = TRUE;
- return 1;
- }
- if (!strcmp(argv[i], "-isolateDevice"))
- {
- CHECK_FOR_REQUIRED_ARGUMENT();
- if (strncmp(argv[++i], "PCI:", 4)) {
- FatalError("Bus types other than PCI not yet isolable\n");
- }
- xf86PciIsolateDevice(argv[i]);
- return 2;
- }
- /* Notice cmdline xkbdir, but pass to dix as well */
- if (!strcmp(argv[i], "-xkbdir"))
- {
- xf86xkbdirFlag = TRUE;
- return 0;
- }
-
- /* OS-specific processing */
- return xf86ProcessArgument(argc, argv, i);
-}
-
-/*
- * ddxUseMsg --
- * Print out correct use of device dependent commandline options.
- * Maybe the user now knows what really to do ...
- */
-
-void
-ddxUseMsg(void)
-{
- ErrorF("\n");
- ErrorF("\n");
- ErrorF("Device Dependent Usage\n");
- if (getuid() == 0 || geteuid() != 0)
- {
- ErrorF("-modulepath paths specify the module search path\n");
- ErrorF("-logfile file specify a log file name\n");
- ErrorF("-configure probe for devices and write an "__XCONFIGFILE__"\n");
- ErrorF("-showopts print available options for all installed drivers\n");
- }
- ErrorF("-config file specify a configuration file, relative to the\n");
- ErrorF(" "__XCONFIGFILE__" search path, only root can use absolute\n");
- ErrorF("-configdir dir specify a configuration directory, relative to the\n");
- ErrorF(" "__XCONFIGDIR__" search path, only root can use absolute\n");
- ErrorF("-verbose [n] verbose startup messages\n");
- ErrorF("-logverbose [n] verbose log messages\n");
- ErrorF("-quiet minimal startup messages\n");
- ErrorF("-pixmap24 use 24bpp pixmaps for depth 24\n");
- ErrorF("-pixmap32 use 32bpp pixmaps for depth 24\n");
- ErrorF("-fbbpp n set bpp for the framebuffer. Default: 8\n");
- ErrorF("-depth n set colour depth. Default: 8\n");
- ErrorF("-gamma f set gamma value (0.1 < f < 10.0) Default: 1.0\n");
- ErrorF("-rgamma f set gamma value for red phase\n");
- ErrorF("-ggamma f set gamma value for green phase\n");
- ErrorF("-bgamma f set gamma value for blue phase\n");
- ErrorF("-weight nnn set RGB weighting at 16 bpp. Default: 565\n");
- ErrorF("-layout name specify the ServerLayout section name\n");
- ErrorF("-screen name specify the Screen section name\n");
- ErrorF("-keyboard name specify the core keyboard InputDevice name\n");
- ErrorF("-pointer name specify the core pointer InputDevice name\n");
- ErrorF("-nosilk disable Silken Mouse\n");
- ErrorF("-flipPixels swap default black/white Pixel values\n");
-#ifdef XF86VIDMODE
- ErrorF("-disableVidMode disable mode adjustments with xvidtune\n");
- ErrorF("-allowNonLocalXvidtune allow xvidtune to be run as a non-local client\n");
-#endif
- ErrorF("-allowMouseOpenFail start server even if the mouse can't be initialized\n");
- ErrorF("-ignoreABI make module ABI mismatches non-fatal\n");
- ErrorF("-isolateDevice bus_id restrict device resets to bus_id (PCI only)\n");
- ErrorF("-version show the server version\n");
- ErrorF("-showDefaultModulePath show the server default module path\n");
- ErrorF("-showDefaultLibPath show the server default library path\n");
- /* OS-specific usage */
- xf86UseMsg();
- ErrorF("\n");
-}
-
-
-/*
- * xf86LoadModules iterates over a list that is being passed in.
- */
-Bool
-xf86LoadModules(char **list, pointer *optlist)
-{
- int errmaj, errmin;
- pointer opt;
- int i;
- char *name;
- Bool failed = FALSE;
-
- if (!list)
- return TRUE;
-
- for (i = 0; list[i] != NULL; i++) {
-
- /* Normalise the module name */
- name = xf86NormalizeName(list[i]);
-
- /* Skip empty names */
- if (name == NULL || *name == '\0')
- continue;
-
- /* Replace obsolete keyboard driver with kbd */
- if (!xf86NameCmp(name, "keyboard")) {
- strcpy(name, "kbd");
- }
-
- if (optlist)
- opt = optlist[i];
- else
- opt = NULL;
-
- if (!LoadModule(name, NULL, NULL, NULL, opt, NULL, &errmaj, &errmin)) {
- LoaderErrorMsg(NULL, name, errmaj, errmin);
- failed = TRUE;
- }
- free(name);
- }
- return !failed;
-}
-
-/* Pixmap format stuff */
-
-PixmapFormatPtr
-xf86GetPixFormat(ScrnInfoPtr pScrn, int depth)
-{
- int i;
- static PixmapFormatRec format; /* XXX not reentrant */
-
- /*
- * When the formats[] list initialisation isn't complete, check the
- * depth 24 pixmap config/cmdline options and screen-specified formats.
- */
-
- if (!formatsDone) {
- if (depth == 24) {
- Pix24Flags pix24 = Pix24DontCare;
-
- format.depth = 24;
- format.scanlinePad = BITMAP_SCANLINE_PAD;
- if (xf86Info.pixmap24 != Pix24DontCare)
- pix24 = xf86Info.pixmap24;
- else if (pScrn->pixmap24 != Pix24DontCare)
- pix24 = pScrn->pixmap24;
- if (pix24 == Pix24Use24)
- format.bitsPerPixel = 24;
- else
- format.bitsPerPixel = 32;
- return &format;
- }
- }
-
- for (i = 0; i < numFormats; i++)
- if (formats[i].depth == depth)
- break;
- if (i != numFormats)
- return &formats[i];
- else if (!formatsDone) {
- /* Check for screen-specified formats */
- for (i = 0; i < pScrn->numFormats; i++)
- if (pScrn->formats[i].depth == depth)
- break;
- if (i != pScrn->numFormats)
- return &pScrn->formats[i];
- }
- return NULL;
-}
-
-int
-xf86GetBppFromDepth(ScrnInfoPtr pScrn, int depth)
-{
- PixmapFormatPtr format;
-
-
- format = xf86GetPixFormat(pScrn, depth);
- if (format)
- return format->bitsPerPixel;
- else
- return 0;
-}
+/*
+ * Loosely based on code bearing the following copyright:
+ *
+ * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
+ */
+/*
+ * Copyright (c) 1992-2003 by The XFree86 Project, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name of the copyright holder(s)
+ * and author(s) shall not be used in advertising or otherwise to promote
+ * the sale, use or other dealings in this Software without prior written
+ * authorization from the copyright holder(s) and author(s).
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include <stdlib.h>
+#include <errno.h>
+
+#undef HAS_UTSNAME
+#if !defined(WIN32)
+#define HAS_UTSNAME 1
+#include <sys/utsname.h>
+#endif
+
+#include <X11/X.h>
+#include <X11/Xmd.h>
+#include <X11/Xproto.h>
+#include <X11/Xatom.h>
+#include "input.h"
+#include "servermd.h"
+#include "windowstr.h"
+#include "scrnintstr.h"
+#include "site.h"
+#include "mi.h"
+
+#include "compiler.h"
+
+#include "loaderProcs.h"
+#ifdef XFreeXDGA
+#include "dgaproc.h"
+#endif
+
+#define XF86_OS_PRIVS
+#include "xf86.h"
+#include "xf86Priv.h"
+#include "xf86Config.h"
+#include "xf86_OSlib.h"
+#include "xf86cmap.h"
+#include "xorgVersion.h"
+#include "xf86Build.h"
+#include "mipointer.h"
+#include <X11/extensions/XI.h>
+#include <X11/extensions/XIproto.h>
+#include "xf86DDC.h"
+#include "xf86Xinput.h"
+#include "xf86InPriv.h"
+#include "picturestr.h"
+
+#include "xf86Bus.h"
+#include "xf86VGAarbiter.h"
+#include "globals.h"
+
+#ifdef DPMSExtension
+#include <X11/extensions/dpmsconst.h>
+#include "dpmsproc.h"
+#endif
+#include <hotplug.h>
+
+
+#ifdef XF86PM
+void (*xf86OSPMClose)(void) = NULL;
+#endif
+static Bool xorgHWOpenConsole = FALSE;
+
+/* Common pixmap formats */
+
+static PixmapFormatRec formats[MAXFORMATS] = {
+ { 1, 1, BITMAP_SCANLINE_PAD },
+ { 4, 8, BITMAP_SCANLINE_PAD },
+ { 8, 8, BITMAP_SCANLINE_PAD },
+ { 15, 16, BITMAP_SCANLINE_PAD },
+ { 16, 16, BITMAP_SCANLINE_PAD },
+ { 24, 32, BITMAP_SCANLINE_PAD },
+ { 32, 32, BITMAP_SCANLINE_PAD },
+};
+static int numFormats = 7;
+static Bool formatsDone = FALSE;
+
+#ifndef OSNAME
+#define OSNAME " unknown"
+#endif
+#ifndef OSVENDOR
+#define OSVENDOR ""
+#endif
+#ifndef PRE_RELEASE
+#define PRE_RELEASE XORG_VERSION_SNAP
+#endif
+
+static void
+xf86PrintBanner(void)
+{
+#if PRE_RELEASE
+ xf86ErrorFVerb(0, "\n"
+ "This is a pre-release version of the X server from " XVENDORNAME ".\n"
+ "It is not supported in any way.\n"
+ "Bugs may be filed in the bugzilla at http://bugs.freedesktop.org/.\n"
+ "Select the \"xorg\" product for bugs you find in this release.\n"
+ "Before reporting bugs in pre-release versions please check the\n"
+ "latest version in the X.Org Foundation git repository.\n"
+ "See http://wiki.x.org/wiki/GitPage for git access instructions.\n");
+#endif
+ xf86ErrorFVerb(0, "\nX.Org X Server %d.%d.%d",
+ XORG_VERSION_MAJOR,
+ XORG_VERSION_MINOR,
+ XORG_VERSION_PATCH);
+#if XORG_VERSION_SNAP > 0
+ xf86ErrorFVerb(0, ".%d", XORG_VERSION_SNAP);
+#endif
+
+#if XORG_VERSION_SNAP >= 900
+ /* When the minor number is 99, that signifies that the we are making
+ * a release candidate for a major version. (X.0.0)
+ * When the patch number is 99, that signifies that the we are making
+ * a release candidate for a minor version. (X.Y.0)
+ * When the patch number is < 99, then we are making a release
+ * candidate for the next point release. (X.Y.Z)
+ */
+#if XORG_VERSION_MINOR >= 99
+ xf86ErrorFVerb(0, " (%d.0.0 RC %d)", XORG_VERSION_MAJOR+1,
+ XORG_VERSION_SNAP - 900);
+#elif XORG_VERSION_PATCH == 99
+ xf86ErrorFVerb(0, " (%d.%d.0 RC %d)", XORG_VERSION_MAJOR,
+ XORG_VERSION_MINOR + 1, XORG_VERSION_SNAP - 900);
+#else
+ xf86ErrorFVerb(0, " (%d.%d.%d RC %d)", XORG_VERSION_MAJOR,
+ XORG_VERSION_MINOR, XORG_VERSION_PATCH + 1,
+ XORG_VERSION_SNAP - 900);
+#endif
+#endif
+
+#ifdef XORG_CUSTOM_VERSION
+ xf86ErrorFVerb(0, " (%s)", XORG_CUSTOM_VERSION);
+#endif
+#ifndef XORG_DATE
+# define XORG_DATE "Unknown"
+#endif
+ xf86ErrorFVerb(0, "\nRelease Date: %s\n", XORG_DATE);
+ xf86ErrorFVerb(0, "X Protocol Version %d, Revision %d\n",
+ X_PROTOCOL, X_PROTOCOL_REVISION);
+ xf86ErrorFVerb(0, "Build Operating System: %s %s\n", OSNAME, OSVENDOR);
+#ifdef HAS_UTSNAME
+ {
+ struct utsname name;
+
+ /* Linux & BSD state that 0 is success, SysV (including Solaris, HP-UX,
+ and Irix) and Single Unix Spec 3 just say that non-negative is success.
+ All agree that failure is represented by a negative number.
+ */
+ if (uname(&name) >= 0) {
+ xf86ErrorFVerb(0, "Current Operating System: %s %s %s %s %s\n",
+ name.sysname, name.nodename, name.release, name.version, name.machine);
+#ifdef linux
+ do {
+ char buf[80];
+ int fd = open("/proc/cmdline", O_RDONLY);
+ if (fd != -1) {
+ xf86ErrorFVerb(0, "Kernel command line: ");
+ memset(buf, 0, 80);
+ while (read(fd, buf, 80) > 0) {
+ xf86ErrorFVerb(0, "%.80s", buf);
+ memset(buf, 0, 80);
+ }
+ close(fd);
+ }
+ } while (0);
+#endif
+ }
+ }
+#endif
+#if defined(BUILD_DATE) && (BUILD_DATE > 19000000)
+ {
+ struct tm t;
+ char buf[100];
+
+ memset(&t, 0, sizeof(t));
+ memset(buf, 0, sizeof(buf));
+ t.tm_mday = BUILD_DATE % 100;
+ t.tm_mon = (BUILD_DATE / 100) % 100 - 1;
+ t.tm_year = BUILD_DATE / 10000 - 1900;
+#if defined(BUILD_TIME)
+ t.tm_sec = BUILD_TIME % 100;
+ t.tm_min = (BUILD_TIME / 100) % 100;
+ t.tm_hour = (BUILD_TIME / 10000) % 100;
+ if (strftime(buf, sizeof(buf), "%d %B %Y %I:%M:%S%p", &t))
+ xf86ErrorFVerb(0, "Build Date: %s\n", buf);
+#else
+ if (strftime(buf, sizeof(buf), "%d %B %Y", &t))
+ xf86ErrorFVerb(0, "Build Date: %s\n", buf);
+#endif
+ }
+#endif
+#if defined(BUILDERSTRING)
+ xf86ErrorFVerb(0, "%s \n", BUILDERSTRING);
+#endif
+ xf86ErrorFVerb(0, "Current version of pixman: %s\n",
+ pixman_version_string());
+ xf86ErrorFVerb(0, "\tBefore reporting problems, check "
+ ""__VENDORDWEBSUPPORT__"\n"
+ "\tto make sure that you have the latest version.\n");
+}
+
+static void
+xf86PrintMarkers(void)
+{
+ LogPrintMarkers();
+}
+
+static Bool
+xf86CreateRootWindow(WindowPtr pWin)
+{
+ int ret = TRUE;
+ int err = Success;
+ ScreenPtr pScreen = pWin->drawable.pScreen;
+ RootWinPropPtr pProp;
+ CreateWindowProcPtr CreateWindow = (CreateWindowProcPtr)
+ dixLookupPrivate(&pScreen->devPrivates, xf86CreateRootWindowKey);
+
+ DebugF("xf86CreateRootWindow(%p)\n", pWin);
+
+ if ( pScreen->CreateWindow != xf86CreateRootWindow ) {
+ /* Can't find hook we are hung on */
+ xf86DrvMsg(pScreen->myNum, X_WARNING /* X_ERROR */,
+ "xf86CreateRootWindow %p called when not in pScreen->CreateWindow %p n",
+ (void *)xf86CreateRootWindow,
+ (void *)pScreen->CreateWindow );
+ }
+
+ /* Unhook this function ... */
+ pScreen->CreateWindow = CreateWindow;
+ dixSetPrivate(&pScreen->devPrivates, xf86CreateRootWindowKey, NULL);
+
+ /* ... and call the previous CreateWindow fuction, if any */
+ if (NULL!=pScreen->CreateWindow) {
+ ret = (*pScreen->CreateWindow)(pWin);
+ }
+
+ /* Now do our stuff */
+ if (xf86RegisteredPropertiesTable != NULL) {
+ if (pWin->parent == NULL && xf86RegisteredPropertiesTable != NULL) {
+ for (pProp = xf86RegisteredPropertiesTable[pScreen->myNum];
+ pProp != NULL && err==Success;
+ pProp = pProp->next )
+ {
+ Atom prop;
+
+ prop = MakeAtom(pProp->name, strlen(pProp->name), TRUE);
+ err = dixChangeWindowProperty(serverClient, pWin,
+ prop, pProp->type,
+ pProp->format, PropModeReplace,
+ pProp->size, pProp->data,
+ FALSE);
+ }
+
+ /* Look at err */
+ ret &= (err==Success);
+
+ } else {
+ xf86Msg(X_ERROR, "xf86CreateRootWindow unexpectedly called with "
+ "non-root window %p (parent %p)\n",
+ (void *)pWin, (void *)pWin->parent);
+ ret = FALSE;
+ }
+ }
+
+ DebugF("xf86CreateRootWindow() returns %d\n", ret);
+ return ret;
+}
+
+
+static void
+InstallSignalHandlers(void)
+{
+ /*
+ * Install signal handler for unexpected signals
+ */
+ xf86Info.caughtSignal=FALSE;
+ if (!xf86Info.notrapSignals) {
+ OsRegisterSigWrapper(xf86SigWrapper);
+ } else {
+ signal(SIGSEGV, SIG_DFL);
+ signal(SIGILL, SIG_DFL);
+#ifdef SIGEMT
+ signal(SIGEMT, SIG_DFL);
+#endif
+ signal(SIGFPE, SIG_DFL);
+ signal(SIGBUS, SIG_DFL);
+ signal(SIGSYS, SIG_DFL);
+ signal(SIGXCPU, SIG_DFL);
+ signal(SIGXFSZ, SIG_DFL);
+ }
+}
+
+/*
+ * InitOutput --
+ * Initialize screenInfo for all actually accessible framebuffers.
+ * That includes vt-manager setup, querying all possible devices and
+ * collecting the pixmap formats.
+ */
+void
+InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
+{
+ int i, j, k, scr_index, was_blocked = 0;
+ char **modulelist;
+ pointer *optionlist;
+ Pix24Flags screenpix24, pix24;
+ MessageType pix24From = X_DEFAULT;
+ Bool pix24Fail = FALSE;
+ Bool autoconfig = FALSE;
+ GDevPtr configured_device;
+
+ xf86Initialising = TRUE;
+
+ if (serverGeneration == 1) {
+ if ((xf86ServerName = strrchr(argv[0], '/')) != 0)
+ xf86ServerName++;
+ else
+ xf86ServerName = argv[0];
+
+ xf86PrintBanner();
+ xf86PrintMarkers();
+ if (xf86LogFile) {
+ time_t t;
+ const char *ct;
+ t = time(NULL);
+ ct = ctime(&t);
+ xf86MsgVerb(xf86LogFileFrom, 0, "Log file: \"%s\", Time: %s",
+ xf86LogFile, ct);
+ }
+
+ /* Read and parse the config file */
+ if (!xf86DoConfigure && !xf86DoShowOptions) {
+ switch (xf86HandleConfigFile(FALSE)) {
+ case CONFIG_OK:
+ break;
+ case CONFIG_PARSE_ERROR:
+ xf86Msg(X_ERROR, "Error parsing the config file\n");
+ return;
+ case CONFIG_NOFILE:
+ autoconfig = TRUE;
+ break;
+ }
+ }
+
+ InstallSignalHandlers();
+
+ /* Initialise the loader */
+ LoaderInit();
+
+ /* Tell the loader the default module search path */
+ LoaderSetPath(xf86ModulePath);
+
+ if (xf86Info.ignoreABI) {
+ LoaderSetOptions(LDR_OPT_ABI_MISMATCH_NONFATAL);
+ }
+
+ if (xf86DoShowOptions)
+ DoShowOptions();
+
+ /* Do a general bus probe. This will be a PCI probe for x86 platforms */
+ xf86BusProbe();
+
+ if (xf86DoConfigure)
+ DoConfigure();
+
+ if (autoconfig) {
+ if (!xf86AutoConfig()) {
+ xf86Msg(X_ERROR, "Auto configuration failed\n");
+ return;
+ }
+ }
+
+#ifdef XF86PM
+ xf86OSPMClose = xf86OSPMOpen();
+#endif
+
+ /* Load all modules specified explicitly in the config file */
+ if ((modulelist = xf86ModulelistFromConfig(&optionlist))) {
+ xf86LoadModules(modulelist, optionlist);
+ free(modulelist);
+ free(optionlist);
+ }
+
+ /* Load all driver modules specified in the config file */
+ /* If there aren't any specified in the config file, autoconfig them */
+ /* FIXME: Does not handle multiple active screen sections, but I'm not
+ * sure if we really want to handle that case*/
+ configured_device = xf86ConfigLayout.screens->screen->device;
+ if ((!configured_device) || (!configured_device->driver)) {
+ if (!autoConfigDevice(configured_device)) {
+ xf86Msg(X_ERROR, "Automatic driver configuration failed\n");
+ return ;
+ }
+ }
+ if ((modulelist = xf86DriverlistFromConfig())) {
+ xf86LoadModules(modulelist, NULL);
+ free(modulelist);
+ }
+
+ /* Load all input driver modules specified in the config file. */
+ if ((modulelist = xf86InputDriverlistFromConfig())) {
+ xf86LoadModules(modulelist, NULL);
+ free(modulelist);
+ }
+
+ /*
+ * It is expected that xf86AddDriver()/xf86AddInputDriver will be
+ * called for each driver as it is loaded. Those functions save the
+ * module pointers for drivers.
+ * XXX Nothing keeps track of them for other modules.
+ */
+ /* XXX What do we do if not all of these could be loaded? */
+
+ /*
+ * At this point, xf86DriverList[] is all filled in with entries for
+ * each of the drivers to try and xf86NumDrivers has the number of
+ * drivers. If there are none, return now.
+ */
+
+ if (xf86NumDrivers == 0) {
+ xf86Msg(X_ERROR, "No drivers available.\n");
+ return;
+ }
+
+ /*
+ * Call each of the Identify functions and call the driverFunc to check
+ * if HW access is required. The Identify functions print out some
+ * identifying information, and anything else that might be
+ * needed at this early stage.
+ */
+
+ for (i = 0; i < xf86NumDrivers; i++) {
+ if (xf86DriverList[i]->Identify != NULL)
+ xf86DriverList[i]->Identify(0);
+
+ if (!xorgHWAccess || !xorgHWOpenConsole) {
+ xorgHWFlags flags;
+ if(!xf86DriverList[i]->driverFunc
+ || !xf86DriverList[i]->driverFunc(NULL,
+ GET_REQUIRED_HW_INTERFACES,
+ &flags))
+ flags = HW_IO;
+
+ if(NEED_IO_ENABLED(flags))
+ xorgHWAccess = TRUE;
+ if(!(flags & HW_SKIP_CONSOLE))
+ xorgHWOpenConsole = TRUE;
+ }
+ }
+
+ if (xorgHWOpenConsole)
+ xf86OpenConsole();
+ else
+ xf86Info.dontVTSwitch = TRUE;
+
+ if (xf86BusConfig() == FALSE)
+ return;
+
+ xf86PostProbe();
+
+ /*
+ * Sort the drivers to match the requested ording. Using a slow
+ * bubble sort.
+ */
+ for (j = 0; j < xf86NumScreens - 1; j++) {
+ for (i = 0; i < xf86NumScreens - j - 1; i++) {
+ if (xf86Screens[i + 1]->confScreen->screennum <
+ xf86Screens[i]->confScreen->screennum) {
+ ScrnInfoPtr tmpScrn = xf86Screens[i + 1];
+ xf86Screens[i + 1] = xf86Screens[i];
+ xf86Screens[i] = tmpScrn;
+ }
+ }
+ }
+ /* Fix up the indexes */
+ for (i = 0; i < xf86NumScreens; i++) {
+ xf86Screens[i]->scrnIndex = i;
+ }
+
+ /*
+ * Call the driver's PreInit()'s to complete initialisation for the first
+ * generation.
+ */
+
+ for (i = 0; i < xf86NumScreens; i++) {
+ xf86VGAarbiterScrnInit(xf86Screens[i]);
+ xf86VGAarbiterLock(xf86Screens[i]);
+ if (xf86Screens[i]->PreInit &&
+ xf86Screens[i]->PreInit(xf86Screens[i], 0))
+ xf86Screens[i]->configured = TRUE;
+ xf86VGAarbiterUnlock(xf86Screens[i]);
+ }
+ for (i = 0; i < xf86NumScreens; i++)
+ if (!xf86Screens[i]->configured)
+ xf86DeleteScreen(i--, 0);
+
+ /*
+ * If no screens left, return now.
+ */
+
+ if (xf86NumScreens == 0) {
+ xf86Msg(X_ERROR,
+ "Screen(s) found, but none have a usable configuration.\n");
+ return;
+ }
+
+ for (i = 0; i < xf86NumScreens; i++) {
+ if (xf86Screens[i]->name == NULL) {
+ XNFasprintf(&xf86Screens[i]->name, "screen%d", i);
+ xf86MsgVerb(X_WARNING, 0,
+ "Screen driver %d has no name set, using `%s'.\n",
+ i, xf86Screens[i]->name);
+ }
+ }
+
+ /* Remove (unload) drivers that are not required */
+ for (i = 0; i < xf86NumDrivers; i++)
+ if (xf86DriverList[i] && xf86DriverList[i]->refCount <= 0)
+ xf86DeleteDriver(i);
+
+ /*
+ * At this stage we know how many screens there are.
+ */
+
+ for (i = 0; i < xf86NumScreens; i++)
+ xf86InitViewport(xf86Screens[i]);
+
+ /*
+ * Collect all pixmap formats and check for conflicts at the display
+ * level. Should we die here? Or just delete the offending screens?
+ */
+ screenpix24 = Pix24DontCare;
+ for (i = 0; i < xf86NumScreens; i++) {
+ if (xf86Screens[i]->imageByteOrder !=
+ xf86Screens[0]->imageByteOrder)
+ FatalError("Inconsistent display bitmapBitOrder. Exiting\n");
+ if (xf86Screens[i]->bitmapScanlinePad !=
+ xf86Screens[0]->bitmapScanlinePad)
+ FatalError("Inconsistent display bitmapScanlinePad. Exiting\n");
+ if (xf86Screens[i]->bitmapScanlineUnit !=
+ xf86Screens[0]->bitmapScanlineUnit)
+ FatalError("Inconsistent display bitmapScanlineUnit. Exiting\n");
+ if (xf86Screens[i]->bitmapBitOrder !=
+ xf86Screens[0]->bitmapBitOrder)
+ FatalError("Inconsistent display bitmapBitOrder. Exiting\n");
+
+ /* Determine the depth 24 pixmap format the screens would like */
+ if (xf86Screens[i]->pixmap24 != Pix24DontCare) {
+ if (screenpix24 == Pix24DontCare)
+ screenpix24 = xf86Screens[i]->pixmap24;
+ else if (screenpix24 != xf86Screens[i]->pixmap24)
+ FatalError("Inconsistent depth 24 pixmap format. Exiting\n");
+ }
+ }
+ /* check if screenpix24 is consistent with the config/cmdline */
+ if (xf86Info.pixmap24 != Pix24DontCare) {
+ pix24 = xf86Info.pixmap24;
+ pix24From = xf86Info.pix24From;
+ if (screenpix24 != Pix24DontCare && screenpix24 != xf86Info.pixmap24)
+ pix24Fail = TRUE;
+ } else if (screenpix24 != Pix24DontCare) {
+ pix24 = screenpix24;
+ pix24From = X_PROBED;
+ } else
+ pix24 = Pix24Use32;
+
+ if (pix24Fail)
+ FatalError("Screen(s) can't use the required depth 24 pixmap format"
+ " (%d). Exiting\n", PIX24TOBPP(pix24));
+
+ /* Initialise the depth 24 format */
+ for (j = 0; j < numFormats && formats[j].depth != 24; j++)
+ ;
+ formats[j].bitsPerPixel = PIX24TOBPP(pix24);
+
+ /* Collect additional formats */
+ for (i = 0; i < xf86NumScreens; i++) {
+ for (j = 0; j < xf86Screens[i]->numFormats; j++) {
+ for (k = 0; ; k++) {
+ if (k >= numFormats) {
+ if (k >= MAXFORMATS)
+ FatalError("Too many pixmap formats! Exiting\n");
+ formats[k] = xf86Screens[i]->formats[j];
+ numFormats++;
+ break;
+ }
+ if (formats[k].depth == xf86Screens[i]->formats[j].depth) {
+ if ((formats[k].bitsPerPixel ==
+ xf86Screens[i]->formats[j].bitsPerPixel) &&
+ (formats[k].scanlinePad ==
+ xf86Screens[i]->formats[j].scanlinePad))
+ break;
+ FatalError("Inconsistent pixmap format for depth %d."
+ " Exiting\n", formats[k].depth);
+ }
+ }
+ }
+ }
+ formatsDone = TRUE;
+
+ if (xf86Info.vtno >= 0 ) {
+#define VT_ATOM_NAME "XFree86_VT"
+ Atom VTAtom=-1;
+ CARD32 *VT = NULL;
+ int ret;
+
+ /* This memory needs to stay available until the screen has been
+ initialized, and we can create the property for real.
+ */
+ if ( (VT = malloc(sizeof(CARD32)))==NULL ) {
+ FatalError("Unable to make VT property - out of memory. Exiting...\n");
+ }
+ *VT = xf86Info.vtno;
+
+ VTAtom = MakeAtom(VT_ATOM_NAME, sizeof(VT_ATOM_NAME) - 1, TRUE);
+
+ for (i = 0, ret = Success; i < xf86NumScreens && ret == Success; i++) {
+ ret = xf86RegisterRootWindowProperty(xf86Screens[i]->scrnIndex,
+ VTAtom, XA_INTEGER, 32,
+ 1, VT );
+ if (ret != Success)
+ xf86DrvMsg(xf86Screens[i]->scrnIndex, X_WARNING,
+ "Failed to register VT property\n");
+ }
+ }
+
+ /* If a screen uses depth 24, show what the pixmap format is */
+ for (i = 0; i < xf86NumScreens; i++) {
+ if (xf86Screens[i]->depth == 24) {
+ xf86Msg(pix24From, "Depth 24 pixmap format is %d bpp\n",
+ PIX24TOBPP(pix24));
+ break;
+ }
+ }
+ } else {
+ /*
+ * serverGeneration != 1; some OSs have to do things here, too.
+ */
+ if (xorgHWOpenConsole)
+ xf86OpenConsole();
+
+#ifdef XF86PM
+ /*
+ should we reopen it here? We need to deal with an already opened
+ device. We could leave this to the OS layer. For now we simply
+ close it here
+ */
+ if (xf86OSPMClose)
+ xf86OSPMClose();
+ if ((xf86OSPMClose = xf86OSPMOpen()) != NULL)
+ xf86MsgVerb(X_INFO, 3, "APM registered successfully\n");
+#endif
+
+ /* Make sure full I/O access is enabled */
+ if (xorgHWAccess)
+ xf86EnableIO();
+ }
+
+ /*
+ * Use the previously collected parts to setup pScreenInfo
+ */
+
+ pScreenInfo->imageByteOrder = xf86Screens[0]->imageByteOrder;
+ pScreenInfo->bitmapScanlinePad = xf86Screens[0]->bitmapScanlinePad;
+ pScreenInfo->bitmapScanlineUnit = xf86Screens[0]->bitmapScanlineUnit;
+ pScreenInfo->bitmapBitOrder = xf86Screens[0]->bitmapBitOrder;
+ pScreenInfo->numPixmapFormats = numFormats;
+ for (i = 0; i < numFormats; i++)
+ pScreenInfo->formats[i] = formats[i];
+
+ /* Make sure the server's VT is active */
+
+ if (serverGeneration != 1) {
+ xf86Resetting = TRUE;
+ /* All screens are in the same state, so just check the first */
+ if (!xf86Screens[0]->vtSema) {
+#ifdef HAS_USL_VTS
+ ioctl(xf86Info.consoleFd, VT_RELDISP, VT_ACKACQ);
+#endif
+ xf86AccessEnter();
+ was_blocked = xf86BlockSIGIO();
+ }
+ }
+
+ for (i = 0; i < xf86NumScreens; i++)
+ if (!xf86ColormapAllocatePrivates(xf86Screens[i]))
+ FatalError("Cannot register DDX private keys");
+
+ if (!dixRegisterPrivateKey(&xf86ScreenKeyRec, PRIVATE_SCREEN, 0) ||
+ !dixRegisterPrivateKey(&xf86CreateRootWindowKeyRec, PRIVATE_SCREEN, 0))
+ FatalError("Cannot register DDX private keys");
+
+ for (i = 0; i < xf86NumScreens; i++) {
+ xf86VGAarbiterLock(xf86Screens[i]);
+ /*
+ * Almost everything uses these defaults, and many of those that
+ * don't, will wrap them.
+ */
+ xf86Screens[i]->EnableDisableFBAccess = xf86EnableDisableFBAccess;
+#ifdef XFreeXDGA
+ xf86Screens[i]->SetDGAMode = xf86SetDGAMode;
+#endif
+ xf86Screens[i]->DPMSSet = NULL;
+ xf86Screens[i]->LoadPalette = NULL;
+ xf86Screens[i]->SetOverscan = NULL;
+ xf86Screens[i]->DriverFunc = NULL;
+ xf86Screens[i]->pScreen = NULL;
+ scr_index = AddScreen(xf86Screens[i]->ScreenInit, argc, argv);
+ xf86VGAarbiterUnlock(xf86Screens[i]);
+ if (scr_index == i) {
+ /*
+ * Hook in our ScrnInfoRec, and initialise some other pScreen
+ * fields.
+ */
+ dixSetPrivate(&screenInfo.screens[scr_index]->devPrivates,
+ xf86ScreenKey, xf86Screens[i]);
+ xf86Screens[i]->pScreen = screenInfo.screens[scr_index];
+ /* The driver should set this, but make sure it is set anyway */
+ xf86Screens[i]->vtSema = TRUE;
+ } else {
+ /* This shouldn't normally happen */
+ FatalError("AddScreen/ScreenInit failed for driver %d\n", i);
+ }
+
+ DebugF("InitOutput - xf86Screens[%d]->pScreen = %p\n",
+ i, xf86Screens[i]->pScreen );
+ DebugF("xf86Screens[%d]->pScreen->CreateWindow = %p\n",
+ i, xf86Screens[i]->pScreen->CreateWindow );
+
+ dixSetPrivate(&screenInfo.screens[scr_index]->devPrivates,
+ xf86CreateRootWindowKey,
+ xf86Screens[i]->pScreen->CreateWindow);
+ xf86Screens[i]->pScreen->CreateWindow = xf86CreateRootWindow;
+
+ if (PictureGetSubpixelOrder (xf86Screens[i]->pScreen) == SubPixelUnknown)
+ {
+ xf86MonPtr DDC = (xf86MonPtr)(xf86Screens[i]->monitor->DDC);
+ PictureSetSubpixelOrder (xf86Screens[i]->pScreen,
+ DDC ?
+ (DDC->features.input_type ?
+ SubPixelHorizontalRGB : SubPixelNone) :
+ SubPixelUnknown);
+ }
+#ifdef RANDR
+ if (!xf86Info.disableRandR)
+ xf86RandRInit (screenInfo.screens[scr_index]);
+ xf86Msg(xf86Info.randRFrom, "RandR %s\n",
+ xf86Info.disableRandR ? "disabled" : "enabled");
+#endif
+ }
+
+ xf86VGAarbiterWrapFunctions();
+ xf86UnblockSIGIO(was_blocked);
+
+ xf86InitOrigins();
+
+ xf86Resetting = FALSE;
+ xf86Initialising = FALSE;
+
+ RegisterBlockAndWakeupHandlers((BlockHandlerProcPtr)NoopDDA, xf86Wakeup,
+ NULL);
+}
+
+/*
+ * InitInput --
+ * Initialize all supported input devices.
+ */
+
+void
+InitInput(int argc, char **argv)
+{
+ InputInfoPtr* pDev;
+ DeviceIntPtr dev;
+
+ xf86Info.vtRequestsPending = FALSE;
+
+ mieqInit();
+
+ GetEventList(&xf86Events);
+
+ /* Initialize all configured input devices */
+ for (pDev = xf86ConfigLayout.inputs; pDev && *pDev; pDev++) {
+ /* Replace obsolete keyboard driver with kbd */
+ if (!xf86NameCmp((*pDev)->driver, "keyboard")) {
+ strcpy((*pDev)->driver, "kbd");
+ }
+
+ /* If one fails, the others will too */
+ if (xf86NewInputDevice(*pDev, &dev, TRUE) == BadAlloc)
+ break;
+ }
+
+ config_init();
+}
+
+void
+CloseInput (void)
+{
+ config_fini();
+}
+
+/*
+ * OsVendorInit --
+ * OS/Vendor-specific initialisations. Called from OsInit(), which
+ * is called by dix before establishing the well known sockets.
+ */
+
+void
+OsVendorInit(void)
+{
+ static Bool beenHere = FALSE;
+
+ signal(SIGCHLD, SIG_DFL); /* Need to wait for child processes */
+
+ if (!beenHere) {
+ umask(022);
+ xf86LogInit();
+ }
+
+ /* Set stderr to non-blocking. */
+#ifndef O_NONBLOCK
+#if defined(FNDELAY)
+#define O_NONBLOCK FNDELAY
+#elif defined(O_NDELAY)
+#define O_NONBLOCK O_NDELAY
+#endif
+
+#ifdef O_NONBLOCK
+ if (!beenHere) {
+ if (geteuid() == 0 && getuid() != geteuid())
+ {
+ int status;
+
+ status = fcntl(fileno(stderr), F_GETFL, 0);
+ if (status != -1) {
+ fcntl(fileno(stderr), F_SETFL, status | O_NONBLOCK);
+ }
+ }
+ }
+#endif
+#endif
+
+ beenHere = TRUE;
+}
+
+/*
+ * ddxGiveUp --
+ * Device dependent cleanup. Called by by dix before normal server death.
+ * For SYSV386 we must switch the terminal back to normal mode. No error-
+ * checking here, since there should be restored as much as possible.
+ */
+
+void
+ddxGiveUp(void)
+{
+ int i;
+
+ xf86VGAarbiterFini();
+
+#ifdef XF86PM
+ if (xf86OSPMClose)
+ xf86OSPMClose();
+ xf86OSPMClose = NULL;
+#endif
+
+ for (i = 0; i < xf86NumScreens; i++) {
+ /*
+ * zero all access functions to
+ * trap calls when switched away.
+ */
+ xf86Screens[i]->vtSema = FALSE;
+ }
+
+#ifdef XFreeXDGA
+ DGAShutdown();
+#endif
+
+ if (xorgHWOpenConsole)
+ xf86CloseConsole();
+
+ xf86CloseLog();
+
+ /* If an unexpected signal was caught, dump a core for debugging */
+ if (xf86Info.caughtSignal)
+ OsAbort();
+}
+
+
+
+/*
+ * AbortDDX --
+ * DDX - specific abort routine. Called by AbortServer(). The attempt is
+ * made to restore all original setting of the displays. Also all devices
+ * are closed.
+ */
+
+void
+AbortDDX(void)
+{
+ int i;
+
+ xf86BlockSIGIO();
+
+ /*
+ * try to restore the original video state
+ */
+#ifdef DPMSExtension /* Turn screens back on */
+ if (DPMSPowerLevel != DPMSModeOn)
+ DPMSSet(serverClient, DPMSModeOn);
+#endif
+ if (xf86Screens) {
+ for (i = 0; i < xf86NumScreens; i++)
+ if (xf86Screens[i]->vtSema) {
+ /*
+ * if we are aborting before ScreenInit() has finished
+ * we might not have been wrapped yet. Therefore enable
+ * screen explicitely.
+ */
+ xf86VGAarbiterLock(xf86Screens[i]);
+ (xf86Screens[i]->LeaveVT)(i, 0);
+ xf86VGAarbiterUnlock(xf86Screens[i]);
+ }
+ }
+
+ xf86AccessLeave();
+
+ /*
+ * This is needed for an abnormal server exit, since the normal exit stuff
+ * MUST also be performed (i.e. the vt must be left in a defined state)
+ */
+ ddxGiveUp();
+}
+
+void
+OsVendorFatalError(void)
+{
+#ifdef VENDORSUPPORT
+ ErrorF("\nPlease refer to your Operating System Vendor support pages\n"
+ "at %s for support on this crash.\n",VENDORSUPPORT);
+#else
+ ErrorF("\nPlease consult the "XVENDORNAME" support \n"
+ "\t at "__VENDORDWEBSUPPORT__"\n for help. \n");
+#endif
+ if (xf86LogFile && xf86LogFileWasOpened)
+ ErrorF("Please also check the log file at \"%s\" for additional "
+ "information.\n", xf86LogFile);
+ ErrorF("\n");
+}
+
+int
+xf86SetVerbosity(int verb)
+{
+ int save = xf86Verbose;
+
+ xf86Verbose = verb;
+ LogSetParameter(XLOG_VERBOSITY, verb);
+ return save;
+}
+
+int
+xf86SetLogVerbosity(int verb)
+{
+ int save = xf86LogVerbose;
+
+ xf86LogVerbose = verb;
+ LogSetParameter(XLOG_FILE_VERBOSITY, verb);
+ return save;
+}
+
+static void
+xf86PrintDefaultModulePath(void)
+{
+ ErrorF("%s\n", DEFAULT_MODULE_PATH);
+}
+
+static void
+xf86PrintDefaultLibraryPath(void)
+{
+ ErrorF("%s\n", DEFAULT_LIBRARY_PATH);
+}
+
+/*
+ * ddxProcessArgument --
+ * Process device-dependent command line args. Returns 0 if argument is
+ * not device dependent, otherwise Count of number of elements of argv
+ * that are part of a device dependent commandline option.
+ *
+ */
+
+/* ARGSUSED */
+int
+ddxProcessArgument(int argc, char **argv, int i)
+{
+#define CHECK_FOR_REQUIRED_ARGUMENT() \
+ if (((i + 1) >= argc) || (!argv[i + 1])) { \
+ ErrorF("Required argument to %s not specified\n", argv[i]); \
+ UseMsg(); \
+ FatalError("Required argument to %s not specified\n", argv[i]); \
+ }
+
+ /* First the options that are only allowed for root */
+ if (!strcmp(argv[i], "-modulepath") || !strcmp(argv[i], "-logfile")) {
+ if ( (geteuid() == 0) && (getuid() != 0) ) {
+ FatalError("The '%s' option can only be used by root.\n", argv[i]);
+ }
+ else if (!strcmp(argv[i], "-modulepath"))
+ {
+ char *mp;
+ CHECK_FOR_REQUIRED_ARGUMENT();
+ mp = strdup(argv[i + 1]);
+ if (!mp)
+ FatalError("Can't allocate memory for ModulePath\n");
+ xf86ModulePath = mp;
+ xf86ModPathFrom = X_CMDLINE;
+ return 2;
+ }
+ else if (!strcmp(argv[i], "-logfile"))
+ {
+ char *lf;
+ CHECK_FOR_REQUIRED_ARGUMENT();
+ lf = strdup(argv[i + 1]);
+ if (!lf)
+ FatalError("Can't allocate memory for LogFile\n");
+ xf86LogFile = lf;
+ xf86LogFileFrom = X_CMDLINE;
+ return 2;
+ }
+ }
+ if (!strcmp(argv[i], "-config") || !strcmp(argv[i], "-xf86config"))
+ {
+ CHECK_FOR_REQUIRED_ARGUMENT();
+ if (getuid() != 0 && !xf86PathIsSafe(argv[i + 1])) {
+ FatalError("\nInvalid argument for %s\n"
+ "\tFor non-root users, the file specified with %s must be\n"
+ "\ta relative path and must not contain any \"..\" elements.\n"
+ "\tUsing default "__XCONFIGFILE__" search path.\n\n",
+ argv[i], argv[i]);
+ }
+ xf86ConfigFile = argv[i + 1];
+ return 2;
+ }
+ if (!strcmp(argv[i], "-configdir"))
+ {
+ CHECK_FOR_REQUIRED_ARGUMENT();
+ if (getuid() != 0 && !xf86PathIsSafe(argv[i + 1])) {
+ FatalError("\nInvalid argument for %s\n"
+ "\tFor non-root users, the file specified with %s must be\n"
+ "\ta relative path and must not contain any \"..\" elements.\n"
+ "\tUsing default "__XCONFIGDIR__" search path.\n\n",
+ argv[i], argv[i]);
+ }
+ xf86ConfigDir = argv[i + 1];
+ return 2;
+ }
+ if (!strcmp(argv[i],"-flipPixels"))
+ {
+ xf86FlipPixels = TRUE;
+ return 1;
+ }
+#ifdef XF86VIDMODE
+ if (!strcmp(argv[i],"-disableVidMode"))
+ {
+ xf86VidModeDisabled = TRUE;
+ return 1;
+ }
+ if (!strcmp(argv[i],"-allowNonLocalXvidtune"))
+ {
+ xf86VidModeAllowNonLocal = TRUE;
+ return 1;
+ }
+#endif
+ if (!strcmp(argv[i],"-allowMouseOpenFail"))
+ {
+ xf86AllowMouseOpenFail = TRUE;
+ return 1;
+ }
+ if (!strcmp(argv[i],"-ignoreABI"))
+ {
+ LoaderSetOptions(LDR_OPT_ABI_MISMATCH_NONFATAL);
+ return 1;
+ }
+ if (!strcmp(argv[i],"-verbose"))
+ {
+ if (++i < argc && argv[i])
+ {
+ char *end;
+ long val;
+ val = strtol(argv[i], &end, 0);
+ if (*end == '\0')
+ {
+ xf86SetVerbosity(val);
+ return 2;
+ }
+ }
+ xf86SetVerbosity(++xf86Verbose);
+ return 1;
+ }
+ if (!strcmp(argv[i],"-logverbose"))
+ {
+ if (++i < argc && argv[i])
+ {
+ char *end;
+ long val;
+ val = strtol(argv[i], &end, 0);
+ if (*end == '\0')
+ {
+ xf86SetLogVerbosity(val);
+ return 2;
+ }
+ }
+ xf86SetLogVerbosity(++xf86LogVerbose);
+ return 1;
+ }
+ if (!strcmp(argv[i],"-quiet"))
+ {
+ xf86SetVerbosity(-1);
+ return 1;
+ }
+ if (!strcmp(argv[i],"-showconfig") || !strcmp(argv[i],"-version"))
+ {
+ xf86PrintBanner();
+ exit(0);
+ }
+ if (!strcmp(argv[i],"-showDefaultModulePath"))
+ {
+ xf86PrintDefaultModulePath();
+ exit(0);
+ }
+ if (!strcmp(argv[i],"-showDefaultLibPath"))
+ {
+ xf86PrintDefaultLibraryPath();
+ exit(0);
+ }
+ /* Notice the -fp flag, but allow it to pass to the dix layer */
+ if (!strcmp(argv[i], "-fp"))
+ {
+ xf86fpFlag = TRUE;
+ return 0;
+ }
+ /* Notice the -bs flag, but allow it to pass to the dix layer */
+ if (!strcmp(argv[i], "-bs"))
+ {
+ xf86bsDisableFlag = TRUE;
+ return 0;
+ }
+ /* Notice the +bs flag, but allow it to pass to the dix layer */
+ if (!strcmp(argv[i], "+bs"))
+ {
+ xf86bsEnableFlag = TRUE;
+ return 0;
+ }
+ /* Notice the -s flag, but allow it to pass to the dix layer */
+ if (!strcmp(argv[i], "-s"))
+ {
+ xf86sFlag = TRUE;
+ return 0;
+ }
+ if (!strcmp(argv[i], "-pixmap24"))
+ {
+ xf86Pix24 = Pix24Use24;
+ return 1;
+ }
+ if (!strcmp(argv[i], "-pixmap32"))
+ {
+ xf86Pix24 = Pix24Use32;
+ return 1;
+ }
+ if (!strcmp(argv[i], "-fbbpp"))
+ {
+ int bpp;
+ CHECK_FOR_REQUIRED_ARGUMENT();
+ if (sscanf(argv[++i], "%d", &bpp) == 1)
+ {
+ xf86FbBpp = bpp;
+ return 2;
+ }
+ else
+ {
+ ErrorF("Invalid fbbpp\n");
+ return 0;
+ }
+ }
+ if (!strcmp(argv[i], "-depth"))
+ {
+ int depth;
+ CHECK_FOR_REQUIRED_ARGUMENT();
+ if (sscanf(argv[++i], "%d", &depth) == 1)
+ {
+ xf86Depth = depth;
+ return 2;
+ }
+ else
+ {
+ ErrorF("Invalid depth\n");
+ return 0;
+ }
+ }
+ if (!strcmp(argv[i], "-weight"))
+ {
+ int red, green, blue;
+ CHECK_FOR_REQUIRED_ARGUMENT();
+ if (sscanf(argv[++i], "%1d%1d%1d", &red, &green, &blue) == 3)
+ {
+ xf86Weight.red = red;
+ xf86Weight.green = green;
+ xf86Weight.blue = blue;
+ return 2;
+ }
+ else
+ {
+ ErrorF("Invalid weighting\n");
+ return 0;
+ }
+ }
+ if (!strcmp(argv[i], "-gamma") || !strcmp(argv[i], "-rgamma") ||
+ !strcmp(argv[i], "-ggamma") || !strcmp(argv[i], "-bgamma"))
+ {
+ double gamma;
+ CHECK_FOR_REQUIRED_ARGUMENT();
+ if (sscanf(argv[++i], "%lf", &gamma) == 1) {
+ if (gamma < GAMMA_MIN || gamma > GAMMA_MAX) {
+ ErrorF("gamma out of range, only %.2f <= gamma_value <= %.1f"
+ " is valid\n", GAMMA_MIN, GAMMA_MAX);
+ return 0;
+ }
+ if (!strcmp(argv[i-1], "-gamma"))
+ xf86Gamma.red = xf86Gamma.green = xf86Gamma.blue = gamma;
+ else if (!strcmp(argv[i-1], "-rgamma")) xf86Gamma.red = gamma;
+ else if (!strcmp(argv[i-1], "-ggamma")) xf86Gamma.green = gamma;
+ else if (!strcmp(argv[i-1], "-bgamma")) xf86Gamma.blue = gamma;
+ return 2;
+ }
+ }
+ if (!strcmp(argv[i], "-layout"))
+ {
+ CHECK_FOR_REQUIRED_ARGUMENT();
+ xf86LayoutName = argv[++i];
+ return 2;
+ }
+ if (!strcmp(argv[i], "-screen"))
+ {
+ CHECK_FOR_REQUIRED_ARGUMENT();
+ xf86ScreenName = argv[++i];
+ return 2;
+ }
+ if (!strcmp(argv[i], "-pointer"))
+ {
+ CHECK_FOR_REQUIRED_ARGUMENT();
+ xf86PointerName = argv[++i];
+ return 2;
+ }
+ if (!strcmp(argv[i], "-keyboard"))
+ {
+ CHECK_FOR_REQUIRED_ARGUMENT();
+ xf86KeyboardName = argv[++i];
+ return 2;
+ }
+ if (!strcmp(argv[i], "-nosilk"))
+ {
+ xf86silkenMouseDisableFlag = TRUE;
+ return 1;
+ }
+#ifdef HAVE_ACPI
+ if (!strcmp(argv[i], "-noacpi"))
+ {
+ xf86acpiDisableFlag = TRUE;
+ return 1;
+ }
+#endif
+ if (!strcmp(argv[i], "-configure"))
+ {
+ if (getuid() != 0 && geteuid() == 0) {
+ ErrorF("The '-configure' option can only be used by root.\n");
+ exit(1);
+ }
+ xf86DoConfigure = TRUE;
+ xf86AllowMouseOpenFail = TRUE;
+ return 1;
+ }
+ if (!strcmp(argv[i], "-showopts"))
+ {
+ if (getuid() != 0 && geteuid() == 0) {
+ ErrorF("The '-showopts' option can only be used by root.\n");
+ exit(1);
+ }
+ xf86DoShowOptions = TRUE;
+ return 1;
+ }
+ if (!strcmp(argv[i], "-isolateDevice"))
+ {
+ CHECK_FOR_REQUIRED_ARGUMENT();
+ if (strncmp(argv[++i], "PCI:", 4)) {
+ FatalError("Bus types other than PCI not yet isolable\n");
+ }
+ xf86PciIsolateDevice(argv[i]);
+ return 2;
+ }
+ /* Notice cmdline xkbdir, but pass to dix as well */
+ if (!strcmp(argv[i], "-xkbdir"))
+ {
+ xf86xkbdirFlag = TRUE;
+ return 0;
+ }
+
+ /* OS-specific processing */
+ return xf86ProcessArgument(argc, argv, i);
+}
+
+/*
+ * ddxUseMsg --
+ * Print out correct use of device dependent commandline options.
+ * Maybe the user now knows what really to do ...
+ */
+
+void
+ddxUseMsg(void)
+{
+ ErrorF("\n");
+ ErrorF("\n");
+ ErrorF("Device Dependent Usage\n");
+ if (getuid() == 0 || geteuid() != 0)
+ {
+ ErrorF("-modulepath paths specify the module search path\n");
+ ErrorF("-logfile file specify a log file name\n");
+ ErrorF("-configure probe for devices and write an "__XCONFIGFILE__"\n");
+ ErrorF("-showopts print available options for all installed drivers\n");
+ }
+ ErrorF("-config file specify a configuration file, relative to the\n");
+ ErrorF(" "__XCONFIGFILE__" search path, only root can use absolute\n");
+ ErrorF("-configdir dir specify a configuration directory, relative to the\n");
+ ErrorF(" "__XCONFIGDIR__" search path, only root can use absolute\n");
+ ErrorF("-verbose [n] verbose startup messages\n");
+ ErrorF("-logverbose [n] verbose log messages\n");
+ ErrorF("-quiet minimal startup messages\n");
+ ErrorF("-pixmap24 use 24bpp pixmaps for depth 24\n");
+ ErrorF("-pixmap32 use 32bpp pixmaps for depth 24\n");
+ ErrorF("-fbbpp n set bpp for the framebuffer. Default: 8\n");
+ ErrorF("-depth n set colour depth. Default: 8\n");
+ ErrorF("-gamma f set gamma value (0.1 < f < 10.0) Default: 1.0\n");
+ ErrorF("-rgamma f set gamma value for red phase\n");
+ ErrorF("-ggamma f set gamma value for green phase\n");
+ ErrorF("-bgamma f set gamma value for blue phase\n");
+ ErrorF("-weight nnn set RGB weighting at 16 bpp. Default: 565\n");
+ ErrorF("-layout name specify the ServerLayout section name\n");
+ ErrorF("-screen name specify the Screen section name\n");
+ ErrorF("-keyboard name specify the core keyboard InputDevice name\n");
+ ErrorF("-pointer name specify the core pointer InputDevice name\n");
+ ErrorF("-nosilk disable Silken Mouse\n");
+ ErrorF("-flipPixels swap default black/white Pixel values\n");
+#ifdef XF86VIDMODE
+ ErrorF("-disableVidMode disable mode adjustments with xvidtune\n");
+ ErrorF("-allowNonLocalXvidtune allow xvidtune to be run as a non-local client\n");
+#endif
+ ErrorF("-allowMouseOpenFail start server even if the mouse can't be initialized\n");
+ ErrorF("-ignoreABI make module ABI mismatches non-fatal\n");
+ ErrorF("-isolateDevice bus_id restrict device resets to bus_id (PCI only)\n");
+ ErrorF("-version show the server version\n");
+ ErrorF("-showDefaultModulePath show the server default module path\n");
+ ErrorF("-showDefaultLibPath show the server default library path\n");
+ /* OS-specific usage */
+ xf86UseMsg();
+ ErrorF("\n");
+}
+
+
+/*
+ * xf86LoadModules iterates over a list that is being passed in.
+ */
+Bool
+xf86LoadModules(char **list, pointer *optlist)
+{
+ int errmaj, errmin;
+ pointer opt;
+ int i;
+ char *name;
+ Bool failed = FALSE;
+
+ if (!list)
+ return TRUE;
+
+ for (i = 0; list[i] != NULL; i++) {
+
+ /* Normalise the module name */
+ name = xf86NormalizeName(list[i]);
+
+ /* Skip empty names */
+ if (name == NULL || *name == '\0')
+ continue;
+
+ /* Replace obsolete keyboard driver with kbd */
+ if (!xf86NameCmp(name, "keyboard")) {
+ strcpy(name, "kbd");
+ }
+
+ if (optlist)
+ opt = optlist[i];
+ else
+ opt = NULL;
+
+ if (!LoadModule(name, NULL, NULL, NULL, opt, NULL, &errmaj, &errmin)) {
+ LoaderErrorMsg(NULL, name, errmaj, errmin);
+ failed = TRUE;
+ }
+ free(name);
+ }
+ return !failed;
+}
+
+/* Pixmap format stuff */
+
+PixmapFormatPtr
+xf86GetPixFormat(ScrnInfoPtr pScrn, int depth)
+{
+ int i;
+ static PixmapFormatRec format; /* XXX not reentrant */
+
+ /*
+ * When the formats[] list initialisation isn't complete, check the
+ * depth 24 pixmap config/cmdline options and screen-specified formats.
+ */
+
+ if (!formatsDone) {
+ if (depth == 24) {
+ Pix24Flags pix24 = Pix24DontCare;
+
+ format.depth = 24;
+ format.scanlinePad = BITMAP_SCANLINE_PAD;
+ if (xf86Info.pixmap24 != Pix24DontCare)
+ pix24 = xf86Info.pixmap24;
+ else if (pScrn->pixmap24 != Pix24DontCare)
+ pix24 = pScrn->pixmap24;
+ if (pix24 == Pix24Use24)
+ format.bitsPerPixel = 24;
+ else
+ format.bitsPerPixel = 32;
+ return &format;
+ }
+ }
+
+ for (i = 0; i < numFormats; i++)
+ if (formats[i].depth == depth)
+ break;
+ if (i != numFormats)
+ return &formats[i];
+ else if (!formatsDone) {
+ /* Check for screen-specified formats */
+ for (i = 0; i < pScrn->numFormats; i++)
+ if (pScrn->formats[i].depth == depth)
+ break;
+ if (i != pScrn->numFormats)
+ return &pScrn->formats[i];
+ }
+ return NULL;
+}
+
+int
+xf86GetBppFromDepth(ScrnInfoPtr pScrn, int depth)
+{
+ PixmapFormatPtr format;
+
+
+ format = xf86GetPixFormat(pScrn, depth);
+ if (format)
+ return format->bitsPerPixel;
+ else
+ return 0;
+}
diff --git a/xorg-server/hw/xfree86/common/xf86VidMode.c b/xorg-server/hw/xfree86/common/xf86VidMode.c
index 591c338b1..eb29fd09e 100644
--- a/xorg-server/hw/xfree86/common/xf86VidMode.c
+++ b/xorg-server/hw/xfree86/common/xf86VidMode.c
@@ -634,7 +634,7 @@ VidModeSetModeValue(pointer mode, int valtyp, int val)
vidMonitorValue
VidModeGetMonitorValue(pointer monitor, int valtyp, int indx)
{
- vidMonitorValue ret;
+ vidMonitorValue ret = { NULL, };
switch (valtyp) {
case VIDMODE_MON_VENDOR:
diff --git a/xorg-server/hw/xfree86/common/xf86xv.c b/xorg-server/hw/xfree86/common/xf86xv.c
index 9f62a8397..8115075b3 100644
--- a/xorg-server/hw/xfree86/common/xf86xv.c
+++ b/xorg-server/hw/xfree86/common/xf86xv.c
@@ -97,8 +97,11 @@ static int xf86XVQueryImageAttributes(ClientPtr, XvPortPtr, XvImagePtr,
static Bool xf86XVDestroyWindow(WindowPtr pWin);
static void xf86XVWindowExposures(WindowPtr pWin, RegionPtr r1, RegionPtr r2);
+static void xf86XVPostValidateTree(WindowPtr pWin, WindowPtr pLayerWin, VTKind kind);
static void xf86XVClipNotify(WindowPtr pWin, int dx, int dy);
+#define PostValidateTreeUndefined ((PostValidateTreeProcPtr)-1)
+
/* ScrnInfoRec functions */
static Bool xf86XVEnterVT(int, int);
@@ -280,10 +283,9 @@ xf86XVScreenInit(
pScrn = xf86Screens[pScreen->myNum];
- ScreenPriv->videoGC = NULL; /* for the helper */
-
ScreenPriv->DestroyWindow = pScreen->DestroyWindow;
ScreenPriv->WindowExposures = pScreen->WindowExposures;
+ ScreenPriv->PostValidateTree = PostValidateTreeUndefined;
ScreenPriv->ClipNotify = pScreen->ClipNotify;
ScreenPriv->EnterVT = pScrn->EnterVT;
ScreenPriv->LeaveVT = pScrn->LeaveVT;
@@ -333,6 +335,8 @@ xf86XVFreeAdaptor(XvAdaptorPtr pAdaptor)
RegionDestroy(pPriv->clientClip);
if(pPriv->pCompositeClip && pPriv->FreeCompositeClip)
RegionDestroy(pPriv->pCompositeClip);
+ if (pPriv->ckeyFilled)
+ RegionDestroy(pPriv->ckeyFilled);
free(pPriv);
}
}
@@ -1018,7 +1022,6 @@ static void
xf86XVRemovePortFromWindow(WindowPtr pWin, XvPortRecPrivatePtr portPriv)
{
XF86XVWindowPtr winPriv, prevPriv = NULL;
-
winPriv = GET_XF86XV_WINDOW(pWin);
while(winPriv) {
@@ -1035,6 +1038,11 @@ xf86XVRemovePortFromWindow(WindowPtr pWin, XvPortRecPrivatePtr portPriv)
winPriv = winPriv->next;
}
portPriv->pDraw = NULL;
+ if (portPriv->ckeyFilled) {
+ RegionDestroy(portPriv->ckeyFilled);
+ portPriv->ckeyFilled = NULL;
+ }
+ portPriv->clipChanged = FALSE;
}
static void
@@ -1069,7 +1077,7 @@ xf86XVReputOrStopPort(XvPortRecPrivatePtr pPriv,
}
static void
-xf86XVReputOrStopAllPorts(ScrnInfoPtr pScrn)
+xf86XVReputOrStopAllPorts(ScrnInfoPtr pScrn, Bool onlyChanged)
{
ScreenPtr pScreen = pScrn->pScreen;
XvScreenPtr pxvs = GET_XV_SCREEN(pScreen);
@@ -1087,6 +1095,9 @@ xf86XVReputOrStopAllPorts(ScrnInfoPtr pScrn)
if (pPriv->isOn == XV_OFF || !pWin)
continue;
+ if (onlyChanged && !pPriv->clipChanged)
+ continue;
+
visible = pWin->visibility == VisibilityUnobscured ||
pWin->visibility == VisibilityPartiallyObscured;
@@ -1098,6 +1109,8 @@ xf86XVReputOrStopAllPorts(ScrnInfoPtr pScrn)
visible = FALSE;
xf86XVReputOrStopPort(pPriv, pWin, visible);
+
+ pPriv->clipChanged = FALSE;
}
}
}
@@ -1123,9 +1136,6 @@ xf86XVDestroyWindow(WindowPtr pWin)
pPriv->pDraw = NULL;
tmp = WinPriv;
- if(WinPriv->pGC) {
- FreeGC(WinPriv->pGC, 0);
- }
WinPriv = WinPriv->next;
free(tmp);
}
@@ -1139,6 +1149,29 @@ xf86XVDestroyWindow(WindowPtr pWin)
return ret;
}
+static void
+xf86XVPostValidateTree(WindowPtr pWin, WindowPtr pLayerWin, VTKind kind)
+{
+ ScreenPtr pScreen;
+ XF86XVScreenPtr ScreenPriv;
+ ScrnInfoPtr pScrn;
+
+ if (pWin)
+ pScreen = pWin->drawable.pScreen;
+ else
+ pScreen = pLayerWin->drawable.pScreen;
+
+ ScreenPriv = GET_XF86XV_SCREEN(pScreen);
+ pScrn = xf86Screens[pScreen->myNum];
+
+ xf86XVReputOrStopAllPorts(pScrn, TRUE);
+
+ pScreen->PostValidateTree = ScreenPriv->PostValidateTree;
+ if (pScreen->PostValidateTree) {
+ (*pScreen->PostValidateTree)(pWin, pLayerWin, kind);
+ }
+ ScreenPriv->PostValidateTree = PostValidateTreeUndefined;
+}
static void
xf86XVWindowExposures(WindowPtr pWin, RegionPtr reg1, RegionPtr reg2)
@@ -1170,12 +1203,28 @@ xf86XVWindowExposures(WindowPtr pWin, RegionPtr reg1, RegionPtr reg2)
if (!pPriv->type && !pPriv->AdaptorRec->ReputImage)
visible = !AreasExposed;
+ /*
+ * Subtract exposed areas from overlaid image to match textured video
+ * behavior.
+ */
+ if (!pPriv->type && pPriv->clientClip)
+ RegionSubtract(pPriv->clientClip, pPriv->clientClip, reg1);
+
+ if (visible && pPriv->ckeyFilled) {
+ RegionRec tmp;
+ RegionNull(&tmp);
+ RegionCopy(&tmp, reg1);
+ RegionTranslate(&tmp, pWin->drawable.x, pWin->drawable.y);
+ RegionSubtract(pPriv->ckeyFilled, pPriv->ckeyFilled, &tmp);
+ }
+
WinPriv = WinPriv->next;
xf86XVReputOrStopPort(pPriv, pWin, visible);
+
+ pPriv->clipChanged = FALSE;
}
}
-
static void
xf86XVClipNotify(WindowPtr pWin, int dx, int dy)
{
@@ -1185,9 +1234,6 @@ xf86XVClipNotify(WindowPtr pWin, int dx, int dy)
XvPortRecPrivatePtr pPriv;
while(WinPriv) {
- Bool visible = pWin->visibility == VisibilityUnobscured ||
- pWin->visibility == VisibilityPartiallyObscured;
-
pPriv = WinPriv->PortRec;
if(pPriv->pCompositeClip && pPriv->FreeCompositeClip)
@@ -1199,15 +1245,14 @@ xf86XVClipNotify(WindowPtr pWin, int dx, int dy)
(*pPriv->AdaptorRec->ClipNotify)(pPriv->pScrn, pPriv->DevPriv.ptr,
pWin, dx, dy);
- /*
- * Stop and remove still/images if
- * ReputImage isn't supported.
- */
- if (!pPriv->type && !pPriv->AdaptorRec->ReputImage)
- visible = FALSE;
+ pPriv->clipChanged = TRUE;
+
+ if (ScreenPriv->PostValidateTree == PostValidateTreeUndefined) {
+ ScreenPriv->PostValidateTree = pScreen->PostValidateTree;
+ pScreen->PostValidateTree = xf86XVPostValidateTree;
+ }
WinPriv = WinPriv->next;
- xf86XVReputOrStopPort(pPriv, pWin, visible);
}
if(ScreenPriv->ClipNotify) {
@@ -1232,11 +1277,6 @@ xf86XVCloseScreen(int i, ScreenPtr pScreen)
if(!ScreenPriv) return TRUE;
- if(ScreenPriv->videoGC) {
- FreeGC(ScreenPriv->videoGC, 0);
- ScreenPriv->videoGC = NULL;
- }
-
pScreen->DestroyWindow = ScreenPriv->DestroyWindow;
pScreen->WindowExposures = ScreenPriv->WindowExposures;
pScreen->ClipNotify = ScreenPriv->ClipNotify;
@@ -1345,7 +1385,7 @@ xf86XVAdjustFrame(int index, int x, int y, int flags)
pScrn->AdjustFrame = xf86XVAdjustFrame;
}
- xf86XVReputOrStopAllPorts(pScrn);
+ xf86XVReputOrStopAllPorts(pScrn, FALSE);
}
static void
@@ -1366,7 +1406,7 @@ xf86XVModeSet(ScrnInfoPtr pScrn)
pScrn->ModeSet = xf86XVModeSet;
}
- xf86XVReputOrStopAllPorts(pScrn);
+ xf86XVReputOrStopAllPorts(pScrn, FALSE);
}
/**** XvAdaptorRec fields ****/
@@ -1869,92 +1909,92 @@ xf86XVQueryImageAttributes(
format->id, width, height, pitches, offsets);
}
-
void
-xf86XVFillKeyHelperDrawable (DrawablePtr pDraw, CARD32 key, RegionPtr clipboxes)
+xf86XVFillKeyHelperDrawable (DrawablePtr pDraw, CARD32 key, RegionPtr fillboxes)
{
ScreenPtr pScreen = pDraw->pScreen;
- WindowPtr pWin = (WindowPtr)pDraw;
- XF86XVWindowPtr pPriv = GET_XF86XV_WINDOW(pWin);
- GCPtr pGC = NULL;
- BoxPtr pbox = RegionRects(clipboxes);
- int i, nbox = RegionNumRects(clipboxes);
- xRectangle *rects;
-
- if(!xf86Screens[pScreen->myNum]->vtSema) return;
-
- if(pPriv)
- pGC = pPriv->pGC;
-
- if(!pGC) {
- int status;
- XID pval[2];
- pval[0] = key;
- pval[1] = IncludeInferiors;
- pGC = CreateGC(pDraw, GCForeground | GCSubwindowMode, pval, &status,
- (XID)0, serverClient);
- if(!pGC) return;
- ValidateGC(pDraw, pGC);
- if (pPriv) pPriv->pGC = pGC;
- } else if (key != pGC->fgPixel){
- ChangeGCVal val;
- val.val = key;
- ChangeGC(NullClient, pGC, GCForeground, &val);
- ValidateGC(pDraw, pGC);
- }
-
- RegionTranslate(clipboxes, -pDraw->x, -pDraw->y);
-
- rects = malloc(nbox * sizeof(xRectangle));
-
- for(i = 0; i < nbox; i++, pbox++) {
- rects[i].x = pbox->x1;
- rects[i].y = pbox->y1;
- rects[i].width = pbox->x2 - pbox->x1;
- rects[i].height = pbox->y2 - pbox->y1;
- }
-
- (*pGC->ops->PolyFillRect)(pDraw, pGC, nbox, rects);
-
- if (!pPriv) FreeGC(pGC, 0);
-
- free(rects);
-}
-
-void
-xf86XVFillKeyHelper (ScreenPtr pScreen, CARD32 key, RegionPtr clipboxes)
-{
- DrawablePtr root = &pScreen->root->drawable;
ChangeGCVal pval[2];
- BoxPtr pbox = RegionRects(clipboxes);
- int i, nbox = RegionNumRects(clipboxes);
+ BoxPtr pbox = RegionRects(fillboxes);
+ int i, nbox = RegionNumRects(fillboxes);
xRectangle *rects;
GCPtr gc;
if(!xf86Screens[pScreen->myNum]->vtSema) return;
- gc = GetScratchGC(root->depth, pScreen);
+ gc = GetScratchGC(pDraw->depth, pScreen);
pval[0].val = key;
pval[1].val = IncludeInferiors;
(void) ChangeGC(NullClient, gc, GCForeground|GCSubwindowMode, pval);
- ValidateGC(root, gc);
+ ValidateGC(pDraw, gc);
rects = malloc(nbox * sizeof(xRectangle));
for(i = 0; i < nbox; i++, pbox++)
{
- rects[i].x = pbox->x1;
- rects[i].y = pbox->y1;
+ rects[i].x = pbox->x1 - pDraw->x;
+ rects[i].y = pbox->y1 - pDraw->y;
rects[i].width = pbox->x2 - pbox->x1;
rects[i].height = pbox->y2 - pbox->y1;
}
- (*gc->ops->PolyFillRect)(root, gc, nbox, rects);
+ (*gc->ops->PolyFillRect)(pDraw, gc, nbox, rects);
free(rects);
FreeScratchGC (gc);
}
+void
+xf86XVFillKeyHelper (ScreenPtr pScreen, CARD32 key, RegionPtr fillboxes)
+{
+ xf86XVFillKeyHelperDrawable (&pScreen->root->drawable, key, fillboxes);
+}
+
+void
+xf86XVFillKeyHelperPort (DrawablePtr pDraw, pointer data, CARD32 key, RegionPtr clipboxes, Bool fillEverything)
+{
+ WindowPtr pWin = (WindowPtr)pDraw;
+ XF86XVWindowPtr WinPriv = GET_XF86XV_WINDOW(pWin);
+ XvPortRecPrivatePtr portPriv = NULL;
+ RegionRec reg;
+ RegionPtr fillboxes;
+
+ while (WinPriv) {
+ XvPortRecPrivatePtr pPriv = WinPriv->PortRec;
+
+ if (data == pPriv->DevPriv.ptr) {
+ portPriv = pPriv;
+ break;
+ }
+
+ WinPriv = WinPriv->next;
+ }
+
+ if (!portPriv)
+ return;
+
+ if (!portPriv->ckeyFilled)
+ portPriv->ckeyFilled = RegionCreate(NULL, 0);
+
+ if (!fillEverything) {
+ RegionNull(&reg);
+ fillboxes = &reg;
+ RegionSubtract(fillboxes, clipboxes, portPriv->ckeyFilled);
+
+ if (!RegionNotEmpty(fillboxes))
+ goto out;
+ } else
+ fillboxes = clipboxes;
+
+
+ RegionCopy(portPriv->ckeyFilled, clipboxes);
+
+ xf86XVFillKeyHelperDrawable(pDraw, key, fillboxes);
+out:
+ if (!fillEverything)
+ RegionUninit(&reg);
+}
+
+
/* xf86XVClipVideoHelper -
Takes the dst box in standard X BoxRec form (top and left
diff --git a/xorg-server/hw/xfree86/common/xf86xv.h b/xorg-server/hw/xfree86/common/xf86xv.h
index 25f3e4ad3..08e5c790d 100644
--- a/xorg-server/hw/xfree86/common/xf86xv.h
+++ b/xorg-server/hw/xfree86/common/xf86xv.h
@@ -244,6 +244,9 @@ xf86XVFillKeyHelper (ScreenPtr pScreen, CARD32 key, RegionPtr clipboxes);
extern _X_EXPORT void
xf86XVFillKeyHelperDrawable (DrawablePtr pDraw, CARD32 key, RegionPtr clipboxes);
+extern _X_EXPORT void
+xf86XVFillKeyHelperPort (DrawablePtr pDraw, pointer data, CARD32 key, RegionPtr clipboxes, Bool fillEverything);
+
extern _X_EXPORT Bool
xf86XVClipVideoHelper(
BoxPtr dst,
diff --git a/xorg-server/hw/xfree86/common/xf86xvpriv.h b/xorg-server/hw/xfree86/common/xf86xvpriv.h
index 35d72ca9c..7eb46e51f 100644
--- a/xorg-server/hw/xfree86/common/xf86xvpriv.h
+++ b/xorg-server/hw/xfree86/common/xf86xvpriv.h
@@ -40,10 +40,10 @@ typedef struct {
DestroyWindowProcPtr DestroyWindow;
ClipNotifyProcPtr ClipNotify;
WindowExposuresProcPtr WindowExposures;
+ PostValidateTreeProcPtr PostValidateTree;
void (*AdjustFrame)(int, int, int, int);
Bool (*EnterVT)(int, int);
void (*LeaveVT)(int, int);
- GCPtr videoGC;
xf86ModeSetProc *ModeSet;
} XF86XVScreenRec, *XF86XVScreenPtr;
@@ -69,11 +69,12 @@ typedef struct {
unsigned char type;
unsigned int subWindowMode;
RegionPtr clientClip;
+ RegionPtr ckeyFilled;
RegionPtr pCompositeClip;
Bool FreeCompositeClip;
XvAdaptorRecPrivatePtr AdaptorRec;
XvStatus isOn;
- Bool moved;
+ Bool clipChanged;
int vid_x, vid_y, vid_w, vid_h;
int drw_x, drw_y, drw_w, drw_h;
DevUnion DevPriv;
@@ -82,7 +83,6 @@ typedef struct {
typedef struct _XF86XVWindowRec{
XvPortRecPrivatePtr PortRec;
struct _XF86XVWindowRec *next;
- GCPtr pGC;
} XF86XVWindowRec, *XF86XVWindowPtr;
#endif /* _XF86XVPRIV_H_ */
diff --git a/xorg-server/hw/xfree86/dri2/dri2.c b/xorg-server/hw/xfree86/dri2/dri2.c
index aba2202d6..7d6f772d7 100644
--- a/xorg-server/hw/xfree86/dri2/dri2.c
+++ b/xorg-server/hw/xfree86/dri2/dri2.c
@@ -403,7 +403,7 @@ do_get_buffers(DrawablePtr pDraw, int *width, int *height,
&& (pDraw->height == pPriv->height)
&& (pPriv->serialNumber == DRI2DrawableSerial(pDraw));
- buffers = malloc((count + 1) * sizeof(buffers[0]));
+ buffers = calloc((count + 1), sizeof(buffers[0]));
for (i = 0; i < count; i++) {
const unsigned attachment = *(attachments++);
diff --git a/xorg-server/hw/xfree86/fbdevhw/fbdevhw.c b/xorg-server/hw/xfree86/fbdevhw/fbdevhw.c
index 49d0bd044..ef69d58bc 100644
--- a/xorg-server/hw/xfree86/fbdevhw/fbdevhw.c
+++ b/xorg-server/hw/xfree86/fbdevhw/fbdevhw.c
@@ -264,14 +264,7 @@ fbdev_open_pci(struct pci_device * pPci, char **namep)
{
struct fb_fix_screeninfo fix;
char filename[256];
- int fd,i,j;
-
-
- /* There are two ways to that we can determine which fb device is
- * associated with this PCI device. The more modern way is to look in
- * the sysfs directory for the PCI device for a file named
- * "graphics/fb*"
- */
+ int fd, i;
for (i = 0; i < 8; i++) {
sprintf(filename,
@@ -304,55 +297,10 @@ fbdev_open_pci(struct pci_device * pPci, char **namep)
}
}
-
- /* The other way is to examine the resources associated with each fb
- * device and see if there is a match with the PCI device. This technique
- * has some problems on certain mixed 64-bit / 32-bit architectures.
- * There is a flaw in the fb_fix_screeninfo structure in that it only
- * returns the low 32-bits of the address of the resources associated with
- * a device. However, on a mixed architecture the base addresses of PCI
- * devices, even for 32-bit applications, may be higher than 0x0f0000000.
- */
-
- for (i = 0; i < 8; i++) {
- sprintf(filename,"/dev/fb%d",i);
- if (-1 == (fd = open(filename,O_RDWR,0))) {
- xf86DrvMsg(-1, X_WARNING,
- "open %s: %s\n", filename, strerror(errno));
- continue;
- }
- if (-1 == ioctl(fd,FBIOGET_FSCREENINFO,(void*)&fix)) {
- close(fd);
- continue;
- }
- for (j = 0; j < 6; j++) {
- const pciaddr_t res_start = pPci->regions[j].base_addr;
- const pciaddr_t res_end = res_start + pPci->regions[j].size;
-
- if ((0 != fix.smem_len &&
- (pciaddr_t) fix.smem_start >= res_start &&
- (pciaddr_t) fix.smem_start < res_end) ||
- (0 != fix.mmio_len &&
- (pciaddr_t) fix.mmio_start >= res_start &&
- (pciaddr_t) fix.mmio_start < res_end))
- break;
- }
- if (j == 6) {
- close(fd);
- continue;
- }
- if (namep) {
- *namep = xnfalloc(16);
- strncpy(*namep,fix.id,16);
- }
- return fd;
- }
-
if (namep)
*namep = NULL;
- xf86DrvMsg(-1, X_ERROR,
- "Unable to find a valid framebuffer device\n");
+ xf86DrvMsg(-1, X_ERROR, "Unable to find a valid framebuffer device\n");
return -1;
}
diff --git a/xorg-server/hw/xfree86/int10/helper_exec.c b/xorg-server/hw/xfree86/int10/helper_exec.c
index b9af473b1..1043fcde7 100644
--- a/xorg-server/hw/xfree86/int10/helper_exec.c
+++ b/xorg-server/hw/xfree86/int10/helper_exec.c
@@ -1,733 +1,733 @@
-/*
- * XFree86 int10 module
- * execute BIOS int 10h calls in x86 real mode environment
- * Copyright 1999 Egbert Eich
- *
- * Part of this code was inspired by the VBIOS POSTing code in DOSEMU
- * developed by the "DOSEMU-Development-Team"
- */
-
-/*
- * To debug port accesses define PRINT_PORT to 1.
- * Note! You also have to comment out ioperm()
- * in xf86EnableIO(). Otherwise we won't trap
- * on PIO.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#define PRINT_PORT 0
-
-#include <unistd.h>
-
-#include <X11/Xos.h>
-#include "xf86.h"
-#include "xf86_OSproc.h"
-#include "compiler.h"
-#define _INT10_PRIVATE
-#include "int10Defines.h"
-#include "xf86int10.h"
-#include "Pci.h"
-#ifdef _X86EMU
-#include "x86emu/x86emui.h"
-#else
-#define DEBUG_IO_TRACE() 0
-#endif
-#include <pciaccess.h>
-
-static int pciCfg1in(CARD16 addr, CARD32 *val);
-static int pciCfg1out(CARD16 addr, CARD32 val);
-static int pciCfg1inw(CARD16 addr, CARD16 *val);
-static int pciCfg1outw(CARD16 addr, CARD16 val);
-static int pciCfg1inb(CARD16 addr, CARD8 *val);
-static int pciCfg1outb(CARD16 addr, CARD8 val);
-#if defined (_PC)
-static void SetResetBIOSVars(xf86Int10InfoPtr pInt, Bool set);
-#endif
-
-#define REG pInt
-
-int
-setup_int(xf86Int10InfoPtr pInt)
-{
- if (pInt != Int10Current) {
- if (!MapCurrentInt10(pInt))
- return -1;
- Int10Current = pInt;
- }
- X86_EAX = (CARD32) pInt->ax;
- X86_EBX = (CARD32) pInt->bx;
- X86_ECX = (CARD32) pInt->cx;
- X86_EDX = (CARD32) pInt->dx;
- X86_ESI = (CARD32) pInt->si;
- X86_EDI = (CARD32) pInt->di;
- X86_EBP = (CARD32) pInt->bp;
- X86_ESP = 0x1000; X86_SS = pInt->stackseg >> 4;
- X86_EIP = 0x0600; X86_CS = 0x0; /* address of 'hlt' */
- X86_DS = 0x40; /* standard pc ds */
- X86_ES = pInt->es;
- X86_FS = 0;
- X86_GS = 0;
- X86_EFLAGS = X86_IF_MASK | X86_IOPL_MASK;
-#if defined (_PC)
- if (pInt->Flags & SET_BIOS_SCRATCH)
- SetResetBIOSVars(pInt, TRUE);
-#endif
- OsBlockSignals();
- return 0;
-}
-
-void
-finish_int(xf86Int10InfoPtr pInt, int sig)
-{
- OsReleaseSignals();
- pInt->ax = (CARD32) X86_EAX;
- pInt->bx = (CARD32) X86_EBX;
- pInt->cx = (CARD32) X86_ECX;
- pInt->dx = (CARD32) X86_EDX;
- pInt->si = (CARD32) X86_ESI;
- pInt->di = (CARD32) X86_EDI;
- pInt->es = (CARD16) X86_ES;
- pInt->bp = (CARD32) X86_EBP;
- pInt->flags = (CARD32) X86_FLAGS;
-#if defined (_PC)
- if (pInt->Flags & RESTORE_BIOS_SCRATCH)
- SetResetBIOSVars(pInt, FALSE);
-#endif
-}
-
-/* general software interrupt handler */
-CARD32
-getIntVect(xf86Int10InfoPtr pInt,int num)
-{
- return MEM_RW(pInt, num << 2) + (MEM_RW(pInt, (num << 2) + 2) << 4);
-}
-
-void
-pushw(xf86Int10InfoPtr pInt, CARD16 val)
-{
- X86_ESP -= 2;
- MEM_WW(pInt, ((CARD32) X86_SS << 4) + X86_SP, val);
-}
-
-int
-run_bios_int(int num, xf86Int10InfoPtr pInt)
-{
- CARD32 eflags;
-#ifndef _PC
- /* check if bios vector is initialized */
- if (MEM_RW(pInt, (num << 2) + 2) == (SYS_BIOS >> 4)) { /* SYS_BIOS_SEG ?*/
-
- if (num == 21 && X86_AH == 0x4e) {
- xf86DrvMsg(pInt->scrnIndex, X_NOTICE,
- "Failing Find-Matching-File on non-PC"
- " (int 21, func 4e)\n");
- X86_AX = 2;
- SET_FLAG(F_CF);
- return 1;
- } else {
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 2,
- "Ignoring int 0x%02x call\n", num);
- if (xf86GetVerbosity() > 3) {
- dump_registers(pInt);
- stack_trace(pInt);
- }
- return 1;
- }
- }
-#endif
-#ifdef PRINT_INT
- ErrorF("calling card BIOS at: ");
-#endif
- eflags = X86_EFLAGS;
-#if 0
- eflags = eflags | IF_MASK;
- X86_EFLAGS = X86_EFLAGS & ~(VIF_MASK | TF_MASK | IF_MASK | NT_MASK);
-#endif
- pushw(pInt, eflags);
- pushw(pInt, X86_CS);
- pushw(pInt, X86_IP);
- X86_CS = MEM_RW(pInt, (num << 2) + 2);
- X86_IP = MEM_RW(pInt, num << 2);
-#ifdef PRINT_INT
- ErrorF("0x%x:%lx\n", X86_CS, X86_EIP);
-#endif
- return 1;
-}
-
-/* Debugging stuff */
-void
-dump_code(xf86Int10InfoPtr pInt)
-{
- int i;
- unsigned long lina = SEG_ADR((CARD32), X86_CS, IP);
-
- xf86DrvMsgVerb(pInt->scrnIndex, X_INFO, 3, "code at 0x%8.8lx:\n", lina);
- for (i=0; i<0x10; i++)
- xf86ErrorFVerb(3, " %2.2x", MEM_RB(pInt, lina + i));
- xf86ErrorFVerb(3, "\n");
- for (; i<0x20; i++)
- xf86ErrorFVerb(3, " %2.2x", MEM_RB(pInt, lina + i));
- xf86ErrorFVerb(3, "\n");
-}
-
-void
-dump_registers(xf86Int10InfoPtr pInt)
-{
- xf86DrvMsgVerb(pInt->scrnIndex, X_INFO, 3,
- "EAX=0x%8.8lx, EBX=0x%8.8lx, ECX=0x%8.8lx, EDX=0x%8.8lx\n",
- (unsigned long)X86_EAX, (unsigned long)X86_EBX,
- (unsigned long)X86_ECX, (unsigned long)X86_EDX);
- xf86DrvMsgVerb(pInt->scrnIndex, X_INFO, 3,
- "ESP=0x%8.8lx, EBP=0x%8.8lx, ESI=0x%8.8lx, EDI=0x%8.8lx\n",
- (unsigned long)X86_ESP, (unsigned long)X86_EBP,
- (unsigned long)X86_ESI, (unsigned long)X86_EDI);
- xf86DrvMsgVerb(pInt->scrnIndex, X_INFO, 3,
- "CS=0x%4.4x, SS=0x%4.4x,"
- " DS=0x%4.4x, ES=0x%4.4x, FS=0x%4.4x, GS=0x%4.4x\n",
- X86_CS, X86_SS, X86_DS, X86_ES, X86_FS, X86_GS);
- xf86DrvMsgVerb(pInt->scrnIndex, X_INFO, 3,
- "EIP=0x%8.8lx, EFLAGS=0x%8.8lx\n",
- (unsigned long)X86_EIP, (unsigned long)X86_EFLAGS);
-}
-
-void
-stack_trace(xf86Int10InfoPtr pInt)
-{
- int i = 0;
- unsigned long stack = SEG_ADR((CARD32), X86_SS, SP);
- unsigned long tail = (CARD32)((X86_SS << 4) + 0x1000);
-
- if (stack >= tail) return;
-
- xf86MsgVerb(X_INFO, 3, "stack at 0x%8.8lx:\n", stack);
- for (; stack < tail; stack++) {
- xf86ErrorFVerb(3, " %2.2x", MEM_RB(pInt, stack));
- i = (i + 1) % 0x10;
- if (!i)
- xf86ErrorFVerb(3, "\n");
- }
- if (i)
- xf86ErrorFVerb(3, "\n");
-}
-
-int
-port_rep_inb(xf86Int10InfoPtr pInt,
- CARD16 port, CARD32 base, int d_f, CARD32 count)
-{
- register int inc = d_f ? -1 : 1;
- CARD32 dst = base;
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" rep_insb(%#x) %ld bytes at %8.8lx %s\n",
- port, count, base, d_f ? "up" : "down");
- while (count--) {
- MEM_WB(pInt, dst, x_inb(port));
- dst += inc;
- }
- return dst - base;
-}
-
-int
-port_rep_inw(xf86Int10InfoPtr pInt,
- CARD16 port, CARD32 base, int d_f, CARD32 count)
-{
- register int inc = d_f ? -2 : 2;
- CARD32 dst = base;
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" rep_insw(%#x) %ld bytes at %8.8lx %s\n",
- port, count, base, d_f ? "up" : "down");
- while (count--) {
- MEM_WW(pInt, dst, x_inw(port));
- dst += inc;
- }
- return dst - base;
-}
-
-int
-port_rep_inl(xf86Int10InfoPtr pInt,
- CARD16 port, CARD32 base, int d_f, CARD32 count)
-{
- register int inc = d_f ? -4 : 4;
- CARD32 dst = base;
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" rep_insl(%#x) %ld bytes at %8.8lx %s\n",
- port, count, base, d_f ? "up" : "down");
- while (count--) {
- MEM_WL(pInt, dst, x_inl(port));
- dst += inc;
- }
- return dst - base;
-}
-
-int
-port_rep_outb(xf86Int10InfoPtr pInt,
- CARD16 port, CARD32 base, int d_f, CARD32 count)
-{
- register int inc = d_f ? -1 : 1;
- CARD32 dst = base;
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" rep_outb(%#x) %ld bytes at %8.8lx %s\n",
- port, count, base, d_f ? "up" : "down");
- while (count--) {
- x_outb(port, MEM_RB(pInt, dst));
- dst += inc;
- }
- return dst - base;
-}
-
-int
-port_rep_outw(xf86Int10InfoPtr pInt,
- CARD16 port, CARD32 base, int d_f, CARD32 count)
-{
- register int inc = d_f ? -2 : 2;
- CARD32 dst = base;
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" rep_outw(%#x) %ld bytes at %8.8lx %s\n",
- port, count, base, d_f ? "up" : "down");
- while (count--) {
- x_outw(port, MEM_RW(pInt, dst));
- dst += inc;
- }
- return dst - base;
-}
-
-int
-port_rep_outl(xf86Int10InfoPtr pInt,
- CARD16 port, CARD32 base, int d_f, CARD32 count)
-{
- register int inc = d_f ? -4 : 4;
- CARD32 dst = base;
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" rep_outl(%#x) %ld bytes at %8.8lx %s\n",
- port, count, base, d_f ? "up" : "down");
- while (count--) {
- x_outl(port, MEM_RL(pInt, dst));
- dst += inc;
- }
- return dst - base;
-}
-
-CARD8
-x_inb(CARD16 port)
-{
- CARD8 val;
-
- if (port == 0x40) {
- Int10Current->inb40time++;
- val = (CARD8)(Int10Current->inb40time >>
- ((Int10Current->inb40time & 1) << 3));
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" inb(%#x) = %2.2x\n", port, val);
-#ifdef __NOT_YET__
- } else if (port < 0x0100) { /* Don't interfere with mainboard */
- val = 0;
- xf86DrvMsgVerb(Int10Current->scrnIndex, X_NOT_IMPLEMENTED, 2,
- "inb 0x%4.4x\n", port);
- if (xf86GetVerbosity() > 3) {
- dump_registers(Int10Current);
- stack_trace(Int10Current);
- }
-#endif /* __NOT_YET__ */
- } else if (!pciCfg1inb(port, &val)) {
- val = inb(Int10Current->ioBase + port);
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" inb(%#x) = %2.2x\n", port, val);
- }
- return val;
-}
-
-CARD16
-x_inw(CARD16 port)
-{
- CARD16 val;
-
- if (port == 0x5c) {
- struct timeval tv;
-
- /*
- * Emulate a PC98's timer. Typical resolution is 3.26 usec.
- * Approximate this by dividing by 3.
- */
- X_GETTIMEOFDAY(&tv);
- val = (CARD16)(tv.tv_usec / 3);
- } else if (!pciCfg1inw(port, &val)) {
- val = inw(Int10Current->ioBase + port);
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" inw(%#x) = %4.4x\n", port, val);
- }
- return val;
-}
-
-void
-x_outb(CARD16 port, CARD8 val)
-{
- if ((port == 0x43) && (val == 0)) {
- struct timeval tv;
- /*
- * Emulate a PC's timer 0. Such timers typically have a resolution of
- * some .838 usec per tick, but this can only provide 1 usec per tick.
- * (Not that this matters much, given inherent emulation delays.) Use
- * the bottom bit as a byte select. See inb(0x40) above.
- */
- X_GETTIMEOFDAY(&tv);
- Int10Current->inb40time = (CARD16)(tv.tv_usec | 1);
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" outb(%#x, %2.2x)\n", port, val);
-#ifdef __NOT_YET__
- } else if (port < 0x0100) { /* Don't interfere with mainboard */
- xf86DrvMsgVerb(Int10Current->scrnIndex, X_NOT_IMPLEMENTED, 2,
- "outb 0x%4.4x,0x%2.2x\n", port, val);
- if (xf86GetVerbosity() > 3) {
- dump_registers(Int10Current);
- stack_trace(Int10Current);
- }
-#endif /* __NOT_YET__ */
- } else if (!pciCfg1outb(port, val)) {
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" outb(%#x, %2.2x)\n", port, val);
- outb(Int10Current->ioBase + port, val);
- }
-}
-
-void
-x_outw(CARD16 port, CARD16 val)
-{
-
- if (!pciCfg1outw(port, val)) {
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" outw(%#x, %4.4x)\n", port, val);
- outw(Int10Current->ioBase + port, val);
- }
-}
-
-CARD32
-x_inl(CARD16 port)
-{
- CARD32 val;
-
- if (!pciCfg1in(port, &val)) {
- val = inl(Int10Current->ioBase + port);
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" inl(%#x) = %8.8lx\n", port, val);
- }
- return val;
-}
-
-void
-x_outl(CARD16 port, CARD32 val)
-{
- if (!pciCfg1out(port, val)) {
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" outl(%#x, %8.8lx)\n", port, val);
- outl(Int10Current->ioBase + port, val);
- }
-}
-
-CARD8
-Mem_rb(CARD32 addr)
-{
- return (*Int10Current->mem->rb)(Int10Current, addr);
-}
-
-CARD16
-Mem_rw(CARD32 addr)
-{
- return (*Int10Current->mem->rw)(Int10Current, addr);
-}
-
-CARD32
-Mem_rl(CARD32 addr)
-{
- return (*Int10Current->mem->rl)(Int10Current, addr);
-}
-
-void
-Mem_wb(CARD32 addr, CARD8 val)
-{
- (*Int10Current->mem->wb)(Int10Current, addr, val);
-}
-
-void
-Mem_ww(CARD32 addr, CARD16 val)
-{
- (*Int10Current->mem->ww)(Int10Current, addr, val);
-}
-
-void
-Mem_wl(CARD32 addr, CARD32 val)
-{
- (*Int10Current->mem->wl)(Int10Current, addr, val);
-}
-
-static CARD32 PciCfg1Addr = 0;
-
-#define PCI_DOM_FROM_TAG(tag) (((tag) >> 24) & (PCI_DOM_MASK))
-#define PCI_BUS_FROM_TAG(tag) (((tag) >> 16) & (PCI_DOMBUS_MASK))
-#define PCI_DEV_FROM_TAG(tag) (((tag) & 0x0000f800u) >> 11)
-#define PCI_FUNC_FROM_TAG(tag) (((tag) & 0x00000700u) >> 8)
-
-#define PCI_OFFSET(x) ((x) & 0x000000ff)
-#define PCI_TAG(x) ((x) & 0x7fffff00)
-
-static struct pci_device*
-pci_device_for_cfg_address (CARD32 addr)
-{
- struct pci_device *dev = NULL;
- PCITAG tag = PCI_TAG(addr);
- struct pci_slot_match slot_match = {
- .domain = PCI_DOM_FROM_TAG(tag),
- .bus = PCI_BUS_NO_DOMAIN(PCI_BUS_FROM_TAG(tag)),
- .dev = PCI_DEV_FROM_TAG(tag),
- .func = PCI_FUNC_FROM_TAG(tag),
- .match_data = 0
- };
-
- struct pci_device_iterator *iter =
- pci_slot_match_iterator_create (&slot_match);
-
- if (iter)
- dev = pci_device_next(iter);
-
- pci_iterator_destroy(iter);
-
- return dev;
-}
-
-static int
-pciCfg1in(CARD16 addr, CARD32 *val)
-{
- if (addr == 0xCF8) {
- *val = PciCfg1Addr;
- return 1;
- }
- if (addr == 0xCFC) {
- pci_device_cfg_read_u32(pci_device_for_cfg_address(PciCfg1Addr),
- val, PCI_OFFSET(PciCfg1Addr));
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" cfg_inl(%#lx) = %8.8lx\n", PciCfg1Addr, *val);
- return 1;
- }
- return 0;
-}
-
-static int
-pciCfg1out(CARD16 addr, CARD32 val)
-{
- if (addr == 0xCF8) {
- PciCfg1Addr = val;
- return 1;
- }
- if (addr == 0xCFC) {
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" cfg_outl(%#lx, %8.8lx)\n", PciCfg1Addr, val);
- pci_device_cfg_write_u32(pci_device_for_cfg_address(PciCfg1Addr),
- val, PCI_OFFSET(PciCfg1Addr));
- return 1;
- }
- return 0;
-}
-
-static int
-pciCfg1inw(CARD16 addr, CARD16 *val)
-{
- int shift;
-
- if ((addr >= 0xCF8) && (addr <= 0xCFB)) {
- shift = (addr - 0xCF8) * 8;
- *val = (PciCfg1Addr >> shift) & 0xffff;
- return 1;
- }
- if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
- const unsigned offset = addr - 0xCFC;
-
- pci_device_cfg_read_u16(pci_device_for_cfg_address(PciCfg1Addr),
- val, PCI_OFFSET(PciCfg1Addr) + offset);
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" cfg_inw(%#lx) = %4.4x\n", PciCfg1Addr + offset, *val);
- return 1;
- }
- return 0;
-}
-
-static int
-pciCfg1outw(CARD16 addr, CARD16 val)
-{
- int shift;
-
- if ((addr >= 0xCF8) && (addr <= 0xCFB)) {
- shift = (addr - 0xCF8) * 8;
- PciCfg1Addr &= ~(0xffff << shift);
- PciCfg1Addr |= ((CARD32) val) << shift;
- return 1;
- }
- if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
- const unsigned offset = addr - 0xCFC;
-
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" cfg_outw(%#lx, %4.4x)\n", PciCfg1Addr + offset, val);
- pci_device_cfg_write_u16(pci_device_for_cfg_address(PciCfg1Addr),
- val, PCI_OFFSET(PciCfg1Addr) + offset);
- return 1;
- }
- return 0;
-}
-
-static int
-pciCfg1inb(CARD16 addr, CARD8 *val)
-{
- int shift;
-
- if ((addr >= 0xCF8) && (addr <= 0xCFB)) {
- shift = (addr - 0xCF8) * 8;
- *val = (PciCfg1Addr >> shift) & 0xff;
- return 1;
- }
- if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
- const unsigned offset = addr - 0xCFC;
-
- pci_device_cfg_read_u8(pci_device_for_cfg_address(PciCfg1Addr),
- val, PCI_OFFSET(PciCfg1Addr) + offset);
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" cfg_inb(%#lx) = %2.2x\n", PciCfg1Addr + offset, *val);
- return 1;
- }
- return 0;
-}
-
-static int
-pciCfg1outb(CARD16 addr, CARD8 val)
-{
- int shift;
-
- if ((addr >= 0xCF8) && (addr <= 0xCFB)) {
- shift = (addr - 0xCF8) * 8;
- PciCfg1Addr &= ~(0xff << shift);
- PciCfg1Addr |= ((CARD32) val) << shift;
- return 1;
- }
- if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
- const unsigned offset = addr - 0xCFC;
-
- if (PRINT_PORT && DEBUG_IO_TRACE())
- ErrorF(" cfg_outb(%#lx, %2.2x)\n", PciCfg1Addr + offset, val);
- pci_device_cfg_write_u8(pci_device_for_cfg_address(PciCfg1Addr),
- val, PCI_OFFSET(PciCfg1Addr) + offset);
- return 1;
- }
- return 0;
-}
-
-CARD8
-bios_checksum(const CARD8 *start, int size)
-{
- CARD8 sum = 0;
-
- while (size-- > 0)
- sum += *start++;
- return sum;
-}
-
-/*
- * Lock/Unlock legacy VGA. Some Bioses try to be very clever and make
- * an attempt to detect a legacy ISA card. If they find one they might
- * act very strange: for example they might configure the card as a
- * monochrome card. This might cause some drivers to choke.
- * To avoid this we attempt legacy VGA by writing to all know VGA
- * disable registers before we call the BIOS initialization and
- * restore the original values afterwards. In beween we hold our
- * breath. To get to a (possibly exising) ISA card need to disable
- * our current PCI card.
- */
-/*
- * This is just for booting: we just want to catch pure
- * legacy vga therefore we don't worry about mmio etc.
- * This stuff should really go into vgaHW.c. However then
- * the driver would have to load the vga-module prior to
- * doing int10.
- */
-void
-LockLegacyVGA(xf86Int10InfoPtr pInt, legacyVGAPtr vga)
-{
- vga->save_msr = inb(pInt->ioBase + 0x03CC);
- vga->save_vse = inb(pInt->ioBase + 0x03C3);
-#ifndef __ia64__
- vga->save_46e8 = inb(pInt->ioBase + 0x46E8);
-#endif
- vga->save_pos102 = inb(pInt->ioBase + 0x0102);
- outb(pInt->ioBase + 0x03C2, ~(CARD8)0x03 & vga->save_msr);
- outb(pInt->ioBase + 0x03C3, ~(CARD8)0x01 & vga->save_vse);
-#ifndef __ia64__
- outb(pInt->ioBase + 0x46E8, ~(CARD8)0x08 & vga->save_46e8);
-#endif
- outb(pInt->ioBase + 0x0102, ~(CARD8)0x01 & vga->save_pos102);
-}
-
-void
-UnlockLegacyVGA(xf86Int10InfoPtr pInt, legacyVGAPtr vga)
-{
- outb(pInt->ioBase + 0x0102, vga->save_pos102);
-#ifndef __ia64__
- outb(pInt->ioBase + 0x46E8, vga->save_46e8);
-#endif
- outb(pInt->ioBase + 0x03C3, vga->save_vse);
- outb(pInt->ioBase + 0x03C2, vga->save_msr);
-}
-
-#if defined (_PC)
-static void
-SetResetBIOSVars(xf86Int10InfoPtr pInt, Bool set)
-{
- int pagesize = getpagesize();
- unsigned char* base = xf86MapVidMem(pInt->scrnIndex,
- VIDMEM_MMIO, 0, pagesize);
- int i;
-
- if (set) {
- for (i = BIOS_SCRATCH_OFF; i < BIOS_SCRATCH_END; i++)
- MEM_WW(pInt, i, *(base + i));
- } else {
- for (i = BIOS_SCRATCH_OFF; i < BIOS_SCRATCH_END; i++)
- *(base + i) = MEM_RW(pInt, i);
- }
-
- xf86UnMapVidMem(pInt->scrnIndex,base,pagesize);
-}
-
-void
-xf86Int10SaveRestoreBIOSVars(xf86Int10InfoPtr pInt, Bool save)
-{
- int pagesize = getpagesize();
- unsigned char* base;
- int i;
-
- if (!xf86IsEntityPrimary(pInt->entityIndex)
- || (!save && !pInt->BIOSScratch))
- return;
-
- base = xf86MapVidMem(pInt->scrnIndex, VIDMEM_MMIO, 0, pagesize);
- base += BIOS_SCRATCH_OFF;
- if (save) {
- if ((pInt->BIOSScratch
- = xnfalloc(BIOS_SCRATCH_LEN)))
- for (i = 0; i < BIOS_SCRATCH_LEN; i++)
- *(((char*)pInt->BIOSScratch + i)) = *(base + i);
- } else {
- if (pInt->BIOSScratch) {
- for (i = 0; i < BIOS_SCRATCH_LEN; i++)
- *(base + i) = *(pInt->BIOSScratch + i);
- free(pInt->BIOSScratch);
- pInt->BIOSScratch = NULL;
- }
- }
-
- xf86UnMapVidMem(pInt->scrnIndex,base - BIOS_SCRATCH_OFF ,pagesize);
-}
-#endif
-
-xf86Int10InfoPtr
-xf86InitInt10(int entityIndex)
-{
- return xf86ExtendedInitInt10(entityIndex, 0);
-}
+/*
+ * XFree86 int10 module
+ * execute BIOS int 10h calls in x86 real mode environment
+ * Copyright 1999 Egbert Eich
+ *
+ * Part of this code was inspired by the VBIOS POSTing code in DOSEMU
+ * developed by the "DOSEMU-Development-Team"
+ */
+
+/*
+ * To debug port accesses define PRINT_PORT to 1.
+ * Note! You also have to comment out ioperm()
+ * in xf86EnableIO(). Otherwise we won't trap
+ * on PIO.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#define PRINT_PORT 0
+
+#include <unistd.h>
+
+#include <X11/Xos.h>
+#include "xf86.h"
+#include "xf86_OSproc.h"
+#include "compiler.h"
+#define _INT10_PRIVATE
+#include "int10Defines.h"
+#include "xf86int10.h"
+#include "Pci.h"
+#ifdef _X86EMU
+#include "x86emu/x86emui.h"
+#else
+#define DEBUG_IO_TRACE() 0
+#endif
+#include <pciaccess.h>
+
+static int pciCfg1in(CARD16 addr, CARD32 *val);
+static int pciCfg1out(CARD16 addr, CARD32 val);
+static int pciCfg1inw(CARD16 addr, CARD16 *val);
+static int pciCfg1outw(CARD16 addr, CARD16 val);
+static int pciCfg1inb(CARD16 addr, CARD8 *val);
+static int pciCfg1outb(CARD16 addr, CARD8 val);
+#if defined (_PC)
+static void SetResetBIOSVars(xf86Int10InfoPtr pInt, Bool set);
+#endif
+
+#define REG pInt
+
+int
+setup_int(xf86Int10InfoPtr pInt)
+{
+ if (pInt != Int10Current) {
+ if (!MapCurrentInt10(pInt))
+ return -1;
+ Int10Current = pInt;
+ }
+ X86_EAX = (CARD32) pInt->ax;
+ X86_EBX = (CARD32) pInt->bx;
+ X86_ECX = (CARD32) pInt->cx;
+ X86_EDX = (CARD32) pInt->dx;
+ X86_ESI = (CARD32) pInt->si;
+ X86_EDI = (CARD32) pInt->di;
+ X86_EBP = (CARD32) pInt->bp;
+ X86_ESP = 0x1000; X86_SS = pInt->stackseg >> 4;
+ X86_EIP = 0x0600; X86_CS = 0x0; /* address of 'hlt' */
+ X86_DS = 0x40; /* standard pc ds */
+ X86_ES = pInt->es;
+ X86_FS = 0;
+ X86_GS = 0;
+ X86_EFLAGS = X86_IF_MASK | X86_IOPL_MASK;
+#if defined (_PC)
+ if (pInt->Flags & SET_BIOS_SCRATCH)
+ SetResetBIOSVars(pInt, TRUE);
+#endif
+ OsBlockSignals();
+ return 0;
+}
+
+void
+finish_int(xf86Int10InfoPtr pInt, int sig)
+{
+ OsReleaseSignals();
+ pInt->ax = (CARD32) X86_EAX;
+ pInt->bx = (CARD32) X86_EBX;
+ pInt->cx = (CARD32) X86_ECX;
+ pInt->dx = (CARD32) X86_EDX;
+ pInt->si = (CARD32) X86_ESI;
+ pInt->di = (CARD32) X86_EDI;
+ pInt->es = (CARD16) X86_ES;
+ pInt->bp = (CARD32) X86_EBP;
+ pInt->flags = (CARD32) X86_FLAGS;
+#if defined (_PC)
+ if (pInt->Flags & RESTORE_BIOS_SCRATCH)
+ SetResetBIOSVars(pInt, FALSE);
+#endif
+}
+
+/* general software interrupt handler */
+CARD32
+getIntVect(xf86Int10InfoPtr pInt,int num)
+{
+ return MEM_RW(pInt, num << 2) + (MEM_RW(pInt, (num << 2) + 2) << 4);
+}
+
+void
+pushw(xf86Int10InfoPtr pInt, CARD16 val)
+{
+ X86_ESP -= 2;
+ MEM_WW(pInt, ((CARD32) X86_SS << 4) + X86_SP, val);
+}
+
+int
+run_bios_int(int num, xf86Int10InfoPtr pInt)
+{
+ CARD32 eflags;
+#ifndef _PC
+ /* check if bios vector is initialized */
+ if (MEM_RW(pInt, (num << 2) + 2) == (SYS_BIOS >> 4)) { /* SYS_BIOS_SEG ?*/
+
+ if (num == 21 && X86_AH == 0x4e) {
+ xf86DrvMsg(pInt->scrnIndex, X_NOTICE,
+ "Failing Find-Matching-File on non-PC"
+ " (int 21, func 4e)\n");
+ X86_AX = 2;
+ SET_FLAG(F_CF);
+ return 1;
+ } else {
+ xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 2,
+ "Ignoring int 0x%02x call\n", num);
+ if (xf86GetVerbosity() > 3) {
+ dump_registers(pInt);
+ stack_trace(pInt);
+ }
+ return 1;
+ }
+ }
+#endif
+#ifdef PRINT_INT
+ ErrorF("calling card BIOS at: ");
+#endif
+ eflags = X86_EFLAGS;
+#if 0
+ eflags = eflags | IF_MASK;
+ X86_EFLAGS = X86_EFLAGS & ~(VIF_MASK | TF_MASK | IF_MASK | NT_MASK);
+#endif
+ pushw(pInt, eflags);
+ pushw(pInt, X86_CS);
+ pushw(pInt, X86_IP);
+ X86_CS = MEM_RW(pInt, (num << 2) + 2);
+ X86_IP = MEM_RW(pInt, num << 2);
+#ifdef PRINT_INT
+ ErrorF("0x%x:%lx\n", X86_CS, X86_EIP);
+#endif
+ return 1;
+}
+
+/* Debugging stuff */
+void
+dump_code(xf86Int10InfoPtr pInt)
+{
+ int i;
+ unsigned long lina = SEG_ADR((CARD32), X86_CS, IP);
+
+ xf86DrvMsgVerb(pInt->scrnIndex, X_INFO, 3, "code at 0x%8.8lx:\n", lina);
+ for (i=0; i<0x10; i++)
+ xf86ErrorFVerb(3, " %2.2x", MEM_RB(pInt, lina + i));
+ xf86ErrorFVerb(3, "\n");
+ for (; i<0x20; i++)
+ xf86ErrorFVerb(3, " %2.2x", MEM_RB(pInt, lina + i));
+ xf86ErrorFVerb(3, "\n");
+}
+
+void
+dump_registers(xf86Int10InfoPtr pInt)
+{
+ xf86DrvMsgVerb(pInt->scrnIndex, X_INFO, 3,
+ "EAX=0x%8.8lx, EBX=0x%8.8lx, ECX=0x%8.8lx, EDX=0x%8.8lx\n",
+ (unsigned long)X86_EAX, (unsigned long)X86_EBX,
+ (unsigned long)X86_ECX, (unsigned long)X86_EDX);
+ xf86DrvMsgVerb(pInt->scrnIndex, X_INFO, 3,
+ "ESP=0x%8.8lx, EBP=0x%8.8lx, ESI=0x%8.8lx, EDI=0x%8.8lx\n",
+ (unsigned long)X86_ESP, (unsigned long)X86_EBP,
+ (unsigned long)X86_ESI, (unsigned long)X86_EDI);
+ xf86DrvMsgVerb(pInt->scrnIndex, X_INFO, 3,
+ "CS=0x%4.4x, SS=0x%4.4x,"
+ " DS=0x%4.4x, ES=0x%4.4x, FS=0x%4.4x, GS=0x%4.4x\n",
+ X86_CS, X86_SS, X86_DS, X86_ES, X86_FS, X86_GS);
+ xf86DrvMsgVerb(pInt->scrnIndex, X_INFO, 3,
+ "EIP=0x%8.8lx, EFLAGS=0x%8.8lx\n",
+ (unsigned long)X86_EIP, (unsigned long)X86_EFLAGS);
+}
+
+void
+stack_trace(xf86Int10InfoPtr pInt)
+{
+ int i = 0;
+ unsigned long stack = SEG_ADR((CARD32), X86_SS, SP);
+ unsigned long tail = (CARD32)((X86_SS << 4) + 0x1000);
+
+ if (stack >= tail) return;
+
+ xf86MsgVerb(X_INFO, 3, "stack at 0x%8.8lx:\n", stack);
+ for (; stack < tail; stack++) {
+ xf86ErrorFVerb(3, " %2.2x", MEM_RB(pInt, stack));
+ i = (i + 1) % 0x10;
+ if (!i)
+ xf86ErrorFVerb(3, "\n");
+ }
+ if (i)
+ xf86ErrorFVerb(3, "\n");
+}
+
+int
+port_rep_inb(xf86Int10InfoPtr pInt,
+ CARD16 port, CARD32 base, int d_f, CARD32 count)
+{
+ register int inc = d_f ? -1 : 1;
+ CARD32 dst = base;
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" rep_insb(%#x) %ld bytes at %8.8lx %s\n",
+ port, count, base, d_f ? "up" : "down");
+ while (count--) {
+ MEM_WB(pInt, dst, x_inb(port));
+ dst += inc;
+ }
+ return dst - base;
+}
+
+int
+port_rep_inw(xf86Int10InfoPtr pInt,
+ CARD16 port, CARD32 base, int d_f, CARD32 count)
+{
+ register int inc = d_f ? -2 : 2;
+ CARD32 dst = base;
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" rep_insw(%#x) %ld bytes at %8.8lx %s\n",
+ port, count, base, d_f ? "up" : "down");
+ while (count--) {
+ MEM_WW(pInt, dst, x_inw(port));
+ dst += inc;
+ }
+ return dst - base;
+}
+
+int
+port_rep_inl(xf86Int10InfoPtr pInt,
+ CARD16 port, CARD32 base, int d_f, CARD32 count)
+{
+ register int inc = d_f ? -4 : 4;
+ CARD32 dst = base;
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" rep_insl(%#x) %ld bytes at %8.8lx %s\n",
+ port, count, base, d_f ? "up" : "down");
+ while (count--) {
+ MEM_WL(pInt, dst, x_inl(port));
+ dst += inc;
+ }
+ return dst - base;
+}
+
+int
+port_rep_outb(xf86Int10InfoPtr pInt,
+ CARD16 port, CARD32 base, int d_f, CARD32 count)
+{
+ register int inc = d_f ? -1 : 1;
+ CARD32 dst = base;
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" rep_outb(%#x) %ld bytes at %8.8lx %s\n",
+ port, count, base, d_f ? "up" : "down");
+ while (count--) {
+ x_outb(port, MEM_RB(pInt, dst));
+ dst += inc;
+ }
+ return dst - base;
+}
+
+int
+port_rep_outw(xf86Int10InfoPtr pInt,
+ CARD16 port, CARD32 base, int d_f, CARD32 count)
+{
+ register int inc = d_f ? -2 : 2;
+ CARD32 dst = base;
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" rep_outw(%#x) %ld bytes at %8.8lx %s\n",
+ port, count, base, d_f ? "up" : "down");
+ while (count--) {
+ x_outw(port, MEM_RW(pInt, dst));
+ dst += inc;
+ }
+ return dst - base;
+}
+
+int
+port_rep_outl(xf86Int10InfoPtr pInt,
+ CARD16 port, CARD32 base, int d_f, CARD32 count)
+{
+ register int inc = d_f ? -4 : 4;
+ CARD32 dst = base;
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" rep_outl(%#x) %ld bytes at %8.8lx %s\n",
+ port, count, base, d_f ? "up" : "down");
+ while (count--) {
+ x_outl(port, MEM_RL(pInt, dst));
+ dst += inc;
+ }
+ return dst - base;
+}
+
+CARD8
+x_inb(CARD16 port)
+{
+ CARD8 val;
+
+ if (port == 0x40) {
+ Int10Current->inb40time++;
+ val = (CARD8)(Int10Current->inb40time >>
+ ((Int10Current->inb40time & 1) << 3));
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" inb(%#x) = %2.2x\n", port, val);
+#ifdef __NOT_YET__
+ } else if (port < 0x0100) { /* Don't interfere with mainboard */
+ val = 0;
+ xf86DrvMsgVerb(Int10Current->scrnIndex, X_NOT_IMPLEMENTED, 2,
+ "inb 0x%4.4x\n", port);
+ if (xf86GetVerbosity() > 3) {
+ dump_registers(Int10Current);
+ stack_trace(Int10Current);
+ }
+#endif /* __NOT_YET__ */
+ } else if (!pciCfg1inb(port, &val)) {
+ val = inb(Int10Current->ioBase + port);
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" inb(%#x) = %2.2x\n", port, val);
+ }
+ return val;
+}
+
+CARD16
+x_inw(CARD16 port)
+{
+ CARD16 val;
+
+ if (port == 0x5c) {
+ struct timeval tv;
+
+ /*
+ * Emulate a PC98's timer. Typical resolution is 3.26 usec.
+ * Approximate this by dividing by 3.
+ */
+ X_GETTIMEOFDAY(&tv);
+ val = (CARD16)(tv.tv_usec / 3);
+ } else if (!pciCfg1inw(port, &val)) {
+ val = inw(Int10Current->ioBase + port);
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" inw(%#x) = %4.4x\n", port, val);
+ }
+ return val;
+}
+
+void
+x_outb(CARD16 port, CARD8 val)
+{
+ if ((port == 0x43) && (val == 0)) {
+ struct timeval tv;
+ /*
+ * Emulate a PC's timer 0. Such timers typically have a resolution of
+ * some .838 usec per tick, but this can only provide 1 usec per tick.
+ * (Not that this matters much, given inherent emulation delays.) Use
+ * the bottom bit as a byte select. See inb(0x40) above.
+ */
+ X_GETTIMEOFDAY(&tv);
+ Int10Current->inb40time = (CARD16)(tv.tv_usec | 1);
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" outb(%#x, %2.2x)\n", port, val);
+#ifdef __NOT_YET__
+ } else if (port < 0x0100) { /* Don't interfere with mainboard */
+ xf86DrvMsgVerb(Int10Current->scrnIndex, X_NOT_IMPLEMENTED, 2,
+ "outb 0x%4.4x,0x%2.2x\n", port, val);
+ if (xf86GetVerbosity() > 3) {
+ dump_registers(Int10Current);
+ stack_trace(Int10Current);
+ }
+#endif /* __NOT_YET__ */
+ } else if (!pciCfg1outb(port, val)) {
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" outb(%#x, %2.2x)\n", port, val);
+ outb(Int10Current->ioBase + port, val);
+ }
+}
+
+void
+x_outw(CARD16 port, CARD16 val)
+{
+
+ if (!pciCfg1outw(port, val)) {
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" outw(%#x, %4.4x)\n", port, val);
+ outw(Int10Current->ioBase + port, val);
+ }
+}
+
+CARD32
+x_inl(CARD16 port)
+{
+ CARD32 val;
+
+ if (!pciCfg1in(port, &val)) {
+ val = inl(Int10Current->ioBase + port);
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" inl(%#x) = %8.8lx\n", port, val);
+ }
+ return val;
+}
+
+void
+x_outl(CARD16 port, CARD32 val)
+{
+ if (!pciCfg1out(port, val)) {
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" outl(%#x, %8.8lx)\n", port, val);
+ outl(Int10Current->ioBase + port, val);
+ }
+}
+
+CARD8
+Mem_rb(CARD32 addr)
+{
+ return (*Int10Current->mem->rb)(Int10Current, addr);
+}
+
+CARD16
+Mem_rw(CARD32 addr)
+{
+ return (*Int10Current->mem->rw)(Int10Current, addr);
+}
+
+CARD32
+Mem_rl(CARD32 addr)
+{
+ return (*Int10Current->mem->rl)(Int10Current, addr);
+}
+
+void
+Mem_wb(CARD32 addr, CARD8 val)
+{
+ (*Int10Current->mem->wb)(Int10Current, addr, val);
+}
+
+void
+Mem_ww(CARD32 addr, CARD16 val)
+{
+ (*Int10Current->mem->ww)(Int10Current, addr, val);
+}
+
+void
+Mem_wl(CARD32 addr, CARD32 val)
+{
+ (*Int10Current->mem->wl)(Int10Current, addr, val);
+}
+
+static CARD32 PciCfg1Addr = 0;
+
+#define PCI_DOM_FROM_TAG(tag) (((tag) >> 24) & (PCI_DOM_MASK))
+#define PCI_BUS_FROM_TAG(tag) (((tag) >> 16) & (PCI_DOMBUS_MASK))
+#define PCI_DEV_FROM_TAG(tag) (((tag) & 0x0000f800u) >> 11)
+#define PCI_FUNC_FROM_TAG(tag) (((tag) & 0x00000700u) >> 8)
+
+#define PCI_OFFSET(x) ((x) & 0x000000ff)
+#define PCI_TAG(x) ((x) & 0x7fffff00)
+
+static struct pci_device*
+pci_device_for_cfg_address (CARD32 addr)
+{
+ struct pci_device *dev = NULL;
+ PCITAG tag = PCI_TAG(addr);
+ struct pci_slot_match slot_match = {
+ .domain = PCI_DOM_FROM_TAG(tag),
+ .bus = PCI_BUS_NO_DOMAIN(PCI_BUS_FROM_TAG(tag)),
+ .dev = PCI_DEV_FROM_TAG(tag),
+ .func = PCI_FUNC_FROM_TAG(tag),
+ .match_data = 0
+ };
+
+ struct pci_device_iterator *iter =
+ pci_slot_match_iterator_create (&slot_match);
+
+ if (iter)
+ dev = pci_device_next(iter);
+
+ pci_iterator_destroy(iter);
+
+ return dev;
+}
+
+static int
+pciCfg1in(CARD16 addr, CARD32 *val)
+{
+ if (addr == 0xCF8) {
+ *val = PciCfg1Addr;
+ return 1;
+ }
+ if (addr == 0xCFC) {
+ pci_device_cfg_read_u32(pci_device_for_cfg_address(PciCfg1Addr),
+ (uint32_t *)val, PCI_OFFSET(PciCfg1Addr));
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" cfg_inl(%#lx) = %8.8lx\n", PciCfg1Addr, *val);
+ return 1;
+ }
+ return 0;
+}
+
+static int
+pciCfg1out(CARD16 addr, CARD32 val)
+{
+ if (addr == 0xCF8) {
+ PciCfg1Addr = val;
+ return 1;
+ }
+ if (addr == 0xCFC) {
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" cfg_outl(%#lx, %8.8lx)\n", PciCfg1Addr, val);
+ pci_device_cfg_write_u32(pci_device_for_cfg_address(PciCfg1Addr),
+ val, PCI_OFFSET(PciCfg1Addr));
+ return 1;
+ }
+ return 0;
+}
+
+static int
+pciCfg1inw(CARD16 addr, CARD16 *val)
+{
+ int shift;
+
+ if ((addr >= 0xCF8) && (addr <= 0xCFB)) {
+ shift = (addr - 0xCF8) * 8;
+ *val = (PciCfg1Addr >> shift) & 0xffff;
+ return 1;
+ }
+ if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
+ const unsigned offset = addr - 0xCFC;
+
+ pci_device_cfg_read_u16(pci_device_for_cfg_address(PciCfg1Addr),
+ val, PCI_OFFSET(PciCfg1Addr) + offset);
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" cfg_inw(%#lx) = %4.4x\n", PciCfg1Addr + offset, *val);
+ return 1;
+ }
+ return 0;
+}
+
+static int
+pciCfg1outw(CARD16 addr, CARD16 val)
+{
+ int shift;
+
+ if ((addr >= 0xCF8) && (addr <= 0xCFB)) {
+ shift = (addr - 0xCF8) * 8;
+ PciCfg1Addr &= ~(0xffff << shift);
+ PciCfg1Addr |= ((CARD32) val) << shift;
+ return 1;
+ }
+ if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
+ const unsigned offset = addr - 0xCFC;
+
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" cfg_outw(%#lx, %4.4x)\n", PciCfg1Addr + offset, val);
+ pci_device_cfg_write_u16(pci_device_for_cfg_address(PciCfg1Addr),
+ val, PCI_OFFSET(PciCfg1Addr) + offset);
+ return 1;
+ }
+ return 0;
+}
+
+static int
+pciCfg1inb(CARD16 addr, CARD8 *val)
+{
+ int shift;
+
+ if ((addr >= 0xCF8) && (addr <= 0xCFB)) {
+ shift = (addr - 0xCF8) * 8;
+ *val = (PciCfg1Addr >> shift) & 0xff;
+ return 1;
+ }
+ if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
+ const unsigned offset = addr - 0xCFC;
+
+ pci_device_cfg_read_u8(pci_device_for_cfg_address(PciCfg1Addr),
+ val, PCI_OFFSET(PciCfg1Addr) + offset);
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" cfg_inb(%#lx) = %2.2x\n", PciCfg1Addr + offset, *val);
+ return 1;
+ }
+ return 0;
+}
+
+static int
+pciCfg1outb(CARD16 addr, CARD8 val)
+{
+ int shift;
+
+ if ((addr >= 0xCF8) && (addr <= 0xCFB)) {
+ shift = (addr - 0xCF8) * 8;
+ PciCfg1Addr &= ~(0xff << shift);
+ PciCfg1Addr |= ((CARD32) val) << shift;
+ return 1;
+ }
+ if ((addr >= 0xCFC) && (addr <= 0xCFF)) {
+ const unsigned offset = addr - 0xCFC;
+
+ if (PRINT_PORT && DEBUG_IO_TRACE())
+ ErrorF(" cfg_outb(%#lx, %2.2x)\n", PciCfg1Addr + offset, val);
+ pci_device_cfg_write_u8(pci_device_for_cfg_address(PciCfg1Addr),
+ val, PCI_OFFSET(PciCfg1Addr) + offset);
+ return 1;
+ }
+ return 0;
+}
+
+CARD8
+bios_checksum(const CARD8 *start, int size)
+{
+ CARD8 sum = 0;
+
+ while (size-- > 0)
+ sum += *start++;
+ return sum;
+}
+
+/*
+ * Lock/Unlock legacy VGA. Some Bioses try to be very clever and make
+ * an attempt to detect a legacy ISA card. If they find one they might
+ * act very strange: for example they might configure the card as a
+ * monochrome card. This might cause some drivers to choke.
+ * To avoid this we attempt legacy VGA by writing to all know VGA
+ * disable registers before we call the BIOS initialization and
+ * restore the original values afterwards. In beween we hold our
+ * breath. To get to a (possibly exising) ISA card need to disable
+ * our current PCI card.
+ */
+/*
+ * This is just for booting: we just want to catch pure
+ * legacy vga therefore we don't worry about mmio etc.
+ * This stuff should really go into vgaHW.c. However then
+ * the driver would have to load the vga-module prior to
+ * doing int10.
+ */
+void
+LockLegacyVGA(xf86Int10InfoPtr pInt, legacyVGAPtr vga)
+{
+ vga->save_msr = inb(pInt->ioBase + 0x03CC);
+ vga->save_vse = inb(pInt->ioBase + 0x03C3);
+#ifndef __ia64__
+ vga->save_46e8 = inb(pInt->ioBase + 0x46E8);
+#endif
+ vga->save_pos102 = inb(pInt->ioBase + 0x0102);
+ outb(pInt->ioBase + 0x03C2, ~(CARD8)0x03 & vga->save_msr);
+ outb(pInt->ioBase + 0x03C3, ~(CARD8)0x01 & vga->save_vse);
+#ifndef __ia64__
+ outb(pInt->ioBase + 0x46E8, ~(CARD8)0x08 & vga->save_46e8);
+#endif
+ outb(pInt->ioBase + 0x0102, ~(CARD8)0x01 & vga->save_pos102);
+}
+
+void
+UnlockLegacyVGA(xf86Int10InfoPtr pInt, legacyVGAPtr vga)
+{
+ outb(pInt->ioBase + 0x0102, vga->save_pos102);
+#ifndef __ia64__
+ outb(pInt->ioBase + 0x46E8, vga->save_46e8);
+#endif
+ outb(pInt->ioBase + 0x03C3, vga->save_vse);
+ outb(pInt->ioBase + 0x03C2, vga->save_msr);
+}
+
+#if defined (_PC)
+static void
+SetResetBIOSVars(xf86Int10InfoPtr pInt, Bool set)
+{
+ int pagesize = getpagesize();
+ unsigned char* base = xf86MapVidMem(pInt->scrnIndex,
+ VIDMEM_MMIO, 0, pagesize);
+ int i;
+
+ if (set) {
+ for (i = BIOS_SCRATCH_OFF; i < BIOS_SCRATCH_END; i++)
+ MEM_WW(pInt, i, *(base + i));
+ } else {
+ for (i = BIOS_SCRATCH_OFF; i < BIOS_SCRATCH_END; i++)
+ *(base + i) = MEM_RW(pInt, i);
+ }
+
+ xf86UnMapVidMem(pInt->scrnIndex,base,pagesize);
+}
+
+void
+xf86Int10SaveRestoreBIOSVars(xf86Int10InfoPtr pInt, Bool save)
+{
+ int pagesize = getpagesize();
+ unsigned char* base;
+ int i;
+
+ if (!xf86IsEntityPrimary(pInt->entityIndex)
+ || (!save && !pInt->BIOSScratch))
+ return;
+
+ base = xf86MapVidMem(pInt->scrnIndex, VIDMEM_MMIO, 0, pagesize);
+ base += BIOS_SCRATCH_OFF;
+ if (save) {
+ if ((pInt->BIOSScratch
+ = xnfalloc(BIOS_SCRATCH_LEN)))
+ for (i = 0; i < BIOS_SCRATCH_LEN; i++)
+ *(((char*)pInt->BIOSScratch + i)) = *(base + i);
+ } else {
+ if (pInt->BIOSScratch) {
+ for (i = 0; i < BIOS_SCRATCH_LEN; i++)
+ *(base + i) = *(pInt->BIOSScratch + i);
+ free(pInt->BIOSScratch);
+ pInt->BIOSScratch = NULL;
+ }
+ }
+
+ xf86UnMapVidMem(pInt->scrnIndex,base - BIOS_SCRATCH_OFF ,pagesize);
+}
+#endif
+
+xf86Int10InfoPtr
+xf86InitInt10(int entityIndex)
+{
+ return xf86ExtendedInitInt10(entityIndex, 0);
+}
diff --git a/xorg-server/hw/xfree86/modes/xf86Crtc.c b/xorg-server/hw/xfree86/modes/xf86Crtc.c
index 47d3ad14c..d721b131f 100644
--- a/xorg-server/hw/xfree86/modes/xf86Crtc.c
+++ b/xorg-server/hw/xfree86/modes/xf86Crtc.c
@@ -1,3282 +1,3281 @@
-/*
- * Copyright © 2006 Keith Packard
- * Copyright © 2008 Red Hat, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting documentation, and
- * that the name of the copyright holders not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. The copyright holders make no representations
- * about the suitability of this software for any purpose. It is provided "as
- * is" without express or implied warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#else
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#endif
-
-#include <stddef.h>
-#include <string.h>
-#include <stdio.h>
-
-#include "xf86.h"
-#include "xf86DDC.h"
-#include "xf86Crtc.h"
-#include "xf86Modes.h"
-#include "xf86Priv.h"
-#include "xf86RandR12.h"
-#include "X11/extensions/render.h"
-#include "X11/extensions/dpmsconst.h"
-#include "X11/Xatom.h"
-#include "picturestr.h"
-
-#include "xf86xv.h"
-
-#define NO_OUTPUT_DEFAULT_WIDTH 1024
-#define NO_OUTPUT_DEFAULT_HEIGHT 768
-/*
- * Initialize xf86CrtcConfig structure
- */
-
-int xf86CrtcConfigPrivateIndex = -1;
-
-void
-xf86CrtcConfigInit (ScrnInfoPtr scrn,
- const xf86CrtcConfigFuncsRec *funcs)
-{
- xf86CrtcConfigPtr config;
-
- if (xf86CrtcConfigPrivateIndex == -1)
- xf86CrtcConfigPrivateIndex = xf86AllocateScrnInfoPrivateIndex();
- config = xnfcalloc (1, sizeof (xf86CrtcConfigRec));
-
- config->funcs = funcs;
-
- scrn->privates[xf86CrtcConfigPrivateIndex].ptr = config;
-}
-
-void
-xf86CrtcSetSizeRange (ScrnInfoPtr scrn,
- int minWidth, int minHeight,
- int maxWidth, int maxHeight)
-{
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
-
- config->minWidth = minWidth;
- config->minHeight = minHeight;
- config->maxWidth = maxWidth;
- config->maxHeight = maxHeight;
-}
-
-void
-xf86CrtcSetScanoutFormats(ScrnInfoPtr scrn,
- int num_formats,
- xf86CrtcScanoutFormat *formats)
-{
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
-
- config->num_scanout_formats = num_formats;
- config->scanout_formats = formats;
-}
-
-/*
- * Crtc functions
- */
-xf86CrtcPtr
-xf86CrtcCreate (ScrnInfoPtr scrn,
- const xf86CrtcFuncsRec *funcs)
-{
- xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
- xf86CrtcPtr crtc, *crtcs;
-
- crtc = calloc(sizeof (xf86CrtcRec), 1);
- if (!crtc)
- return NULL;
- crtc->version = XF86_CRTC_VERSION;
- crtc->scrn = scrn;
- crtc->funcs = funcs;
-#ifdef RANDR_12_INTERFACE
- crtc->randr_crtc = NULL;
-#endif
- crtc->rotation = RR_Rotate_0;
- crtc->desiredRotation = RR_Rotate_0;
- pixman_transform_init_identity (&crtc->crtc_to_framebuffer);
- pixman_f_transform_init_identity (&crtc->f_crtc_to_framebuffer);
- pixman_f_transform_init_identity (&crtc->f_framebuffer_to_crtc);
- pixman_f_transform_init_identity (&crtc->f_screen_to_crtc);
- pixman_f_transform_init_identity (&crtc->user_sprite_position_transform);
- pixman_f_transform_init_identity (&crtc->f_crtc_to_cursor);
- pixman_f_transform_init_identity (&crtc->user_sprite_image_transform);
- crtc->filter = NULL;
- crtc->params = NULL;
- crtc->nparams = 0;
- crtc->filter_width = 0;
- crtc->filter_height = 0;
- crtc->transform_in_use = FALSE;
- crtc->sprite_transform_in_use = FALSE;
- crtc->transformPresent = FALSE;
- crtc->desiredTransformPresent = FALSE;
- memset (&crtc->bounds, '\0', sizeof (crtc->bounds));
-
- /* Preallocate gamma at a sensible size. */
- crtc->gamma_size = 256;
- crtc->gamma_red = malloc(3 * crtc->gamma_size * sizeof (CARD16));
- if (!crtc->gamma_red) {
- free(crtc);
- return NULL;
- }
- crtc->gamma_green = crtc->gamma_red + crtc->gamma_size;
- crtc->gamma_blue = crtc->gamma_green + crtc->gamma_size;
-
- if (xf86_config->crtc)
- crtcs = realloc(xf86_config->crtc,
- (xf86_config->num_crtc + 1) * sizeof (xf86CrtcPtr));
- else
- crtcs = malloc((xf86_config->num_crtc + 1) * sizeof (xf86CrtcPtr));
- if (!crtcs)
- {
- free(crtc);
- return NULL;
- }
- xf86_config->crtc = crtcs;
- xf86_config->crtc[xf86_config->num_crtc++] = crtc;
- return crtc;
-}
-
-void
-xf86CrtcDestroy (xf86CrtcPtr crtc)
-{
- xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(crtc->scrn);
- int c;
-
- (*crtc->funcs->destroy) (crtc);
- for (c = 0; c < xf86_config->num_crtc; c++)
- if (xf86_config->crtc[c] == crtc)
- {
- memmove (&xf86_config->crtc[c],
- &xf86_config->crtc[c+1],
- ((xf86_config->num_crtc - (c + 1)) * sizeof(void*)));
- xf86_config->num_crtc--;
- break;
- }
- free(crtc->params);
- free(crtc->gamma_red);
- free(crtc);
-}
-
-
-/**
- * Return whether any outputs are connected to the specified pipe
- */
-
-Bool
-xf86CrtcInUse (xf86CrtcPtr crtc)
-{
- ScrnInfoPtr pScrn = crtc->scrn;
- xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
- int o;
-
- for (o = 0; o < xf86_config->num_output; o++)
- if (xf86_config->output[o]->crtc == crtc)
- return TRUE;
- return FALSE;
-}
-
-void
-xf86CrtcSetScreenSubpixelOrder (ScreenPtr pScreen)
-{
- int subpixel_order = SubPixelUnknown;
- Bool has_none = FALSE;
- ScrnInfoPtr scrn = xf86Screens[pScreen->myNum];
- xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
- int c, o;
-
- for (c = 0; c < xf86_config->num_crtc; c++)
- {
- xf86CrtcPtr crtc = xf86_config->crtc[c];
-
- for (o = 0; o < xf86_config->num_output; o++)
- {
- xf86OutputPtr output = xf86_config->output[o];
-
- if (output->crtc == crtc)
- {
- switch (output->subpixel_order) {
- case SubPixelNone:
- has_none = TRUE;
- break;
- case SubPixelUnknown:
- break;
- default:
- subpixel_order = output->subpixel_order;
- break;
- }
- }
- if (subpixel_order != SubPixelUnknown)
- break;
- }
- if (subpixel_order != SubPixelUnknown)
- {
- static const int circle[4] = {
- SubPixelHorizontalRGB,
- SubPixelVerticalRGB,
- SubPixelHorizontalBGR,
- SubPixelVerticalBGR,
- };
- int rotate;
- int c;
- for (rotate = 0; rotate < 4; rotate++)
- if (crtc->rotation & (1 << rotate))
- break;
- for (c = 0; c < 4; c++)
- if (circle[c] == subpixel_order)
- break;
- c = (c + rotate) & 0x3;
- if ((crtc->rotation & RR_Reflect_X) && !(c & 1))
- c ^= 2;
- if ((crtc->rotation & RR_Reflect_Y) && (c & 1))
- c ^= 2;
- subpixel_order = circle[c];
- break;
- }
- }
- if (subpixel_order == SubPixelUnknown && has_none)
- subpixel_order = SubPixelNone;
- PictureSetSubpixelOrder (pScreen, subpixel_order);
-}
-
-/**
- * Sets the given video mode on the given crtc
- */
-Bool
-xf86CrtcSet(xf86CrtcPtr crtc, xf86CrtcSetRec *set)
-{
- ScrnInfoPtr scrn = crtc->scrn;
- xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
- int i;
- Bool ret = FALSE;
- Bool didLock = FALSE;
- DisplayModePtr adjusted_mode = NULL;
- DisplayModeRec saved_mode;
- int saved_x, saved_y;
- Rotation saved_rotation;
- RRTransformRec saved_transform;
- Bool saved_transform_present;
- PixmapPtr saved_scanout_pixmap;
-
- crtc->enabled = xf86CrtcInUse (crtc);
-
- /* We only hit this if someone explicitly sends a "disabled" modeset. */
- if (!crtc->enabled)
- {
- /* Check everything for stuff that should be off. */
- xf86DisableUnusedFunctions(scrn);
- return TRUE;
- }
-
- /* See if nothing has changed */
- if (!set->flags)
- return TRUE;
-
- saved_mode = crtc->mode;
- saved_x = crtc->x;
- saved_y = crtc->y;
- saved_rotation = crtc->rotation;
- saved_scanout_pixmap = crtc->scanoutPixmap;
- if (crtc->transformPresent) {
- RRTransformInit (&saved_transform);
- RRTransformCopy (&saved_transform, &crtc->transform);
- }
- saved_transform_present = crtc->transformPresent;
-
- /* Update crtc values up front so the driver can rely on them for mode
- * setting.
- */
- if (set->flags & XF86CrtcSetMode)
- crtc->mode = *set->mode;
- if (set->flags & XF86CrtcSetOrigin) {
- crtc->x = set->x;
- crtc->y = set->y;
- }
- if (set->flags & XF86CrtcSetRotation)
- crtc->rotation = set->rotation;
- if (set->flags & XF86CrtcSetScanoutPixmap)
- crtc->scanoutPixmap = set->scanout_pixmap;
-
- if (set->flags & XF86CrtcSetTransform) {
- if (set->transform) {
- RRTransformCopy (&crtc->transform, set->transform);
- crtc->transformPresent = TRUE;
- } else
- crtc->transformPresent = FALSE;
- }
-
- if (crtc->funcs->set) {
- ret = crtc->funcs->set(crtc, set->flags);
- goto done;
- }
-
- if (set->flags == XF86CrtcSetOrigin && crtc->funcs->set_origin) {
- ret = xf86CrtcRotate(crtc);
- if (ret)
- crtc->funcs->set_origin(crtc, crtc->x, crtc->y);
- goto done;
- }
-
- if (crtc->funcs->set_mode_major) {
- ret = crtc->funcs->set_mode_major(crtc, &crtc->mode,
- crtc->rotation,
- crtc->x, crtc->y);
- goto done;
- }
-
- adjusted_mode = xf86DuplicateMode(&crtc->mode);
-
- didLock = crtc->funcs->lock (crtc);
- /* Pass our mode to the outputs and the CRTC to give them a chance to
- * adjust it according to limitations or output properties, and also
- * a chance to reject the mode entirely.
- */
- for (i = 0; i < xf86_config->num_output; i++) {
- xf86OutputPtr output = xf86_config->output[i];
-
- if (output->crtc != crtc)
- continue;
-
- if (!output->funcs->mode_fixup(output, &crtc->mode, adjusted_mode)) {
- goto done;
- }
- }
-
- if (!crtc->funcs->mode_fixup(crtc, &crtc->mode, adjusted_mode)) {
- goto done;
- }
-
- if (!xf86CrtcRotate (crtc))
- goto done;
-
- /* Prepare the outputs and CRTCs before setting the mode. */
- for (i = 0; i < xf86_config->num_output; i++) {
- xf86OutputPtr output = xf86_config->output[i];
-
- if (output->crtc != crtc)
- continue;
-
- /* Disable the output as the first thing we do. */
- output->funcs->prepare(output);
- }
-
- crtc->funcs->prepare(crtc);
-
- /* Set up the DPLL and any output state that needs to adjust or depend
- * on the DPLL.
- */
- crtc->funcs->mode_set(crtc, &crtc->mode, adjusted_mode, crtc->x, crtc->y);
- for (i = 0; i < xf86_config->num_output; i++)
- {
- xf86OutputPtr output = xf86_config->output[i];
- if (output->crtc == crtc)
- output->funcs->mode_set(output, &crtc->mode, adjusted_mode);
- }
-
- /* Only upload when needed, to avoid unneeded delays. */
- if (!crtc->active && crtc->funcs->gamma_set)
- crtc->funcs->gamma_set(crtc, crtc->gamma_red, crtc->gamma_green,
- crtc->gamma_blue, crtc->gamma_size);
-
- /* Now, enable the clocks, plane, pipe, and outputs that we set up. */
- crtc->funcs->commit(crtc);
- for (i = 0; i < xf86_config->num_output; i++)
- {
- xf86OutputPtr output = xf86_config->output[i];
- if (output->crtc == crtc)
- output->funcs->commit(output);
- }
-
- ret = TRUE;
-
-done:
- if (ret) {
- crtc->active = TRUE;
- if (scrn->pScreen)
- xf86CrtcSetScreenSubpixelOrder (scrn->pScreen);
- if (scrn->ModeSet)
- scrn->ModeSet(scrn);
- } else {
- crtc->x = saved_x;
- crtc->y = saved_y;
- crtc->rotation = saved_rotation;
- crtc->mode = saved_mode;
- if (saved_transform_present)
- RRTransformCopy (&crtc->transform, &saved_transform);
- crtc->transformPresent = saved_transform_present;
- crtc->scanoutPixmap = saved_scanout_pixmap;
- }
-
- if (adjusted_mode) {
- free(adjusted_mode->name);
- free(adjusted_mode);
- }
-
- if (didLock)
- crtc->funcs->unlock (crtc);
-
- return ret;
-}
-
-/**
- * Pans the screen, does not change the mode
- */
-void
-xf86CrtcSetOrigin (xf86CrtcPtr crtc, int x, int y)
-{
- xf86CrtcSetRec set;
-
- if (x != crtc->x || y != crtc->y) {
- set.x = x;
- set.y = y;
- set.flags = XF86CrtcSetOrigin;
- (void) xf86CrtcSet(crtc, &set);
- }
-}
-
-/*
- * Output functions
- */
-
-extern XF86ConfigPtr xf86configptr;
-
-typedef enum {
- OPTION_PREFERRED_MODE,
- OPTION_POSITION,
- OPTION_BELOW,
- OPTION_RIGHT_OF,
- OPTION_ABOVE,
- OPTION_LEFT_OF,
- OPTION_ENABLE,
- OPTION_DISABLE,
- OPTION_MIN_CLOCK,
- OPTION_MAX_CLOCK,
- OPTION_IGNORE,
- OPTION_ROTATE,
- OPTION_PANNING,
- OPTION_PRIMARY,
- OPTION_DEFAULT_MODES,
-} OutputOpts;
-
-static OptionInfoRec xf86OutputOptions[] = {
- {OPTION_PREFERRED_MODE, "PreferredMode", OPTV_STRING, {0}, FALSE },
- {OPTION_POSITION, "Position", OPTV_STRING, {0}, FALSE },
- {OPTION_BELOW, "Below", OPTV_STRING, {0}, FALSE },
- {OPTION_RIGHT_OF, "RightOf", OPTV_STRING, {0}, FALSE },
- {OPTION_ABOVE, "Above", OPTV_STRING, {0}, FALSE },
- {OPTION_LEFT_OF, "LeftOf", OPTV_STRING, {0}, FALSE },
- {OPTION_ENABLE, "Enable", OPTV_BOOLEAN, {0}, FALSE },
- {OPTION_DISABLE, "Disable", OPTV_BOOLEAN, {0}, FALSE },
- {OPTION_MIN_CLOCK, "MinClock", OPTV_FREQ, {0}, FALSE },
- {OPTION_MAX_CLOCK, "MaxClock", OPTV_FREQ, {0}, FALSE },
- {OPTION_IGNORE, "Ignore", OPTV_BOOLEAN, {0}, FALSE },
- {OPTION_ROTATE, "Rotate", OPTV_STRING, {0}, FALSE },
- {OPTION_PANNING, "Panning", OPTV_STRING, {0}, FALSE },
- {OPTION_PRIMARY, "Primary", OPTV_BOOLEAN, {0}, FALSE },
- {OPTION_DEFAULT_MODES, "DefaultModes", OPTV_BOOLEAN, {0}, FALSE },
- {-1, NULL, OPTV_NONE, {0}, FALSE },
-};
-
-enum {
- OPTION_MODEDEBUG,
-};
-
-static OptionInfoRec xf86DeviceOptions[] = {
- {OPTION_MODEDEBUG, "ModeDebug", OPTV_BOOLEAN, {0}, FALSE },
- {-1, NULL, OPTV_NONE, {0}, FALSE },
-};
-
-static void
-xf86OutputSetMonitor (xf86OutputPtr output)
-{
- char *option_name;
- char *monitor;
-
- if (!output->name)
- return;
-
- free(output->options);
-
- output->options = xnfalloc (sizeof (xf86OutputOptions));
- memcpy (output->options, xf86OutputOptions, sizeof (xf86OutputOptions));
-
- XNFasprintf(&option_name, "monitor-%s", output->name);
- monitor = xf86findOptionValue (output->scrn->options, option_name);
- if (!monitor)
- monitor = output->name;
- else
- xf86MarkOptionUsedByName (output->scrn->options, option_name);
- free(option_name);
- output->conf_monitor = xf86findMonitor (monitor,
- xf86configptr->conf_monitor_lst);
- /*
- * Find the monitor section of the screen and use that
- */
- if (!output->conf_monitor && output->use_screen_monitor)
- output->conf_monitor = xf86findMonitor (output->scrn->monitor->id,
- xf86configptr->conf_monitor_lst);
- if (output->conf_monitor)
- {
- xf86DrvMsg (output->scrn->scrnIndex, X_INFO,
- "Output %s using monitor section %s\n",
- output->name, output->conf_monitor->mon_identifier);
- xf86ProcessOptions (output->scrn->scrnIndex,
- output->conf_monitor->mon_option_lst,
- output->options);
- }
- else
- xf86DrvMsg (output->scrn->scrnIndex, X_INFO,
- "Output %s has no monitor section\n",
- output->name);
-}
-
-static Bool
-xf86OutputEnabled (xf86OutputPtr output, Bool strict)
-{
- Bool enable, disable;
-
- /* check to see if this output was enabled in the config file */
- if (xf86GetOptValBool (output->options, OPTION_ENABLE, &enable) && enable)
- {
- xf86DrvMsg (output->scrn->scrnIndex, X_INFO,
- "Output %s enabled by config file\n", output->name);
- return TRUE;
- }
- /* or if this output was disabled in the config file */
- if (xf86GetOptValBool (output->options, OPTION_DISABLE, &disable) && disable)
- {
- xf86DrvMsg (output->scrn->scrnIndex, X_INFO,
- "Output %s disabled by config file\n", output->name);
- return FALSE;
- }
-
- /* If not, try to only light up the ones we know are connected */
- if (strict) {
- enable = output->status == XF86OutputStatusConnected;
- }
- /* But if that fails, try to light up even outputs we're unsure of */
- else {
- enable = output->status != XF86OutputStatusDisconnected;
- }
-
- xf86DrvMsg (output->scrn->scrnIndex, X_INFO,
- "Output %s %sconnected\n", output->name, enable ? "" : "dis");
- return enable;
-}
-
-static Bool
-xf86OutputIgnored (xf86OutputPtr output)
-{
- return xf86ReturnOptValBool (output->options, OPTION_IGNORE, FALSE);
-}
-
-static char *direction[4] = {
- "normal",
- "left",
- "inverted",
- "right"
-};
-
-static Rotation
-xf86OutputInitialRotation (xf86OutputPtr output)
-{
- char *rotate_name = xf86GetOptValString (output->options,
- OPTION_ROTATE);
- int i;
-
- if (!rotate_name) {
- if (output->initial_rotation)
- return output->initial_rotation;
- return RR_Rotate_0;
- }
-
- for (i = 0; i < 4; i++)
- if (xf86nameCompare (direction[i], rotate_name) == 0)
- return 1 << i;
- return RR_Rotate_0;
-}
-
-xf86OutputPtr
-xf86OutputCreate (ScrnInfoPtr scrn,
- const xf86OutputFuncsRec *funcs,
- const char *name)
-{
- xf86OutputPtr output, *outputs;
- xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
- int len;
- Bool primary;
-
- if (name)
- len = strlen (name) + 1;
- else
- len = 0;
-
- output = calloc(sizeof (xf86OutputRec) + len, 1);
- if (!output)
- return NULL;
- output->scrn = scrn;
- output->funcs = funcs;
- if (name)
- {
- output->name = (char *) (output + 1);
- strcpy (output->name, name);
- }
- output->subpixel_order = SubPixelUnknown;
- /*
- * Use the old per-screen monitor section for the first output
- */
- output->use_screen_monitor = (xf86_config->num_output == 0);
-#ifdef RANDR_12_INTERFACE
- output->randr_output = NULL;
-#endif
- if (name)
- {
- xf86OutputSetMonitor (output);
- if (xf86OutputIgnored (output))
- {
- free(output);
- return FALSE;
- }
- }
-
-
- if (xf86_config->output)
- outputs = realloc(xf86_config->output,
- (xf86_config->num_output + 1) * sizeof (xf86OutputPtr));
- else
- outputs = malloc((xf86_config->num_output + 1) * sizeof (xf86OutputPtr));
- if (!outputs)
- {
- free(output);
- return NULL;
- }
-
- xf86_config->output = outputs;
-
- if (xf86GetOptValBool (output->options, OPTION_PRIMARY, &primary) && primary)
- {
- memmove(xf86_config->output + 1, xf86_config->output,
- xf86_config->num_output * sizeof (xf86OutputPtr));
- xf86_config->output[0] = output;
- }
- else
- {
- xf86_config->output[xf86_config->num_output] = output;
- }
-
- xf86_config->num_output++;
-
- return output;
-}
-
-Bool
-xf86OutputRename (xf86OutputPtr output, const char *name)
-{
- char *newname = strdup(name);
-
- if (!newname)
- return FALSE; /* so sorry... */
-
- if (output->name && output->name != (char *) (output + 1))
- free(output->name);
- output->name = newname;
- xf86OutputSetMonitor (output);
- if (xf86OutputIgnored (output))
- return FALSE;
- return TRUE;
-}
-
-void
-xf86OutputUseScreenMonitor (xf86OutputPtr output, Bool use_screen_monitor)
-{
- if (use_screen_monitor != output->use_screen_monitor)
- {
- output->use_screen_monitor = use_screen_monitor;
- xf86OutputSetMonitor (output);
- }
-}
-
-void
-xf86OutputDestroy (xf86OutputPtr output)
-{
- ScrnInfoPtr scrn = output->scrn;
- xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
- int o;
-
- (*output->funcs->destroy) (output);
- while (output->probed_modes)
- xf86DeleteMode (&output->probed_modes, output->probed_modes);
- for (o = 0; o < xf86_config->num_output; o++)
- if (xf86_config->output[o] == output)
- {
- memmove (&xf86_config->output[o],
- &xf86_config->output[o+1],
- ((xf86_config->num_output - (o + 1)) * sizeof(void*)));
- xf86_config->num_output--;
- break;
- }
- if (output->name && output->name != (char *) (output + 1))
- free(output->name);
- free(output);
-}
-
-/*
- * Called during CreateScreenResources to hook up RandR
- */
-static Bool
-xf86CrtcCreateScreenResources (ScreenPtr screen)
-{
- ScrnInfoPtr scrn = xf86Screens[screen->myNum];
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
-
- screen->CreateScreenResources = config->CreateScreenResources;
-
- if (!(*screen->CreateScreenResources)(screen))
- return FALSE;
-
- if (!xf86RandR12CreateScreenResources (screen))
- return FALSE;
-
- return TRUE;
-}
-
-/*
- * Clean up config on server reset
- */
-static Bool
-xf86CrtcCloseScreen (int index, ScreenPtr screen)
-{
- ScrnInfoPtr scrn = xf86Screens[screen->myNum];
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
- int o, c;
-
- screen->CloseScreen = config->CloseScreen;
-
- xf86RotateCloseScreen (screen);
-
- for (o = 0; o < config->num_output; o++)
- {
- xf86OutputPtr output = config->output[o];
-
- output->randr_output = NULL;
- }
- for (c = 0; c < config->num_crtc; c++)
- {
- xf86CrtcPtr crtc = config->crtc[c];
-
- crtc->randr_crtc = NULL;
- }
- xf86RandR12CloseScreen (screen);
-
- return screen->CloseScreen (index, screen);
-}
-
-/*
- * Called at ScreenInit time to set up
- */
-#ifdef RANDR_13_INTERFACE
-int
-#else
-Bool
-#endif
-xf86CrtcScreenInit (ScreenPtr screen)
-{
- ScrnInfoPtr scrn = xf86Screens[screen->myNum];
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
- int c;
-
- /* Rotation */
- xf86DrvMsg(scrn->scrnIndex, X_INFO, "RandR 1.2 enabled, ignore the following RandR disabled message.\n");
- xf86DisableRandR(); /* Disable old RandR extension support */
- xf86RandR12Init (screen);
-
- /* support all rotations if every crtc has the shadow alloc funcs */
- for (c = 0; c < config->num_crtc; c++)
- {
- xf86CrtcPtr crtc = config->crtc[c];
- if (!crtc->funcs->shadow_allocate || !crtc->funcs->shadow_create)
- break;
- }
- if (c == config->num_crtc)
- {
- xf86RandR12SetRotations (screen, RR_Rotate_0 | RR_Rotate_90 |
- RR_Rotate_180 | RR_Rotate_270 |
- RR_Reflect_X | RR_Reflect_Y);
- xf86RandR12SetTransformSupport (screen, TRUE);
- }
- else
- {
- xf86RandR12SetRotations (screen, RR_Rotate_0);
- xf86RandR12SetTransformSupport (screen, FALSE);
- }
-
- /* Wrap CreateScreenResources so we can initialize the RandR code */
- config->CreateScreenResources = screen->CreateScreenResources;
- screen->CreateScreenResources = xf86CrtcCreateScreenResources;
-
- config->CloseScreen = screen->CloseScreen;
- screen->CloseScreen = xf86CrtcCloseScreen;
-
-#ifdef XFreeXDGA
- _xf86_di_dga_init_internal(screen);
-#endif
-#ifdef RANDR_13_INTERFACE
- return RANDR_INTERFACE_VERSION;
-#else
- return TRUE;
-#endif
-}
-
-static DisplayModePtr
-xf86DefaultMode (xf86OutputPtr output, int width, int height)
-{
- DisplayModePtr target_mode = NULL;
- DisplayModePtr mode;
- int target_diff = 0;
- int target_preferred = 0;
- int mm_height;
-
- mm_height = output->mm_height;
- if (!mm_height)
- mm_height = (768 * 25.4) / DEFAULT_DPI;
- /*
- * Pick a mode closest to DEFAULT_DPI
- */
- for (mode = output->probed_modes; mode; mode = mode->next)
- {
- int dpi;
- int preferred = (((mode->type & M_T_PREFERRED) != 0) +
- ((mode->type & M_T_USERPREF) != 0));
- int diff;
-
- if (xf86ModeWidth (mode, output->initial_rotation) > width ||
- xf86ModeHeight (mode, output->initial_rotation) > height)
- continue;
-
- /* yes, use VDisplay here, not xf86ModeHeight */
- dpi = (mode->VDisplay * 254) / (mm_height * 10);
- diff = dpi - DEFAULT_DPI;
- diff = diff < 0 ? -diff : diff;
- if (target_mode == NULL || (preferred > target_preferred) ||
- (preferred == target_preferred && diff < target_diff))
- {
- target_mode = mode;
- target_diff = diff;
- target_preferred = preferred;
- }
- }
- return target_mode;
-}
-
-static DisplayModePtr
-xf86ClosestMode (xf86OutputPtr output,
- DisplayModePtr match, Rotation match_rotation,
- int width, int height)
-{
- DisplayModePtr target_mode = NULL;
- DisplayModePtr mode;
- int target_diff = 0;
-
- /*
- * Pick a mode closest to the specified mode
- */
- for (mode = output->probed_modes; mode; mode = mode->next)
- {
- int dx, dy;
- int diff;
-
- if (xf86ModeWidth (mode, output->initial_rotation) > width ||
- xf86ModeHeight (mode, output->initial_rotation) > height)
- continue;
-
- /* exact matches are preferred */
- if (output->initial_rotation == match_rotation &&
- xf86ModesEqual (mode, match))
- return mode;
-
- dx = xf86ModeWidth (match, match_rotation) - xf86ModeWidth (mode, output->initial_rotation);
- dy = xf86ModeHeight (match, match_rotation) - xf86ModeHeight (mode, output->initial_rotation);
- diff = dx * dx + dy * dy;
- if (target_mode == NULL || diff < target_diff)
- {
- target_mode = mode;
- target_diff = diff;
- }
- }
- return target_mode;
-}
-
-static DisplayModePtr
-xf86OutputHasPreferredMode (xf86OutputPtr output, int width, int height)
-{
- DisplayModePtr mode;
-
- for (mode = output->probed_modes; mode; mode = mode->next)
- {
- if (xf86ModeWidth (mode, output->initial_rotation) > width ||
- xf86ModeHeight (mode, output->initial_rotation) > height)
- continue;
-
- if (mode->type & M_T_PREFERRED)
- return mode;
- }
- return NULL;
-}
-
-static DisplayModePtr
-xf86OutputHasUserPreferredMode (xf86OutputPtr output)
-{
- DisplayModePtr mode, first = output->probed_modes;
-
- for (mode = first; mode && mode->next != first; mode = mode->next)
- if (mode->type & M_T_USERPREF)
- return mode;
-
- return NULL;
-}
-
-static int
-xf86PickCrtcs (ScrnInfoPtr scrn,
- xf86CrtcPtr *best_crtcs,
- DisplayModePtr *modes,
- int n,
- int width,
- int height)
-{
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
- int c, o;
- xf86OutputPtr output;
- xf86CrtcPtr crtc;
- xf86CrtcPtr *crtcs;
- xf86CrtcPtr best_crtc;
- int best_score;
- int score;
- int my_score;
-
- if (n == config->num_output)
- return 0;
- output = config->output[n];
-
- /*
- * Compute score with this output disabled
- */
- best_crtcs[n] = NULL;
- best_crtc = NULL;
- best_score = xf86PickCrtcs (scrn, best_crtcs, modes, n+1, width, height);
- if (modes[n] == NULL)
- return best_score;
-
- crtcs = malloc(config->num_output * sizeof (xf86CrtcPtr));
- if (!crtcs)
- return best_score;
-
- my_score = 1;
- /* Score outputs that are known to be connected higher */
- if (output->status == XF86OutputStatusConnected)
- my_score++;
- /* Score outputs with preferred modes higher */
- if (xf86OutputHasPreferredMode (output, width, height))
- my_score++;
- /*
- * Select a crtc for this output and
- * then attempt to configure the remaining
- * outputs
- */
- for (c = 0; c < config->num_crtc; c++)
- {
- if ((output->possible_crtcs & (1 << c)) == 0)
- continue;
-
- crtc = config->crtc[c];
- /*
- * Check to see if some other output is
- * using this crtc
- */
- for (o = 0; o < n; o++)
- if (best_crtcs[o] == crtc)
- break;
- if (o < n)
- {
- /*
- * If the two outputs desire the same mode,
- * see if they can be cloned
- */
- if (xf86ModesEqual (modes[o], modes[n]) &&
- config->output[o]->initial_rotation == config->output[n]->initial_rotation &&
- config->output[o]->initial_x == config->output[n]->initial_x &&
- config->output[o]->initial_y == config->output[n]->initial_y)
- {
- if ((output->possible_clones & (1 << o)) == 0)
- continue; /* nope, try next CRTC */
- }
- else
- continue; /* different modes, can't clone */
- }
- crtcs[n] = crtc;
- memcpy (crtcs, best_crtcs, n * sizeof (xf86CrtcPtr));
- score = my_score + xf86PickCrtcs (scrn, crtcs, modes, n+1, width, height);
- if (score > best_score)
- {
- best_crtc = crtc;
- best_score = score;
- memcpy (best_crtcs, crtcs, config->num_output * sizeof (xf86CrtcPtr));
- }
- }
- free(crtcs);
- return best_score;
-}
-
-
-/*
- * Compute the virtual size necessary to place all of the available
- * crtcs in the specified configuration.
- *
- * canGrow indicates that the driver can make the screen larger than its initial
- * configuration. If FALSE, this function will enlarge the screen to include
- * the largest available mode.
- */
-
-static void
-xf86DefaultScreenLimits (ScrnInfoPtr scrn, int *widthp, int *heightp,
- Bool canGrow)
-{
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
- int width = 0, height = 0;
- int o;
- int c;
- int s;
-
- for (c = 0; c < config->num_crtc; c++)
- {
- int crtc_width = 0, crtc_height = 0;
- xf86CrtcPtr crtc = config->crtc[c];
-
- if (crtc->enabled)
- {
- crtc_width = crtc->desiredX + xf86ModeWidth (&crtc->desiredMode, crtc->desiredRotation);
- crtc_height = crtc->desiredY + xf86ModeHeight (&crtc->desiredMode, crtc->desiredRotation);
- }
- if (!canGrow) {
- for (o = 0; o < config->num_output; o++)
- {
- xf86OutputPtr output = config->output[o];
-
- for (s = 0; s < config->num_crtc; s++)
- if (output->possible_crtcs & (1 << s))
- {
- DisplayModePtr mode;
- for (mode = output->probed_modes; mode; mode = mode->next)
- {
- if (mode->HDisplay > crtc_width)
- crtc_width = mode->HDisplay;
- if (mode->VDisplay > crtc_width)
- crtc_width = mode->VDisplay;
- if (mode->VDisplay > crtc_height)
- crtc_height = mode->VDisplay;
- if (mode->HDisplay > crtc_height)
- crtc_height = mode->HDisplay;
- }
- }
- }
- }
- if (crtc_width > width)
- width = crtc_width;
- if (crtc_height > height)
- height = crtc_height;
- }
- if (config->maxWidth && width > config->maxWidth) width = config->maxWidth;
- if (config->maxHeight && height > config->maxHeight) height = config->maxHeight;
- if (config->minWidth && width < config->minWidth) width = config->minWidth;
- if (config->minHeight && height < config->minHeight) height = config->minHeight;
- *widthp = width;
- *heightp = height;
-}
-
-#define POSITION_UNSET -100000
-
-/*
- * check if the user configured any outputs at all
- * with either a position or a relative setting or a mode.
- */
-static Bool
-xf86UserConfiguredOutputs(ScrnInfoPtr scrn, DisplayModePtr *modes)
-{
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
- int o;
- Bool user_conf = FALSE;
-
- for (o = 0; o < config->num_output; o++)
- {
- xf86OutputPtr output = config->output[o];
- char *position;
- char *relative_name;
- OutputOpts relation;
- int r;
- static const OutputOpts relations[] = {
- OPTION_BELOW, OPTION_RIGHT_OF, OPTION_ABOVE, OPTION_LEFT_OF
- };
-
- position = xf86GetOptValString (output->options,
- OPTION_POSITION);
- if (position)
- user_conf = TRUE;
-
- relation = 0;
- relative_name = NULL;
- for (r = 0; r < 4; r++)
- {
- relation = relations[r];
- relative_name = xf86GetOptValString (output->options,
- relation);
- if (relative_name)
- break;
- }
- if (relative_name)
- user_conf = TRUE;
-
- modes[o] = xf86OutputHasUserPreferredMode(output);
- if (modes[o])
- user_conf = TRUE;
- }
-
- return user_conf;
-}
-
-static Bool
-xf86InitialOutputPositions (ScrnInfoPtr scrn, DisplayModePtr *modes)
-{
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
- int o;
- int min_x, min_y;
-
- for (o = 0; o < config->num_output; o++)
- {
- xf86OutputPtr output = config->output[o];
-
- output->initial_x = output->initial_y = POSITION_UNSET;
- }
-
- /*
- * Loop until all outputs are set
- */
- for (;;)
- {
- Bool any_set = FALSE;
- Bool keep_going = FALSE;
-
- for (o = 0; o < config->num_output; o++)
- {
- static const OutputOpts relations[] = {
- OPTION_BELOW, OPTION_RIGHT_OF, OPTION_ABOVE, OPTION_LEFT_OF
- };
- xf86OutputPtr output = config->output[o];
- xf86OutputPtr relative;
- char *relative_name;
- char *position;
- OutputOpts relation;
- int r;
-
- if (output->initial_x != POSITION_UNSET)
- continue;
- position = xf86GetOptValString (output->options,
- OPTION_POSITION);
- /*
- * Absolute position wins
- */
- if (position)
- {
- int x, y;
- if (sscanf (position, "%d %d", &x, &y) == 2)
- {
- output->initial_x = x;
- output->initial_y = y;
- }
- else
- {
- xf86DrvMsg (scrn->scrnIndex, X_ERROR,
- "Output %s position not of form \"x y\"\n",
- output->name);
- output->initial_x = output->initial_y = 0;
- }
- any_set = TRUE;
- continue;
- }
- /*
- * Next comes relative positions
- */
- relation = 0;
- relative_name = NULL;
- for (r = 0; r < 4; r++)
- {
- relation = relations[r];
- relative_name = xf86GetOptValString (output->options,
- relation);
- if (relative_name)
- break;
- }
- if (relative_name)
- {
- int or;
- relative = NULL;
- for (or = 0; or < config->num_output; or++)
- {
- xf86OutputPtr out_rel = config->output[or];
- XF86ConfMonitorPtr rel_mon = out_rel->conf_monitor;
-
- if (rel_mon)
- {
- if (xf86nameCompare (rel_mon->mon_identifier,
- relative_name) == 0)
- {
- relative = config->output[or];
- break;
- }
- }
- if (strcmp (out_rel->name, relative_name) == 0)
- {
- relative = config->output[or];
- break;
- }
- }
- if (!relative)
- {
- xf86DrvMsg (scrn->scrnIndex, X_ERROR,
- "Cannot position output %s relative to unknown output %s\n",
- output->name, relative_name);
- output->initial_x = 0;
- output->initial_y = 0;
- any_set = TRUE;
- continue;
- }
- if (!modes[or])
- {
- xf86DrvMsg (scrn->scrnIndex, X_ERROR,
- "Cannot position output %s relative to output %s without modes\n",
- output->name, relative_name);
- output->initial_x = 0;
- output->initial_y = 0;
- any_set = TRUE;
- continue;
- }
- if (relative->initial_x == POSITION_UNSET)
- {
- keep_going = TRUE;
- continue;
- }
- output->initial_x = relative->initial_x;
- output->initial_y = relative->initial_y;
- switch (relation) {
- case OPTION_BELOW:
- output->initial_y += xf86ModeHeight (modes[or], relative->initial_rotation);
- break;
- case OPTION_RIGHT_OF:
- output->initial_x += xf86ModeWidth (modes[or], relative->initial_rotation);
- break;
- case OPTION_ABOVE:
- if (modes[o])
- output->initial_y -= xf86ModeHeight (modes[o], output->initial_rotation);
- break;
- case OPTION_LEFT_OF:
- if (modes[o])
- output->initial_x -= xf86ModeWidth (modes[o], output->initial_rotation);
- break;
- default:
- break;
- }
- any_set = TRUE;
- continue;
- }
-
- /* Nothing set, just stick them at 0,0 */
- output->initial_x = 0;
- output->initial_y = 0;
- any_set = TRUE;
- }
- if (!keep_going)
- break;
- if (!any_set)
- {
- for (o = 0; o < config->num_output; o++)
- {
- xf86OutputPtr output = config->output[o];
- if (output->initial_x == POSITION_UNSET)
- {
- xf86DrvMsg (scrn->scrnIndex, X_ERROR,
- "Output position loop. Moving %s to 0,0\n",
- output->name);
- output->initial_x = output->initial_y = 0;
- break;
- }
- }
- }
- }
-
- /*
- * normalize positions
- */
- min_x = 1000000;
- min_y = 1000000;
- for (o = 0; o < config->num_output; o++)
- {
- xf86OutputPtr output = config->output[o];
-
- if (output->initial_x < min_x)
- min_x = output->initial_x;
- if (output->initial_y < min_y)
- min_y = output->initial_y;
- }
-
- for (o = 0; o < config->num_output; o++)
- {
- xf86OutputPtr output = config->output[o];
-
- output->initial_x -= min_x;
- output->initial_y -= min_y;
- }
- return TRUE;
-}
-
-static void
-xf86InitialPanning (ScrnInfoPtr scrn)
-{
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
- int o;
-
- for (o = 0; o < config->num_output; o++)
- {
- xf86OutputPtr output = config->output[o];
- char *panning = xf86GetOptValString (output->options, OPTION_PANNING);
- int width, height, left, top;
- int track_width, track_height, track_left, track_top;
- int brdr[4];
-
- memset (&output->initialTotalArea, 0, sizeof(BoxRec));
- memset (&output->initialTrackingArea, 0, sizeof(BoxRec));
- memset (output->initialBorder, 0, 4*sizeof(INT16));
-
- if (! panning)
- continue;
-
- switch (sscanf (panning, "%dx%d+%d+%d/%dx%d+%d+%d/%d/%d/%d/%d",
- &width, &height, &left, &top,
- &track_width, &track_height, &track_left, &track_top,
- &brdr[0], &brdr[1], &brdr[2], &brdr[3])) {
- case 12:
- output->initialBorder[0] = brdr[0];
- output->initialBorder[1] = brdr[1];
- output->initialBorder[2] = brdr[2];
- output->initialBorder[3] = brdr[3];
- /* fall through */
- case 8:
- output->initialTrackingArea.x1 = track_left;
- output->initialTrackingArea.y1 = track_top;
- output->initialTrackingArea.x2 = track_left + track_width;
- output->initialTrackingArea.y2 = track_top + track_height;
- /* fall through */
- case 4:
- output->initialTotalArea.x1 = left;
- output->initialTotalArea.y1 = top;
- /* fall through */
- case 2:
- output->initialTotalArea.x2 = output->initialTotalArea.x1 + width;
- output->initialTotalArea.y2 = output->initialTotalArea.y1 + height;
- break;
- default:
- xf86DrvMsg (scrn->scrnIndex, X_ERROR,
- "Broken panning specification '%s' for output %s in config file\n",
- panning, output->name);
- }
- }
-}
-
-/** Return - 0 + if a should be earlier, same or later than b in list
- */
-static int
-xf86ModeCompare (DisplayModePtr a, DisplayModePtr b)
-{
- int diff;
-
- diff = ((b->type & M_T_PREFERRED) != 0) - ((a->type & M_T_PREFERRED) != 0);
- if (diff)
- return diff;
- diff = b->HDisplay * b->VDisplay - a->HDisplay * a->VDisplay;
- if (diff)
- return diff;
- diff = b->Clock - a->Clock;
- return diff;
-}
-
-/**
- * Insertion sort input in-place and return the resulting head
- */
-static DisplayModePtr
-xf86SortModes (DisplayModePtr input)
-{
- DisplayModePtr output = NULL, i, o, n, *op, prev;
-
- /* sort by preferred status and pixel area */
- while (input)
- {
- i = input;
- input = input->next;
- for (op = &output; (o = *op); op = &o->next)
- if (xf86ModeCompare (o, i) > 0)
- break;
- i->next = *op;
- *op = i;
- }
- /* prune identical modes */
- for (o = output; o && (n = o->next); o = n)
- {
- if (!strcmp (o->name, n->name) && xf86ModesEqual (o, n))
- {
- o->next = n->next;
- free(n->name);
- free(n);
- n = o;
- }
- }
- /* hook up backward links */
- prev = NULL;
- for (o = output; o; o = o->next)
- {
- o->prev = prev;
- prev = o;
- }
- return output;
-}
-
-static char *
-preferredMode(ScrnInfoPtr pScrn, xf86OutputPtr output)
-{
- char *preferred_mode = NULL;
-
- /* Check for a configured preference for a particular mode */
- preferred_mode = xf86GetOptValString (output->options,
- OPTION_PREFERRED_MODE);
- if (preferred_mode)
- return preferred_mode;
-
- if (pScrn->display->modes && *pScrn->display->modes)
- preferred_mode = *pScrn->display->modes;
-
- return preferred_mode;
-}
-
-static void
-GuessRangeFromModes(MonPtr mon, DisplayModePtr mode)
-{
- if (!mon || !mode)
- return;
-
- mon->nHsync = 1;
- mon->hsync[0].lo = 1024.0;
- mon->hsync[0].hi = 0.0;
-
- mon->nVrefresh = 1;
- mon->vrefresh[0].lo = 1024.0;
- mon->vrefresh[0].hi = 0.0;
-
- while (mode) {
- if (!mode->HSync)
- mode->HSync = ((float) mode->Clock ) / ((float) mode->HTotal);
-
- if (!mode->VRefresh)
- mode->VRefresh = (1000.0 * ((float) mode->Clock)) /
- ((float) (mode->HTotal * mode->VTotal));
-
- if (mode->HSync < mon->hsync[0].lo)
- mon->hsync[0].lo = mode->HSync;
-
- if (mode->HSync > mon->hsync[0].hi)
- mon->hsync[0].hi = mode->HSync;
-
- if (mode->VRefresh < mon->vrefresh[0].lo)
- mon->vrefresh[0].lo = mode->VRefresh;
-
- if (mode->VRefresh > mon->vrefresh[0].hi)
- mon->vrefresh[0].hi = mode->VRefresh;
-
- mode = mode->next;
- }
-
- /* stretch out the bottom to fit 640x480@60 */
- if (mon->hsync[0].lo > 31.0)
- mon->hsync[0].lo = 31.0;
- if (mon->vrefresh[0].lo > 58.0)
- mon->vrefresh[0].lo = 58.0;
-}
-
-enum det_monrec_source {
- sync_config, sync_edid, sync_default
-};
-
-struct det_monrec_parameter {
- MonRec *mon_rec;
- int *max_clock;
- Bool set_hsync;
- Bool set_vrefresh;
- enum det_monrec_source *sync_source;
-};
-
-static void handle_detailed_monrec(struct detailed_monitor_section *det_mon,
- void *data)
-{
- enum { sync_config, sync_edid, sync_default };
- struct det_monrec_parameter *p;
- p = (struct det_monrec_parameter *)data;
-
- if (det_mon->type == DS_RANGES) {
- struct monitor_ranges *ranges = &det_mon->section.ranges;
- if (p->set_hsync && ranges->max_h) {
- p->mon_rec->hsync[p->mon_rec->nHsync].lo = ranges->min_h;
- p->mon_rec->hsync[p->mon_rec->nHsync].hi = ranges->max_h;
- p->mon_rec->nHsync++;
- if (*p->sync_source == sync_default)
- *p->sync_source = sync_edid;
- }
- if (p->set_vrefresh && ranges->max_v) {
- p->mon_rec->vrefresh[p->mon_rec->nVrefresh].lo = ranges->min_v;
- p->mon_rec->vrefresh[p->mon_rec->nVrefresh].hi = ranges->max_v;
- p->mon_rec->nVrefresh++;
- if (*p->sync_source == sync_default)
- *p->sync_source = sync_edid;
- }
- if (ranges->max_clock * 1000 > *p->max_clock)
- *p->max_clock = ranges->max_clock * 1000;
- }
-}
-
-void
-xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
-{
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
- int o;
-
- /* When canGrow was TRUE in the initial configuration we have to
- * compare against the maximum values so that we don't drop modes.
- * When canGrow was FALSE, the maximum values would have been clamped
- * anyway.
- */
- if (maxX == 0 || maxY == 0) {
- maxX = config->maxWidth;
- maxY = config->maxHeight;
- }
-
- /* Probe the list of modes for each output. */
- for (o = 0; o < config->num_output; o++)
- {
- xf86OutputPtr output = config->output[o];
- DisplayModePtr mode;
- DisplayModePtr config_modes = NULL, output_modes, default_modes = NULL;
- char *preferred_mode;
- xf86MonPtr edid_monitor;
- XF86ConfMonitorPtr conf_monitor;
- MonRec mon_rec;
- int min_clock = 0;
- int max_clock = 0;
- double clock;
- Bool add_default_modes = xf86ReturnOptValBool(output->options, OPTION_DEFAULT_MODES, TRUE);
- Bool debug_modes = config->debug_modes ||
- xf86Initialising;
- enum det_monrec_source sync_source = sync_default;
-
- while (output->probed_modes != NULL)
- xf86DeleteMode(&output->probed_modes, output->probed_modes);
-
- /*
- * Check connection status
- */
- output->status = (*output->funcs->detect)(output);
-
- if (output->status == XF86OutputStatusDisconnected &&
- !xf86ReturnOptValBool(output->options, OPTION_ENABLE, FALSE))
- {
- xf86OutputSetEDID (output, NULL);
- continue;
- }
-
- memset (&mon_rec, '\0', sizeof (mon_rec));
-
- conf_monitor = output->conf_monitor;
-
- if (conf_monitor)
- {
- int i;
-
- for (i = 0; i < conf_monitor->mon_n_hsync; i++)
- {
- mon_rec.hsync[mon_rec.nHsync].lo = conf_monitor->mon_hsync[i].lo;
- mon_rec.hsync[mon_rec.nHsync].hi = conf_monitor->mon_hsync[i].hi;
- mon_rec.nHsync++;
- sync_source = sync_config;
- }
- for (i = 0; i < conf_monitor->mon_n_vrefresh; i++)
- {
- mon_rec.vrefresh[mon_rec.nVrefresh].lo = conf_monitor->mon_vrefresh[i].lo;
- mon_rec.vrefresh[mon_rec.nVrefresh].hi = conf_monitor->mon_vrefresh[i].hi;
- mon_rec.nVrefresh++;
- sync_source = sync_config;
- }
- config_modes = xf86GetMonitorModes (scrn, conf_monitor);
- }
-
- output_modes = (*output->funcs->get_modes) (output);
-
- edid_monitor = output->MonInfo;
-
- if (edid_monitor)
- {
- struct det_monrec_parameter p;
- struct disp_features *features = &edid_monitor->features;
-
- /* if display is not continuous-frequency, don't add default modes */
- if (!GTF_SUPPORTED(features->msc))
- add_default_modes = FALSE;
-
- p.mon_rec = &mon_rec;
- p.max_clock = &max_clock;
- p.set_hsync = mon_rec.nHsync == 0;
- p.set_vrefresh = mon_rec.nVrefresh == 0;
- p.sync_source = &sync_source;
-
- xf86ForEachDetailedBlock(edid_monitor,
- handle_detailed_monrec,
- &p);
- }
-
- if (xf86GetOptValFreq (output->options, OPTION_MIN_CLOCK,
- OPTUNITS_KHZ, &clock))
- min_clock = (int) clock;
- if (xf86GetOptValFreq (output->options, OPTION_MAX_CLOCK,
- OPTUNITS_KHZ, &clock))
- max_clock = (int) clock;
-
- /* If we still don't have a sync range, guess wildly */
- if (!mon_rec.nHsync || !mon_rec.nVrefresh)
- GuessRangeFromModes(&mon_rec, output_modes);
-
- /*
- * These limits will end up setting a 1024x768@60Hz mode by default,
- * which seems like a fairly good mode to use when nothing else is
- * specified
- */
- if (mon_rec.nHsync == 0)
- {
- mon_rec.hsync[0].lo = 31.0;
- mon_rec.hsync[0].hi = 55.0;
- mon_rec.nHsync = 1;
- }
- if (mon_rec.nVrefresh == 0)
- {
- mon_rec.vrefresh[0].lo = 58.0;
- mon_rec.vrefresh[0].hi = 62.0;
- mon_rec.nVrefresh = 1;
- }
-
- if (add_default_modes)
- default_modes = xf86GetDefaultModes ();
-
- /*
- * If this is not an RB monitor, remove RB modes from the default
- * pool. RB modes from the config or the monitor itself are fine.
- */
- if (!mon_rec.reducedblanking)
- xf86ValidateModesReducedBlanking (scrn, default_modes);
-
- if (sync_source == sync_config)
- {
- /*
- * Check output and config modes against sync range from config file
- */
- xf86ValidateModesSync (scrn, output_modes, &mon_rec);
- xf86ValidateModesSync (scrn, config_modes, &mon_rec);
- }
- /*
- * Check default modes against sync range
- */
- xf86ValidateModesSync (scrn, default_modes, &mon_rec);
- /*
- * Check default modes against monitor max clock
- */
- if (max_clock) {
- xf86ValidateModesClocks(scrn, default_modes,
- &min_clock, &max_clock, 1);
- xf86ValidateModesClocks(scrn, output_modes,
- &min_clock, &max_clock, 1);
- }
-
- output->probed_modes = NULL;
- output->probed_modes = xf86ModesAdd (output->probed_modes, config_modes);
- output->probed_modes = xf86ModesAdd (output->probed_modes, output_modes);
- output->probed_modes = xf86ModesAdd (output->probed_modes, default_modes);
-
- /*
- * Check all modes against max size, interlace, and doublescan
- */
- if (maxX && maxY)
- xf86ValidateModesSize (scrn, output->probed_modes,
- maxX, maxY, 0);
-
- {
- int flags = (output->interlaceAllowed ? V_INTERLACE : 0) |
- (output->doubleScanAllowed ? V_DBLSCAN : 0);
- xf86ValidateModesFlags (scrn, output->probed_modes, flags);
- }
-
- /*
- * Check all modes against output
- */
- for (mode = output->probed_modes; mode != NULL; mode = mode->next)
- if (mode->status == MODE_OK)
- mode->status = (*output->funcs->mode_valid)(output, mode);
-
- xf86PruneInvalidModes(scrn, &output->probed_modes, debug_modes);
-
- output->probed_modes = xf86SortModes (output->probed_modes);
-
- /* Check for a configured preference for a particular mode */
- preferred_mode = preferredMode(scrn, output);
-
- if (preferred_mode)
- {
- for (mode = output->probed_modes; mode; mode = mode->next)
- {
- if (!strcmp (preferred_mode, mode->name))
- {
- if (mode != output->probed_modes)
- {
- if (mode->prev)
- mode->prev->next = mode->next;
- if (mode->next)
- mode->next->prev = mode->prev;
- mode->next = output->probed_modes;
- output->probed_modes->prev = mode;
- mode->prev = NULL;
- output->probed_modes = mode;
- }
- mode->type |= (M_T_PREFERRED|M_T_USERPREF);
- break;
- }
- }
- }
-
- output->initial_rotation = xf86OutputInitialRotation (output);
-
- if (debug_modes) {
- if (output->probed_modes != NULL) {
- xf86DrvMsg(scrn->scrnIndex, X_INFO,
- "Printing probed modes for output %s\n",
- output->name);
- } else {
- xf86DrvMsg(scrn->scrnIndex, X_INFO,
- "No remaining probed modes for output %s\n",
- output->name);
- }
- }
- for (mode = output->probed_modes; mode != NULL; mode = mode->next)
- {
- /* The code to choose the best mode per pipe later on will require
- * VRefresh to be set.
- */
- mode->VRefresh = xf86ModeVRefresh(mode);
- xf86SetModeCrtc(mode, INTERLACE_HALVE_V);
-
- if (debug_modes)
- xf86PrintModeline(scrn->scrnIndex, mode);
- }
- }
-}
-
-
-/**
- * Copy one of the output mode lists to the ScrnInfo record
- */
-
-/* XXX where does this function belong? Here? */
-void
-xf86RandR12GetOriginalVirtualSize(ScrnInfoPtr scrn, int *x, int *y);
-
-static DisplayModePtr
-biggestMode(DisplayModePtr a, DisplayModePtr b)
-{
- int A, B;
-
- if (!a)
- return b;
- if (!b)
- return a;
-
- A = a->HDisplay * a->VDisplay;
- B = b->HDisplay * b->VDisplay;
-
- if (A > B)
- return a;
-
- return b;
-}
-
-static xf86OutputPtr
-SetCompatOutput(xf86CrtcConfigPtr config)
-{
- xf86OutputPtr output = NULL, test = NULL;
- DisplayModePtr maxmode = NULL, testmode, mode;
- int o, compat = -1, count, mincount = 0;
-
- /* Look for one that's definitely connected */
- for (o = 0; o < config->num_output; o++)
- {
- test = config->output[o];
- if (!test->crtc)
- continue;
- if (test->status != XF86OutputStatusConnected)
- continue;
- if (!test->probed_modes)
- continue;
-
- testmode = mode = test->probed_modes;
- for (count = 0; mode; mode = mode->next, count++)
- testmode = biggestMode(testmode, mode);
-
- if (!output) {
- output = test;
- compat = o;
- maxmode = testmode;
- mincount = count;
- } else if (maxmode == biggestMode(maxmode, testmode)) {
- output = test;
- compat = o;
- maxmode = testmode;
- mincount = count;
- } else if ((maxmode->HDisplay == testmode->HDisplay) &&
- (maxmode->VDisplay == testmode->VDisplay) &&
- count <= mincount) {
- output = test;
- compat = o;
- maxmode = testmode;
- mincount = count;
- }
- }
-
- /* If we didn't find one, take anything we can get */
- if (!output)
- {
- for (o = 0; o < config->num_output; o++)
- {
- test = config->output[o];
- if (!test->crtc)
- continue;
- if (!test->probed_modes)
- continue;
-
- if (!output) {
- output = test;
- compat = o;
- } else if (test->probed_modes->HDisplay < output->probed_modes->HDisplay) {
- output = test;
- compat = o;
- }
- }
- }
-
- if (compat >= 0) {
- config->compat_output = compat;
- } else {
- /* Don't change the compat output when no valid outputs found */
- output = config->output[config->compat_output];
- }
-
- return output;
-}
-
-void
-xf86SetScrnInfoModes (ScrnInfoPtr scrn)
-{
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
- xf86OutputPtr output;
- xf86CrtcPtr crtc;
- DisplayModePtr last, mode = NULL;
-
- output = SetCompatOutput(config);
-
- if (!output)
- return; /* punt */
-
- crtc = output->crtc;
-
- /* Clear any existing modes from scrn->modes */
- while (scrn->modes != NULL)
- xf86DeleteMode(&scrn->modes, scrn->modes);
-
- /* Set scrn->modes to the mode list for the 'compat' output */
- scrn->modes = xf86DuplicateModes(scrn, output->probed_modes);
-
- if (crtc) {
- for (mode = scrn->modes; mode; mode = mode->next)
- if (xf86ModesEqual (mode, &crtc->desiredMode))
- break;
- }
-
- if (scrn->modes != NULL) {
- /* For some reason, scrn->modes is circular, unlike the other mode
- * lists. How great is that?
- */
- for (last = scrn->modes; last && last->next; last = last->next)
- ;
- last->next = scrn->modes;
- scrn->modes->prev = last;
- if (mode) {
- while (scrn->modes != mode)
- scrn->modes = scrn->modes->next;
- }
- }
- scrn->currentMode = scrn->modes;
-#ifdef XFreeXDGA
- if (scrn->pScreen)
- _xf86_di_dga_reinit_internal(scrn->pScreen);
-#endif
-}
-
-static Bool
-xf86CollectEnabledOutputs(ScrnInfoPtr scrn, xf86CrtcConfigPtr config,
- Bool *enabled)
-{
- Bool any_enabled = FALSE;
- int o;
-
- for (o = 0; o < config->num_output; o++)
- any_enabled |= enabled[o] = xf86OutputEnabled(config->output[o], TRUE);
-
- if (!any_enabled) {
- xf86DrvMsg(scrn->scrnIndex, X_WARNING,
- "No outputs definitely connected, trying again...\n");
-
- for (o = 0; o < config->num_output; o++)
- any_enabled |= enabled[o] = xf86OutputEnabled(config->output[o], FALSE);
- }
-
- return any_enabled;
-}
-
-static Bool
-nextEnabledOutput(xf86CrtcConfigPtr config, Bool *enabled, int *index)
-{
- int o = *index;
-
- for (o++; o < config->num_output; o++) {
- if (enabled[o]) {
- *index = o;
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-static Bool
-aspectMatch(float a, float b)
-{
- return fabs(1 - (a / b)) < 0.05;
-}
-
-static DisplayModePtr
-nextAspectMode(xf86OutputPtr o, DisplayModePtr last, float aspect)
-{
- DisplayModePtr m = NULL;
-
- if (!o)
- return NULL;
-
- if (!last)
- m = o->probed_modes;
- else
- m = last->next;
-
- for (; m; m = m->next)
- if (aspectMatch(aspect, (float)m->HDisplay / (float)m->VDisplay))
- return m;
-
- return NULL;
-}
-
-static DisplayModePtr
-bestModeForAspect(xf86CrtcConfigPtr config, Bool *enabled, float aspect)
-{
- int o = -1, p;
- DisplayModePtr mode = NULL, test = NULL, match = NULL;
-
- if (!nextEnabledOutput(config, enabled, &o))
- return NULL;
- while ((mode = nextAspectMode(config->output[o], mode, aspect))) {
- test = mode;
- for (p = o; nextEnabledOutput(config, enabled, &p); ) {
- test = xf86OutputFindClosestMode(config->output[p], mode);
- if (!test)
- break;
- if (test->HDisplay != mode->HDisplay ||
- test->VDisplay != mode->VDisplay) {
- test = NULL;
- break;
- }
- }
-
- /* if we didn't match it on all outputs, try the next one */
- if (!test)
- continue;
-
- /* if it's bigger than the last one, save it */
- if (!match || (test->HDisplay > match->HDisplay))
- match = test;
- }
-
- /* return the biggest one found */
- return match;
-}
-
-static Bool
-xf86TargetPreferred(ScrnInfoPtr scrn, xf86CrtcConfigPtr config,
- DisplayModePtr *modes, Bool *enabled,
- int width, int height)
-{
- int o, p;
- int max_pref_width = 0, max_pref_height = 0;
- DisplayModePtr *preferred, *preferred_match;
- Bool ret = FALSE;
-
- preferred = xnfcalloc(config->num_output, sizeof(DisplayModePtr));
- preferred_match = xnfcalloc(config->num_output, sizeof(DisplayModePtr));
-
- /* Check if the preferred mode is available on all outputs */
- for (p = -1; nextEnabledOutput(config, enabled, &p); ) {
- Rotation r = config->output[p]->initial_rotation;
- DisplayModePtr mode;
- if ((preferred[p] = xf86OutputHasPreferredMode(config->output[p],
- width, height))) {
- int pref_width = xf86ModeWidth(preferred[p], r);
- int pref_height = xf86ModeHeight(preferred[p], r);
- Bool all_match = TRUE;
-
- for (o = -1; nextEnabledOutput(config, enabled, &o); ) {
- Bool match = FALSE;
- xf86OutputPtr output = config->output[o];
- if (o == p)
- continue;
-
- for (mode = output->probed_modes; mode; mode = mode->next) {
- Rotation r = output->initial_rotation;
- if (xf86ModeWidth(mode, r) == pref_width &&
- xf86ModeHeight(mode, r) == pref_height) {
- preferred[o] = mode;
- match = TRUE;
- }
- }
-
- all_match &= match;
- }
-
- if (all_match &&
- (pref_width*pref_height > max_pref_width*max_pref_height)) {
- for (o = -1; nextEnabledOutput(config, enabled, &o); )
- preferred_match[o] = preferred[o];
- max_pref_width = pref_width;
- max_pref_height = pref_height;
- ret = TRUE;
- }
- }
- }
-
- /*
- * If there's no preferred mode, but only one monitor, pick the
- * biggest mode for its aspect ratio, assuming one exists.
- */
- if (!ret) do {
- int i = 0;
- float aspect = 0.0;
-
- /* count the number of enabled outputs */
- for (i = 0, p = -1; nextEnabledOutput(config, enabled, &p); i++) ;
-
- if (i != 1)
- break;
-
- p = -1;
- nextEnabledOutput(config, enabled, &p);
- if (config->output[p]->mm_height)
- aspect = (float)config->output[p]->mm_width /
- (float)config->output[p]->mm_height;
-
- if (aspect)
- preferred_match[p] = bestModeForAspect(config, enabled, aspect);
-
- if (preferred_match[p])
- ret = TRUE;
-
- } while (0);
-
- if (ret) {
- /* oh good, there is a match. stash the selected modes and return. */
- memcpy(modes, preferred_match,
- config->num_output * sizeof(DisplayModePtr));
- }
-
- free(preferred);
- free(preferred_match);
- return ret;
-}
-
-static Bool
-xf86TargetAspect(ScrnInfoPtr scrn, xf86CrtcConfigPtr config,
- DisplayModePtr *modes, Bool *enabled,
- int width, int height)
-{
- int o;
- float aspect = 0.0, *aspects;
- xf86OutputPtr output;
- Bool ret = FALSE;
- DisplayModePtr guess = NULL, aspect_guess = NULL, base_guess = NULL;
-
- aspects = xnfcalloc(config->num_output, sizeof(float));
-
- /* collect the aspect ratios */
- for (o = -1; nextEnabledOutput(config, enabled, &o); ) {
- output = config->output[o];
- if (output->mm_height)
- aspects[o] = (float)output->mm_width / (float)output->mm_height;
- else
- aspects[o] = 4.0 / 3.0;
- }
-
- /* check that they're all the same */
- for (o = -1; nextEnabledOutput(config, enabled, &o); ) {
- output = config->output[o];
- if (!aspect) {
- aspect = aspects[o];
- } else if (!aspectMatch(aspect, aspects[o])) {
- goto no_aspect_match;
- }
- }
-
- /* if they're all 4:3, just skip ahead and save effort */
- if (!aspectMatch(aspect, 4.0/3.0))
- aspect_guess = bestModeForAspect(config, enabled, aspect);
-
-no_aspect_match:
- base_guess = bestModeForAspect(config, enabled, 4.0/3.0);
-
- guess = biggestMode(base_guess, aspect_guess);
-
- if (!guess)
- goto out;
-
- /* found a mode that works everywhere, now apply it */
- for (o = -1; nextEnabledOutput(config, enabled, &o); ) {
- modes[o] = xf86OutputFindClosestMode(config->output[o], guess);
- }
- ret = TRUE;
-
-out:
- free(aspects);
- return ret;
-}
-
-static Bool
-xf86TargetFallback(ScrnInfoPtr scrn, xf86CrtcConfigPtr config,
- DisplayModePtr *modes, Bool *enabled,
- int width, int height)
-{
- DisplayModePtr target_mode = NULL;
- Rotation target_rotation = RR_Rotate_0;
- DisplayModePtr default_mode;
- int default_preferred, target_preferred = 0, o;
-
- /* User preferred > preferred > other modes */
- for (o = -1; nextEnabledOutput(config, enabled, &o); ) {
- default_mode = xf86DefaultMode (config->output[o], width, height);
- if (!default_mode)
- continue;
-
- default_preferred = (((default_mode->type & M_T_PREFERRED) != 0) +
- ((default_mode->type & M_T_USERPREF) != 0));
-
- if (default_preferred > target_preferred || !target_mode) {
- target_mode = default_mode;
- target_preferred = default_preferred;
- target_rotation = config->output[o]->initial_rotation;
- config->compat_output = o;
- }
- }
-
- if (target_mode)
- modes[config->compat_output] = target_mode;
-
- /* Fill in other output modes */
- for (o = -1; nextEnabledOutput(config, enabled, &o); ) {
- if (!modes[o])
- modes[o] = xf86ClosestMode(config->output[o], target_mode,
- target_rotation, width, height);
- }
-
- return target_mode != NULL;
-}
-
-static Bool
-xf86TargetUserpref(ScrnInfoPtr scrn, xf86CrtcConfigPtr config,
- DisplayModePtr *modes, Bool *enabled,
- int width, int height)
-{
- int o;
-
- if (xf86UserConfiguredOutputs(scrn, modes))
- return xf86TargetFallback(scrn, config, modes, enabled, width, height);
-
- for (o = -1; nextEnabledOutput(config, enabled, &o); )
- if (xf86OutputHasUserPreferredMode(config->output[o]))
- return
- xf86TargetFallback(scrn, config, modes, enabled, width, height);
-
- return FALSE;
-}
-
-static Bool
-xf86CrtcSetInitialGamma(xf86CrtcPtr crtc, float gamma_red, float gamma_green,
- float gamma_blue)
-{
- int i, size = 256;
- CARD16 *red, *green, *blue;
-
- red = malloc(3 * size * sizeof(CARD16));
- green = red + size;
- blue = green + size;
-
- /* Only cause warning if user wanted gamma to be set. */
- if (!crtc->funcs->gamma_set && (gamma_red != 1.0 || gamma_green != 1.0 || gamma_blue != 1.0)) {
- free(red);
- return FALSE;
- } else if (!crtc->funcs->gamma_set) {
- free(red);
- return TRUE;
- }
-
- /* At this early stage none of the randr-interface stuff is up.
- * So take the default gamma size for lack of something better.
- */
- for (i = 0; i < size; i++) {
- if (gamma_red == 1.0)
- red[i] = i << 8;
- else
- red[i] = (CARD16)(pow((double)i/(double)(size - 1),
- 1. / (double)gamma_red) * (double)(size - 1) * 256);
-
- if (gamma_green == 1.0)
- green[i] = i << 8;
- else
- green[i] = (CARD16)(pow((double)i/(double)(size - 1),
- 1. / (double)gamma_green) * (double)(size - 1) * 256);
-
- if (gamma_blue == 1.0)
- blue[i] = i << 8;
- else
- blue[i] = (CARD16)(pow((double)i/(double)(size - 1),
- 1. / (double)gamma_blue) * (double)(size - 1) * 256);
- }
-
- /* Default size is 256, so anything else is failure. */
- if (size != crtc->gamma_size) {
- free(red);
- return FALSE;
- }
-
- crtc->gamma_size = size;
- memcpy (crtc->gamma_red, red, crtc->gamma_size * sizeof (CARD16));
- memcpy (crtc->gamma_green, green, crtc->gamma_size * sizeof (CARD16));
- memcpy (crtc->gamma_blue, blue, crtc->gamma_size * sizeof (CARD16));
-
- /* Do not set gamma now, delay until the crtc is activated. */
-
- free(red);
-
- return TRUE;
-}
-
-static Bool
-xf86OutputSetInitialGamma(xf86OutputPtr output)
-{
- XF86ConfMonitorPtr mon = output->conf_monitor;
- float gamma_red = 1.0, gamma_green = 1.0, gamma_blue = 1.0;
-
- if (!mon)
- return TRUE;
-
- if (!output->crtc)
- return FALSE;
-
- /* Get configured values, where they exist. */
- if (mon->mon_gamma_red >= GAMMA_MIN &&
- mon->mon_gamma_red <= GAMMA_MAX)
- gamma_red = mon->mon_gamma_red;
-
- if (mon->mon_gamma_green >= GAMMA_MIN &&
- mon->mon_gamma_green <= GAMMA_MAX)
- gamma_green = mon->mon_gamma_green;
-
- if (mon->mon_gamma_blue >= GAMMA_MIN &&
- mon->mon_gamma_blue <= GAMMA_MAX)
- gamma_blue = mon->mon_gamma_blue;
-
- /* This avoids setting gamma 1.0 in case another cloned output on this crtc has a specific gamma. */
- if (gamma_red != 1.0 || gamma_green != 1.0 || gamma_blue != 1.0) {
- xf86DrvMsg(output->scrn->scrnIndex, X_INFO, "Output %s wants gamma correction (%.1f, %.1f, %.1f)\n", output->name, gamma_red, gamma_green, gamma_blue);
- return xf86CrtcSetInitialGamma(output->crtc, gamma_red, gamma_green, gamma_blue);
- }else
- return TRUE;
-}
-
-/**
- * Construct default screen configuration
- *
- * Given auto-detected (and, eventually, configured) values,
- * construct a usable configuration for the system
- *
- * canGrow indicates that the driver can resize the screen to larger than its
- * initially configured size via the config->funcs->resize hook. If TRUE, this
- * function will set virtualX and virtualY to match the initial configuration
- * and leave config->max{Width,Height} alone. If FALSE, it will bloat
- * virtual[XY] to include the largest modes and set config->max{Width,Height}
- * accordingly.
- */
-
-Bool
-xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow)
-{
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
- int o, c;
- xf86CrtcPtr *crtcs;
- DisplayModePtr *modes;
- Bool *enabled;
- int width, height;
- int i = scrn->scrnIndex;
- Bool have_outputs = TRUE;
- Bool ret;
-
- /* Set up the device options */
- config->options = xnfalloc (sizeof (xf86DeviceOptions));
- memcpy (config->options, xf86DeviceOptions, sizeof (xf86DeviceOptions));
- xf86ProcessOptions (scrn->scrnIndex,
- scrn->options,
- config->options);
- config->debug_modes = xf86ReturnOptValBool (config->options,
- OPTION_MODEDEBUG, FALSE);
-
- if (scrn->display->virtualX)
- width = scrn->display->virtualX;
- else
- width = config->maxWidth;
- if (scrn->display->virtualY)
- height = scrn->display->virtualY;
- else
- height = config->maxHeight;
-
- xf86ProbeOutputModes (scrn, width, height);
-
- crtcs = xnfcalloc (config->num_output, sizeof (xf86CrtcPtr));
- modes = xnfcalloc (config->num_output, sizeof (DisplayModePtr));
- enabled = xnfcalloc (config->num_output, sizeof (Bool));
-
- ret = xf86CollectEnabledOutputs(scrn, config, enabled);
- if (ret == FALSE && canGrow) {
- xf86DrvMsg(i, X_WARNING, "Unable to find connected outputs - setting %dx%d initial framebuffer\n",
- NO_OUTPUT_DEFAULT_WIDTH, NO_OUTPUT_DEFAULT_HEIGHT);
- have_outputs = FALSE;
- } else {
- if (xf86TargetUserpref(scrn, config, modes, enabled, width, height))
- xf86DrvMsg(i, X_INFO, "Using user preference for initial modes\n");
- else if (xf86TargetPreferred(scrn, config, modes, enabled, width, height))
- xf86DrvMsg(i, X_INFO, "Using exact sizes for initial modes\n");
- else if (xf86TargetAspect(scrn, config, modes, enabled, width, height))
- xf86DrvMsg(i, X_INFO, "Using fuzzy aspect match for initial modes\n");
- else if (xf86TargetFallback(scrn, config, modes, enabled, width, height))
- xf86DrvMsg(i, X_INFO, "Using sloppy heuristic for initial modes\n");
- else
- xf86DrvMsg(i, X_WARNING, "Unable to find initial modes\n");
- }
-
- for (o = -1; nextEnabledOutput(config, enabled, &o); ) {
- if (!modes[o])
- xf86DrvMsg (scrn->scrnIndex, X_ERROR,
- "Output %s enabled but has no modes\n",
- config->output[o]->name);
- else
- xf86DrvMsg (scrn->scrnIndex, X_INFO,
- "Output %s using initial mode %s\n",
- config->output[o]->name, modes[o]->name);
- }
-
- /*
- * Set the position of each output
- */
- if (!xf86InitialOutputPositions (scrn, modes))
- {
- free(crtcs);
- free(modes);
- return FALSE;
- }
-
- /*
- * Set initial panning of each output
- */
- xf86InitialPanning (scrn);
-
- /*
- * Assign CRTCs to fit output configuration
- */
- if (have_outputs && !xf86PickCrtcs (scrn, crtcs, modes, 0, width, height))
- {
- free(crtcs);
- free(modes);
- return FALSE;
- }
-
- /* XXX override xf86 common frame computation code */
-
- scrn->display->frameX0 = 0;
- scrn->display->frameY0 = 0;
-
- for (c = 0; c < config->num_crtc; c++)
- {
- xf86CrtcPtr crtc = config->crtc[c];
-
- crtc->enabled = FALSE;
- memset (&crtc->desiredMode, '\0', sizeof (crtc->desiredMode));
- /* Set default gamma for all crtc's. */
- /* This is done to avoid problems later on with cloned outputs. */
- xf86CrtcSetInitialGamma(crtc, 1.0, 1.0, 1.0);
- }
-
- if (xf86_crtc_supports_gamma(scrn))
- xf86DrvMsg(scrn->scrnIndex, X_INFO, "Using default gamma of (1.0, 1.0, 1.0) unless otherwise stated.\n");
-
- /*
- * Set initial configuration
- */
- for (o = 0; o < config->num_output; o++)
- {
- xf86OutputPtr output = config->output[o];
- DisplayModePtr mode = modes[o];
- xf86CrtcPtr crtc = crtcs[o];
-
- if (mode && crtc)
- {
- crtc->desiredMode = *mode;
- crtc->desiredRotation = output->initial_rotation;
- crtc->desiredX = output->initial_x;
- crtc->desiredY = output->initial_y;
- crtc->desiredTransformPresent = FALSE;
- crtc->enabled = TRUE;
- memcpy (&crtc->panningTotalArea, &output->initialTotalArea, sizeof(BoxRec));
- memcpy (&crtc->panningTrackingArea, &output->initialTrackingArea, sizeof(BoxRec));
- memcpy (crtc->panningBorder, output->initialBorder, 4*sizeof(INT16));
- output->crtc = crtc;
- if (!xf86OutputSetInitialGamma(output))
- xf86DrvMsg (scrn->scrnIndex, X_WARNING, "Initial gamma correction for output %s: failed.\n", output->name);
- } else {
- output->crtc = NULL;
- }
- }
-
- if (scrn->display->virtualX == 0)
- {
- /*
- * Expand virtual size to cover the current config and potential mode
- * switches, if the driver can't enlarge the screen later.
- */
- xf86DefaultScreenLimits (scrn, &width, &height, canGrow);
-
- if (have_outputs == FALSE) {
- if (width < NO_OUTPUT_DEFAULT_WIDTH && height < NO_OUTPUT_DEFAULT_HEIGHT) {
- width = NO_OUTPUT_DEFAULT_WIDTH;
- height = NO_OUTPUT_DEFAULT_HEIGHT;
- }
- }
-
- scrn->display->virtualX = width;
- scrn->display->virtualY = height;
- }
-
- if (width > scrn->virtualX)
- scrn->virtualX = width;
- if (height > scrn->virtualY)
- scrn->virtualY = height;
-
- /*
- * Make sure the configuration isn't too small.
- */
- if (width < config->minWidth || height < config->minHeight)
- return FALSE;
-
- /*
- * Limit the crtc config to virtual[XY] if the driver can't grow the
- * desktop.
- */
- if (!canGrow)
- {
- xf86CrtcSetSizeRange (scrn, config->minWidth, config->minHeight,
- width, height);
- }
-
- if (have_outputs) {
- /* Mirror output modes to scrn mode list */
- xf86SetScrnInfoModes (scrn);
- } else {
- /* Clear any existing modes from scrn->modes */
- while (scrn->modes != NULL)
- xf86DeleteMode(&scrn->modes, scrn->modes);
- scrn->modes = xf86ModesAdd(scrn->modes,
- xf86CVTMode(width, height, 60, 0, 0));
- }
-
-
- free(crtcs);
- free(modes);
- return TRUE;
-}
-
-/*
- * Check the CRTC we're going to map each output to vs. it's current
- * CRTC. If they don't match, we have to disable the output and the CRTC
- * since the driver will have to re-route things.
- */
-static void
-xf86PrepareOutputs (ScrnInfoPtr scrn)
-{
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
- int o;
-
- for (o = 0; o < config->num_output; o++) {
- xf86OutputPtr output = config->output[o];
-#if RANDR_GET_CRTC_INTERFACE
- /* Disable outputs that are unused or will be re-routed */
- if (!output->funcs->get_crtc ||
- output->crtc != (*output->funcs->get_crtc)(output) ||
- output->crtc == NULL)
-#endif
- (*output->funcs->dpms)(output, DPMSModeOff);
- }
-}
-
-static void
-xf86PrepareCrtcs (ScrnInfoPtr scrn)
-{
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
- int c;
-
- for (c = 0; c < config->num_crtc; c++) {
-#if RANDR_GET_CRTC_INTERFACE
- xf86CrtcPtr crtc = config->crtc[c];
- xf86OutputPtr output = NULL;
- uint32_t desired_outputs = 0, current_outputs = 0;
- int o;
-
- for (o = 0; o < config->num_output; o++) {
- output = config->output[o];
- if (output->crtc == crtc)
- desired_outputs |= (1<<o);
- /* If we can't tell where it's mapped, force it off */
- if (!output->funcs->get_crtc) {
- desired_outputs = 0;
- break;
- }
- if ((*output->funcs->get_crtc)(output) == crtc)
- current_outputs |= (1<<o);
- }
-
- /*
- * If mappings are different or the CRTC is unused,
- * we need to disable it
- */
- if (desired_outputs != current_outputs ||
- !desired_outputs)
- (*crtc->funcs->dpms)(crtc, DPMSModeOff);
-#else
- (*crtc->funcs->dpms)(crtc, DPMSModeOff);
-#endif
- }
-}
-
-/*
- * Using the desired mode information in each crtc, set
- * modes (used in EnterVT functions, or at server startup)
- */
-
-Bool
-xf86SetDesiredModes (ScrnInfoPtr scrn)
-{
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
- xf86CrtcPtr crtc = config->crtc[0];
- int c;
-
- /* A driver with this hook will take care of this */
- if (!crtc->funcs->set_mode_major) {
- xf86PrepareOutputs(scrn);
- xf86PrepareCrtcs(scrn);
- }
-
- for (c = 0; c < config->num_crtc; c++)
- {
- xf86OutputPtr output = NULL;
- xf86CrtcSetRec set;
- int o;
- RRTransformPtr transform;
-
- crtc = config->crtc[c];
-
- /* Skip disabled CRTCs */
- if (!crtc->enabled)
- continue;
-
- if (xf86CompatOutput(scrn) && xf86CompatCrtc(scrn) == crtc)
- output = xf86CompatOutput(scrn);
- else
- {
- for (o = 0; o < config->num_output; o++)
- if (config->output[o]->crtc == crtc)
- {
- output = config->output[o];
- break;
- }
- }
- /* paranoia */
- if (!output)
- continue;
-
- /* Mark that we'll need to re-set the mode for sure */
- memset(&crtc->mode, 0, sizeof(crtc->mode));
- if (!crtc->desiredMode.CrtcHDisplay)
- {
- DisplayModePtr mode = xf86OutputFindClosestMode (output, scrn->currentMode);
-
- if (!mode)
- return FALSE;
- crtc->desiredMode = *mode;
- crtc->desiredRotation = RR_Rotate_0;
- crtc->desiredTransformPresent = FALSE;
- crtc->desiredX = 0;
- crtc->desiredY = 0;
- }
-
- if (crtc->desiredTransformPresent)
- transform = &crtc->desiredTransform;
- else
- transform = NULL;
- set.mode = &crtc->desiredMode;
- set.rotation = crtc->desiredRotation;
- set.transform = transform;
- set.x = crtc->desiredX;
- set.y = crtc->desiredY;
- set.flags = (XF86CrtcSetMode | XF86CrtcSetOutput |
- XF86CrtcSetOrigin | XF86CrtcSetTransform |
- XF86CrtcSetRotation);
- if (!xf86CrtcSet(crtc, &set))
- return FALSE;
- }
-
- xf86DisableUnusedFunctions(scrn);
- return TRUE;
-}
-
-/**
- * In the current world order, there are lists of modes per output, which may
- * or may not include the mode that was asked to be set by XFree86's mode
- * selection. Find the closest one, in the following preference order:
- *
- * - Equality
- * - Closer in size to the requested mode, but no larger
- * - Closer in refresh rate to the requested mode.
- */
-
-DisplayModePtr
-xf86OutputFindClosestMode (xf86OutputPtr output, DisplayModePtr desired)
-{
- DisplayModePtr best = NULL, scan = NULL;
-
- for (scan = output->probed_modes; scan != NULL; scan = scan->next)
- {
- /* If there's an exact match, we're done. */
- if (xf86ModesEqual(scan, desired)) {
- best = desired;
- break;
- }
-
- /* Reject if it's larger than the desired mode. */
- if (scan->HDisplay > desired->HDisplay ||
- scan->VDisplay > desired->VDisplay)
- {
- continue;
- }
-
- /*
- * If we haven't picked a best mode yet, use the first
- * one in the size range
- */
- if (best == NULL)
- {
- best = scan;
- continue;
- }
-
- /* Find if it's closer to the right size than the current best
- * option.
- */
- if ((scan->HDisplay > best->HDisplay &&
- scan->VDisplay >= best->VDisplay) ||
- (scan->HDisplay >= best->HDisplay &&
- scan->VDisplay > best->VDisplay))
- {
- best = scan;
- continue;
- }
-
- /* Find if it's still closer to the right refresh than the current
- * best resolution.
- */
- if (scan->HDisplay == best->HDisplay &&
- scan->VDisplay == best->VDisplay &&
- (fabs(scan->VRefresh - desired->VRefresh) <
- fabs(best->VRefresh - desired->VRefresh))) {
- best = scan;
- }
- }
- return best;
-}
-
-/**
- * When setting a mode through XFree86-VidModeExtension or XFree86-DGA,
- * take the specified mode and apply it to the crtc connected to the compat
- * output. Then, find similar modes for the other outputs, as with the
- * InitialConfiguration code above. The goal is to clone the desired
- * mode across all outputs that are currently active.
- */
-
-Bool
-xf86SetSingleMode (ScrnInfoPtr pScrn, DisplayModePtr desired, Rotation rotation)
-{
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
- Bool ok = TRUE;
- xf86OutputPtr compat_output;
- DisplayModePtr compat_mode = NULL;
- int c;
-
- /*
- * Let the compat output drive the final mode selection
- */
- compat_output = xf86CompatOutput(pScrn);
- if (compat_output)
- compat_mode = xf86OutputFindClosestMode (compat_output, desired);
- if (compat_mode)
- desired = compat_mode;
-
- for (c = 0; c < config->num_crtc; c++)
- {
- xf86CrtcPtr crtc = config->crtc[c];
- DisplayModePtr crtc_mode = NULL;
- int o;
- xf86CrtcSetRec set;
-
- if (!crtc->enabled)
- continue;
-
- for (o = 0; o < config->num_output; o++)
- {
- xf86OutputPtr output = config->output[o];
- DisplayModePtr output_mode;
-
- /* skip outputs not on this crtc */
- if (output->crtc != crtc)
- continue;
-
- if (crtc_mode)
- {
- output_mode = xf86OutputFindClosestMode (output, crtc_mode);
- if (output_mode != crtc_mode)
- output->crtc = NULL;
- }
- else
- crtc_mode = xf86OutputFindClosestMode (output, desired);
- }
- if (!crtc_mode)
- {
- crtc->enabled = FALSE;
- continue;
- }
- set.mode = crtc_mode;
- set.rotation = rotation;
- set.transform = NULL;
- set.x = 0;
- set.y = 0;
- set.flags = (XF86CrtcSetMode | XF86CrtcSetOutput |
- XF86CrtcSetOrigin | XF86CrtcSetTransform |
- XF86CrtcSetRotation);
- if (!xf86CrtcSet (crtc, &set))
- ok = FALSE;
- else
- {
- crtc->desiredMode = *crtc_mode;
- crtc->desiredRotation = rotation;
- crtc->desiredTransformPresent = FALSE;
- crtc->desiredX = 0;
- crtc->desiredY = 0;
- }
- }
- xf86DisableUnusedFunctions(pScrn);
-#ifdef RANDR_12_INTERFACE
- xf86RandR12TellChanged (pScrn->pScreen);
-#endif
- return ok;
-}
-
-
-/**
- * Set the DPMS power mode of all outputs and CRTCs.
- *
- * If the new mode is off, it will turn off outputs and then CRTCs.
- * Otherwise, it will affect CRTCs before outputs.
- */
-void
-xf86DPMSSet(ScrnInfoPtr scrn, int mode, int flags)
-{
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
- int i;
-
- if (!scrn->vtSema)
- return;
-
- if (mode == DPMSModeOff) {
- for (i = 0; i < config->num_output; i++) {
- xf86OutputPtr output = config->output[i];
- if (output->crtc != NULL)
- (*output->funcs->dpms) (output, mode);
- }
- }
-
- for (i = 0; i < config->num_crtc; i++) {
- xf86CrtcPtr crtc = config->crtc[i];
- if (crtc->enabled)
- (*crtc->funcs->dpms) (crtc, mode);
- }
-
- if (mode != DPMSModeOff) {
- for (i = 0; i < config->num_output; i++) {
- xf86OutputPtr output = config->output[i];
- if (output->crtc != NULL)
- (*output->funcs->dpms) (output, mode);
- }
- }
-}
-
-/**
- * Implement the screensaver by just calling down into the driver DPMS hooks.
- *
- * Even for monitors with no DPMS support, by the definition of our DPMS hooks,
- * the outputs will still get disabled (blanked).
- */
-Bool
-xf86SaveScreen(ScreenPtr pScreen, int mode)
-{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
-
- if (xf86IsUnblank(mode))
- xf86DPMSSet(pScrn, DPMSModeOn, 0);
- else
- xf86DPMSSet(pScrn, DPMSModeOff, 0);
-
- return TRUE;
-}
-
-/**
- * Disable all inactive crtcs and outputs
- */
-void
-xf86DisableUnusedFunctions(ScrnInfoPtr pScrn)
-{
- xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
- int o, c;
-
- for (o = 0; o < xf86_config->num_output; o++)
- {
- xf86OutputPtr output = xf86_config->output[o];
- if (!output->crtc)
- (*output->funcs->dpms)(output, DPMSModeOff);
- }
-
- for (c = 0; c < xf86_config->num_crtc; c++)
- {
- xf86CrtcPtr crtc = xf86_config->crtc[c];
-
- if (!crtc->enabled)
- {
- crtc->funcs->dpms(crtc, DPMSModeOff);
- memset(&crtc->mode, 0, sizeof(crtc->mode));
- xf86RotateDestroy(crtc);
- crtc->active = FALSE;
- }
- }
- if (pScrn->pScreen)
- xf86_crtc_notify(pScrn->pScreen);
- if (pScrn->ModeSet)
- pScrn->ModeSet(pScrn);
-}
-
-#ifdef RANDR_12_INTERFACE
-
-#define EDID_ATOM_NAME "EDID"
-
-/**
- * Set the RandR EDID property
- */
-static void
-xf86OutputSetEDIDProperty (xf86OutputPtr output, void *data, int data_len)
-{
- Atom edid_atom = MakeAtom(EDID_ATOM_NAME, sizeof(EDID_ATOM_NAME) - 1, TRUE);
-
- /* This may get called before the RandR resources have been created */
- if (output->randr_output == NULL)
- return;
-
- if (data_len != 0) {
- RRChangeOutputProperty(output->randr_output, edid_atom, XA_INTEGER, 8,
- PropModeReplace, data_len, data, FALSE, TRUE);
- } else {
- RRDeleteOutputProperty(output->randr_output, edid_atom);
- }
-}
-
-#endif
-
-/* Pull out a phyiscal size from a detailed timing if available. */
-struct det_phySize_parameter {
- xf86OutputPtr output;
- ddc_quirk_t quirks;
- Bool ret;
-};
-
-static void handle_detailed_physical_size(struct detailed_monitor_section
- *det_mon, void *data)
-{
- struct det_phySize_parameter *p;
- p = (struct det_phySize_parameter *)data;
-
- if (p->ret == TRUE )
- return ;
-
- xf86DetTimingApplyQuirks(det_mon, p->quirks,
- p->output->MonInfo->features.hsize,
- p->output->MonInfo->features.vsize);
- if (det_mon->type == DT &&
- det_mon->section.d_timings.h_size != 0 &&
- det_mon->section.d_timings.v_size != 0) {
-
- p->output->mm_width = det_mon->section.d_timings.h_size;
- p->output->mm_height = det_mon->section.d_timings.v_size;
- p->ret = TRUE;
- }
-}
-
-/**
- * Set the EDID information for the specified output
- */
-void
-xf86OutputSetEDID (xf86OutputPtr output, xf86MonPtr edid_mon)
-{
- ScrnInfoPtr scrn = output->scrn;
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
- Bool debug_modes = config->debug_modes || xf86Initialising;
-#ifdef RANDR_12_INTERFACE
- int size;
-#endif
-
- free(output->MonInfo);
-
- output->MonInfo = edid_mon;
- output->mm_width = 0;
- output->mm_height = 0;
-
- if (debug_modes) {
- xf86DrvMsg(scrn->scrnIndex, X_INFO, "EDID for output %s\n",
- output->name);
- xf86PrintEDID(edid_mon);
- }
-
- /* Set the DDC properties for the 'compat' output */
- if (output == xf86CompatOutput(scrn))
- xf86SetDDCproperties(scrn, edid_mon);
-
-#ifdef RANDR_12_INTERFACE
- /* Set the RandR output properties */
- size = 0;
- if (edid_mon)
- {
- if (edid_mon->ver.version == 1) {
- size = 128;
- if (edid_mon->flags & EDID_COMPLETE_RAWDATA)
- size += edid_mon->no_sections * 128;
- } else if (edid_mon->ver.version == 2)
- size = 256;
- }
- xf86OutputSetEDIDProperty (output, edid_mon ? edid_mon->rawData : NULL, size);
-#endif
-
- if (edid_mon) {
-
- struct det_phySize_parameter p;
- p.output = output;
- p.quirks = xf86DDCDetectQuirks(scrn->scrnIndex,edid_mon, FALSE);
- p.ret = FALSE;
- xf86ForEachDetailedBlock(edid_mon,
- handle_detailed_physical_size, &p);
-
- /* if no mm size is available from a detailed timing, check the max size field */
- if ((!output->mm_width || !output->mm_height) &&
- (edid_mon->features.hsize && edid_mon->features.vsize))
- {
- output->mm_width = edid_mon->features.hsize * 10;
- output->mm_height = edid_mon->features.vsize * 10;
- }
- }
-}
-
-/**
- * Return the list of modes supported by the EDID information
- * stored in 'output'
- */
-DisplayModePtr
-xf86OutputGetEDIDModes (xf86OutputPtr output)
-{
- ScrnInfoPtr scrn = output->scrn;
- xf86MonPtr edid_mon = output->MonInfo;
-
- if (!edid_mon)
- return NULL;
- return xf86DDCGetModes(scrn->scrnIndex, edid_mon);
-}
-
-/* maybe we should care about DDC1? meh. */
-xf86MonPtr
-xf86OutputGetEDID (xf86OutputPtr output, I2CBusPtr pDDCBus)
-{
- ScrnInfoPtr scrn = output->scrn;
- xf86MonPtr mon;
-
- mon = xf86DoEEDID(scrn->scrnIndex, pDDCBus, TRUE);
- if (mon)
- xf86DDCApplyQuirks(scrn->scrnIndex, mon);
-
- return mon;
-}
-
-static char *_xf86ConnectorNames[] = {
- "None", "VGA", "DVI-I", "DVI-D",
- "DVI-A", "Composite", "S-Video",
- "Component", "LFP", "Proprietary",
- "HDMI", "DisplayPort",
- };
-char *
-xf86ConnectorGetName(xf86ConnectorType connector)
-{
- return _xf86ConnectorNames[connector];
-}
-
-static void
-x86_crtc_box_intersect(BoxPtr dest, BoxPtr a, BoxPtr b)
-{
- dest->x1 = a->x1 > b->x1 ? a->x1 : b->x1;
- dest->x2 = a->x2 < b->x2 ? a->x2 : b->x2;
- dest->y1 = a->y1 > b->y1 ? a->y1 : b->y1;
- dest->y2 = a->y2 < b->y2 ? a->y2 : b->y2;
-
- if (dest->x1 >= dest->x2 || dest->y1 >= dest->y2)
- dest->x1 = dest->x2 = dest->y1 = dest->y2 = 0;
-}
-
-static void
-x86_crtc_box(xf86CrtcPtr crtc, BoxPtr crtc_box)
-{
- if (crtc->enabled) {
- crtc_box->x1 = crtc->x;
- crtc_box->x2 = crtc->x + xf86ModeWidth(&crtc->mode, crtc->rotation);
- crtc_box->y1 = crtc->y;
- crtc_box->y2 = crtc->y + xf86ModeHeight(&crtc->mode, crtc->rotation);
- } else
- crtc_box->x1 = crtc_box->x2 = crtc_box->y1 = crtc_box->y2 = 0;
-}
-
-static int
-xf86_crtc_box_area(BoxPtr box)
-{
- return (int) (box->x2 - box->x1) * (int) (box->y2 - box->y1);
-}
-
-/*
- * Return the crtc covering 'box'. If two crtcs cover a portion of
- * 'box', then prefer 'desired'. If 'desired' is NULL, then prefer the crtc
- * with greater coverage
- */
-
-static xf86CrtcPtr
-xf86_covering_crtc(ScrnInfoPtr pScrn,
- BoxPtr box,
- xf86CrtcPtr desired,
- BoxPtr crtc_box_ret)
-{
- xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
- xf86CrtcPtr crtc, best_crtc;
- int coverage, best_coverage;
- int c;
- BoxRec crtc_box, cover_box;
-
- best_crtc = NULL;
- best_coverage = 0;
- crtc_box_ret->x1 = 0;
- crtc_box_ret->x2 = 0;
- crtc_box_ret->y1 = 0;
- crtc_box_ret->y2 = 0;
- for (c = 0; c < xf86_config->num_crtc; c++) {
- crtc = xf86_config->crtc[c];
- x86_crtc_box(crtc, &crtc_box);
- x86_crtc_box_intersect(&cover_box, &crtc_box, box);
- coverage = xf86_crtc_box_area(&cover_box);
- if (coverage && crtc == desired) {
- *crtc_box_ret = crtc_box;
- return crtc;
- } else if (coverage > best_coverage) {
- *crtc_box_ret = crtc_box;
- best_crtc = crtc;
- best_coverage = coverage;
- }
- }
- return best_crtc;
-}
-
-/*
- * For overlay video, compute the relevant CRTC and
- * clip video to that.
- *
- * returning FALSE means there was a memory failure of some kind,
- * not that the video shouldn't be displayed
- */
-
-Bool
-xf86_crtc_clip_video_helper(ScrnInfoPtr pScrn,
- xf86CrtcPtr *crtc_ret,
- xf86CrtcPtr desired_crtc,
- BoxPtr dst,
- INT32 *xa,
- INT32 *xb,
- INT32 *ya,
- INT32 *yb,
- RegionPtr reg,
- INT32 width,
- INT32 height)
-{
- Bool ret;
- RegionRec crtc_region_local;
- RegionPtr crtc_region = reg;
-
- if (crtc_ret) {
- BoxRec crtc_box;
- xf86CrtcPtr crtc = xf86_covering_crtc(pScrn, dst,
- desired_crtc,
- &crtc_box);
-
- if (crtc) {
- RegionInit(&crtc_region_local, &crtc_box, 1);
- crtc_region = &crtc_region_local;
- RegionIntersect(crtc_region, crtc_region, reg);
- }
- *crtc_ret = crtc;
- }
-
- ret = xf86XVClipVideoHelper(dst, xa, xb, ya, yb,
- crtc_region, width, height);
-
- if (crtc_region != reg)
- RegionUninit(&crtc_region_local);
-
- return ret;
-}
-
-xf86_crtc_notify_proc_ptr
-xf86_wrap_crtc_notify (ScreenPtr screen, xf86_crtc_notify_proc_ptr new)
-{
- if (xf86CrtcConfigPrivateIndex != -1)
- {
- ScrnInfoPtr scrn = xf86Screens[screen->myNum];
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
- xf86_crtc_notify_proc_ptr old;
-
- old = config->xf86_crtc_notify;
- config->xf86_crtc_notify = new;
- return old;
- }
- return NULL;
-}
-
-void
-xf86_unwrap_crtc_notify(ScreenPtr screen, xf86_crtc_notify_proc_ptr old)
-{
- if (xf86CrtcConfigPrivateIndex != -1)
- {
- ScrnInfoPtr scrn = xf86Screens[screen->myNum];
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
-
- config->xf86_crtc_notify = old;
- }
-}
-
-void
-xf86_crtc_notify(ScreenPtr screen)
-{
- ScrnInfoPtr scrn = xf86Screens[screen->myNum];
- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
-
- if (config->xf86_crtc_notify)
- config->xf86_crtc_notify(screen);
-}
-
-Bool
-xf86_crtc_supports_gamma(ScrnInfoPtr pScrn)
-{
- if (xf86CrtcConfigPrivateIndex != -1) {
- xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
- xf86CrtcPtr crtc;
-
- /* for multiple drivers loaded we need this */
- if (!xf86_config)
- return FALSE;
- if (xf86_config->num_crtc == 0)
- return FALSE;
- crtc = xf86_config->crtc[0];
-
- return crtc->funcs->gamma_set != NULL;
- }
-
- return FALSE;
-}
+/*
+ * Copyright © 2006 Keith Packard
+ * Copyright © 2008 Red Hat, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. The copyright holders make no representations
+ * about the suitability of this software for any purpose. It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#else
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#endif
+
+#include <stddef.h>
+#include <string.h>
+#include <stdio.h>
+
+#include "xf86.h"
+#include "xf86DDC.h"
+#include "xf86Crtc.h"
+#include "xf86Modes.h"
+#include "xf86Priv.h"
+#include "xf86RandR12.h"
+#include "X11/extensions/render.h"
+#include "X11/extensions/dpmsconst.h"
+#include "X11/Xatom.h"
+#include "picturestr.h"
+
+#include "xf86xv.h"
+
+#define NO_OUTPUT_DEFAULT_WIDTH 1024
+#define NO_OUTPUT_DEFAULT_HEIGHT 768
+/*
+ * Initialize xf86CrtcConfig structure
+ */
+
+int xf86CrtcConfigPrivateIndex = -1;
+
+void
+xf86CrtcConfigInit (ScrnInfoPtr scrn,
+ const xf86CrtcConfigFuncsRec *funcs)
+{
+ xf86CrtcConfigPtr config;
+
+ if (xf86CrtcConfigPrivateIndex == -1)
+ xf86CrtcConfigPrivateIndex = xf86AllocateScrnInfoPrivateIndex();
+ config = xnfcalloc (1, sizeof (xf86CrtcConfigRec));
+
+ config->funcs = funcs;
+
+ scrn->privates[xf86CrtcConfigPrivateIndex].ptr = config;
+}
+
+void
+xf86CrtcSetSizeRange (ScrnInfoPtr scrn,
+ int minWidth, int minHeight,
+ int maxWidth, int maxHeight)
+{
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+
+ config->minWidth = minWidth;
+ config->minHeight = minHeight;
+ config->maxWidth = maxWidth;
+ config->maxHeight = maxHeight;
+}
+
+void
+xf86CrtcSetScanoutFormats(ScrnInfoPtr scrn,
+ int num_formats,
+ xf86CrtcScanoutFormat *formats)
+{
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+
+ config->num_scanout_formats = num_formats;
+ config->scanout_formats = formats;
+}
+
+/*
+ * Crtc functions
+ */
+xf86CrtcPtr
+xf86CrtcCreate (ScrnInfoPtr scrn,
+ const xf86CrtcFuncsRec *funcs)
+{
+ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
+ xf86CrtcPtr crtc, *crtcs;
+
+ crtc = calloc(sizeof (xf86CrtcRec), 1);
+ if (!crtc)
+ return NULL;
+ crtc->version = XF86_CRTC_VERSION;
+ crtc->scrn = scrn;
+ crtc->funcs = funcs;
+#ifdef RANDR_12_INTERFACE
+ crtc->randr_crtc = NULL;
+#endif
+ crtc->rotation = RR_Rotate_0;
+ crtc->desiredRotation = RR_Rotate_0;
+ pixman_transform_init_identity (&crtc->crtc_to_framebuffer);
+ pixman_f_transform_init_identity (&crtc->f_crtc_to_framebuffer);
+ pixman_f_transform_init_identity (&crtc->f_framebuffer_to_crtc);
+ pixman_f_transform_init_identity (&crtc->f_screen_to_crtc);
+ pixman_f_transform_init_identity (&crtc->user_sprite_position_transform);
+ pixman_f_transform_init_identity (&crtc->f_crtc_to_cursor);
+ pixman_f_transform_init_identity (&crtc->user_sprite_image_transform);
+ crtc->filter = NULL;
+ crtc->params = NULL;
+ crtc->nparams = 0;
+ crtc->filter_width = 0;
+ crtc->filter_height = 0;
+ crtc->transform_in_use = FALSE;
+ crtc->sprite_transform_in_use = FALSE;
+ crtc->transformPresent = FALSE;
+ crtc->desiredTransformPresent = FALSE;
+ memset (&crtc->bounds, '\0', sizeof (crtc->bounds));
+
+ /* Preallocate gamma at a sensible size. */
+ crtc->gamma_size = 256;
+ crtc->gamma_red = malloc(3 * crtc->gamma_size * sizeof (CARD16));
+ if (!crtc->gamma_red) {
+ free(crtc);
+ return NULL;
+ }
+ crtc->gamma_green = crtc->gamma_red + crtc->gamma_size;
+ crtc->gamma_blue = crtc->gamma_green + crtc->gamma_size;
+
+ if (xf86_config->crtc)
+ crtcs = realloc(xf86_config->crtc,
+ (xf86_config->num_crtc + 1) * sizeof (xf86CrtcPtr));
+ else
+ crtcs = malloc((xf86_config->num_crtc + 1) * sizeof (xf86CrtcPtr));
+ if (!crtcs)
+ {
+ free(crtc);
+ return NULL;
+ }
+ xf86_config->crtc = crtcs;
+ xf86_config->crtc[xf86_config->num_crtc++] = crtc;
+ return crtc;
+}
+
+void
+xf86CrtcDestroy (xf86CrtcPtr crtc)
+{
+ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(crtc->scrn);
+ int c;
+
+ (*crtc->funcs->destroy) (crtc);
+ for (c = 0; c < xf86_config->num_crtc; c++)
+ if (xf86_config->crtc[c] == crtc)
+ {
+ memmove (&xf86_config->crtc[c],
+ &xf86_config->crtc[c+1],
+ ((xf86_config->num_crtc - (c + 1)) * sizeof(void*)));
+ xf86_config->num_crtc--;
+ break;
+ }
+ free(crtc->params);
+ free(crtc->gamma_red);
+ free(crtc);
+}
+
+
+/**
+ * Return whether any outputs are connected to the specified pipe
+ */
+
+Bool
+xf86CrtcInUse (xf86CrtcPtr crtc)
+{
+ ScrnInfoPtr pScrn = crtc->scrn;
+ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
+ int o;
+
+ for (o = 0; o < xf86_config->num_output; o++)
+ if (xf86_config->output[o]->crtc == crtc)
+ return TRUE;
+ return FALSE;
+}
+
+void
+xf86CrtcSetScreenSubpixelOrder (ScreenPtr pScreen)
+{
+ int subpixel_order = SubPixelUnknown;
+ Bool has_none = FALSE;
+ ScrnInfoPtr scrn = xf86Screens[pScreen->myNum];
+ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
+ int c, o;
+
+ for (c = 0; c < xf86_config->num_crtc; c++)
+ {
+ xf86CrtcPtr crtc = xf86_config->crtc[c];
+
+ for (o = 0; o < xf86_config->num_output; o++)
+ {
+ xf86OutputPtr output = xf86_config->output[o];
+
+ if (output->crtc == crtc)
+ {
+ switch (output->subpixel_order) {
+ case SubPixelNone:
+ has_none = TRUE;
+ break;
+ case SubPixelUnknown:
+ break;
+ default:
+ subpixel_order = output->subpixel_order;
+ break;
+ }
+ }
+ if (subpixel_order != SubPixelUnknown)
+ break;
+ }
+ if (subpixel_order != SubPixelUnknown)
+ {
+ static const int circle[4] = {
+ SubPixelHorizontalRGB,
+ SubPixelVerticalRGB,
+ SubPixelHorizontalBGR,
+ SubPixelVerticalBGR,
+ };
+ int rotate;
+ int c;
+ for (rotate = 0; rotate < 4; rotate++)
+ if (crtc->rotation & (1 << rotate))
+ break;
+ for (c = 0; c < 4; c++)
+ if (circle[c] == subpixel_order)
+ break;
+ c = (c + rotate) & 0x3;
+ if ((crtc->rotation & RR_Reflect_X) && !(c & 1))
+ c ^= 2;
+ if ((crtc->rotation & RR_Reflect_Y) && (c & 1))
+ c ^= 2;
+ subpixel_order = circle[c];
+ break;
+ }
+ }
+ if (subpixel_order == SubPixelUnknown && has_none)
+ subpixel_order = SubPixelNone;
+ PictureSetSubpixelOrder (pScreen, subpixel_order);
+}
+
+/**
+ * Sets the given video mode on the given crtc
+ */
+Bool
+xf86CrtcSet(xf86CrtcPtr crtc, xf86CrtcSetRec *set)
+{
+ ScrnInfoPtr scrn = crtc->scrn;
+ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
+ int i;
+ Bool ret = FALSE;
+ Bool didLock = FALSE;
+ DisplayModePtr adjusted_mode = NULL;
+ DisplayModeRec saved_mode;
+ int saved_x, saved_y;
+ Rotation saved_rotation;
+ RRTransformRec saved_transform;
+ Bool saved_transform_present;
+ PixmapPtr saved_scanout_pixmap;
+
+ crtc->enabled = xf86CrtcInUse (crtc);
+
+ /* We only hit this if someone explicitly sends a "disabled" modeset. */
+ if (!crtc->enabled)
+ {
+ /* Check everything for stuff that should be off. */
+ xf86DisableUnusedFunctions(scrn);
+ return TRUE;
+ }
+
+ /* See if nothing has changed */
+ if (!set->flags)
+ return TRUE;
+
+ saved_mode = crtc->mode;
+ saved_x = crtc->x;
+ saved_y = crtc->y;
+ saved_rotation = crtc->rotation;
+ saved_scanout_pixmap = crtc->scanoutPixmap;
+ if (crtc->transformPresent) {
+ RRTransformInit (&saved_transform);
+ RRTransformCopy (&saved_transform, &crtc->transform);
+ }
+ saved_transform_present = crtc->transformPresent;
+
+ /* Update crtc values up front so the driver can rely on them for mode
+ * setting.
+ */
+ if (set->flags & XF86CrtcSetMode)
+ crtc->mode = *set->mode;
+ if (set->flags & XF86CrtcSetOrigin) {
+ crtc->x = set->x;
+ crtc->y = set->y;
+ }
+ if (set->flags & XF86CrtcSetRotation)
+ crtc->rotation = set->rotation;
+ if (set->flags & XF86CrtcSetScanoutPixmap)
+ crtc->scanoutPixmap = set->scanout_pixmap;
+
+ if (set->flags & XF86CrtcSetTransform) {
+ if (set->transform) {
+ RRTransformCopy (&crtc->transform, set->transform);
+ crtc->transformPresent = TRUE;
+ } else
+ crtc->transformPresent = FALSE;
+ }
+
+ if (crtc->funcs->set) {
+ ret = crtc->funcs->set(crtc, set->flags);
+ goto done;
+ }
+
+ if (set->flags == XF86CrtcSetOrigin && crtc->funcs->set_origin) {
+ ret = xf86CrtcRotate(crtc);
+ if (ret)
+ crtc->funcs->set_origin(crtc, crtc->x, crtc->y);
+ goto done;
+ }
+
+ if (crtc->funcs->set_mode_major) {
+ ret = crtc->funcs->set_mode_major(crtc, &crtc->mode,
+ crtc->rotation,
+ crtc->x, crtc->y);
+ goto done;
+ }
+
+ adjusted_mode = xf86DuplicateMode(&crtc->mode);
+
+ didLock = crtc->funcs->lock (crtc);
+ /* Pass our mode to the outputs and the CRTC to give them a chance to
+ * adjust it according to limitations or output properties, and also
+ * a chance to reject the mode entirely.
+ */
+ for (i = 0; i < xf86_config->num_output; i++) {
+ xf86OutputPtr output = xf86_config->output[i];
+
+ if (output->crtc != crtc)
+ continue;
+
+ if (!output->funcs->mode_fixup(output, &crtc->mode, adjusted_mode)) {
+ goto done;
+ }
+ }
+
+ if (!crtc->funcs->mode_fixup(crtc, &crtc->mode, adjusted_mode)) {
+ goto done;
+ }
+
+ if (!xf86CrtcRotate (crtc))
+ goto done;
+
+ /* Prepare the outputs and CRTCs before setting the mode. */
+ for (i = 0; i < xf86_config->num_output; i++) {
+ xf86OutputPtr output = xf86_config->output[i];
+
+ if (output->crtc != crtc)
+ continue;
+
+ /* Disable the output as the first thing we do. */
+ output->funcs->prepare(output);
+ }
+
+ crtc->funcs->prepare(crtc);
+
+ /* Set up the DPLL and any output state that needs to adjust or depend
+ * on the DPLL.
+ */
+ crtc->funcs->mode_set(crtc, &crtc->mode, adjusted_mode, crtc->x, crtc->y);
+ for (i = 0; i < xf86_config->num_output; i++)
+ {
+ xf86OutputPtr output = xf86_config->output[i];
+ if (output->crtc == crtc)
+ output->funcs->mode_set(output, &crtc->mode, adjusted_mode);
+ }
+
+ /* Only upload when needed, to avoid unneeded delays. */
+ if (!crtc->active && crtc->funcs->gamma_set)
+ crtc->funcs->gamma_set(crtc, crtc->gamma_red, crtc->gamma_green,
+ crtc->gamma_blue, crtc->gamma_size);
+
+ /* Now, enable the clocks, plane, pipe, and outputs that we set up. */
+ crtc->funcs->commit(crtc);
+ for (i = 0; i < xf86_config->num_output; i++)
+ {
+ xf86OutputPtr output = xf86_config->output[i];
+ if (output->crtc == crtc)
+ output->funcs->commit(output);
+ }
+
+ ret = TRUE;
+
+done:
+ if (ret) {
+ crtc->active = TRUE;
+ if (scrn->pScreen)
+ xf86CrtcSetScreenSubpixelOrder (scrn->pScreen);
+ if (scrn->ModeSet)
+ scrn->ModeSet(scrn);
+ } else {
+ crtc->x = saved_x;
+ crtc->y = saved_y;
+ crtc->rotation = saved_rotation;
+ crtc->mode = saved_mode;
+ if (saved_transform_present)
+ RRTransformCopy (&crtc->transform, &saved_transform);
+ crtc->transformPresent = saved_transform_present;
+ crtc->scanoutPixmap = saved_scanout_pixmap;
+ }
+
+ if (adjusted_mode) {
+ free(adjusted_mode->name);
+ free(adjusted_mode);
+ }
+
+ if (didLock)
+ crtc->funcs->unlock (crtc);
+
+ return ret;
+}
+
+/**
+ * Pans the screen, does not change the mode
+ */
+void
+xf86CrtcSetOrigin (xf86CrtcPtr crtc, int x, int y)
+{
+ xf86CrtcSetRec set;
+
+ if (x != crtc->x || y != crtc->y) {
+ set.x = x;
+ set.y = y;
+ set.flags = XF86CrtcSetOrigin;
+ (void) xf86CrtcSet(crtc, &set);
+ }
+}
+
+/*
+ * Output functions
+ */
+
+extern XF86ConfigPtr xf86configptr;
+
+typedef enum {
+ OPTION_PREFERRED_MODE,
+ OPTION_POSITION,
+ OPTION_BELOW,
+ OPTION_RIGHT_OF,
+ OPTION_ABOVE,
+ OPTION_LEFT_OF,
+ OPTION_ENABLE,
+ OPTION_DISABLE,
+ OPTION_MIN_CLOCK,
+ OPTION_MAX_CLOCK,
+ OPTION_IGNORE,
+ OPTION_ROTATE,
+ OPTION_PANNING,
+ OPTION_PRIMARY,
+ OPTION_DEFAULT_MODES,
+} OutputOpts;
+
+static OptionInfoRec xf86OutputOptions[] = {
+ {OPTION_PREFERRED_MODE, "PreferredMode", OPTV_STRING, {0}, FALSE },
+ {OPTION_POSITION, "Position", OPTV_STRING, {0}, FALSE },
+ {OPTION_BELOW, "Below", OPTV_STRING, {0}, FALSE },
+ {OPTION_RIGHT_OF, "RightOf", OPTV_STRING, {0}, FALSE },
+ {OPTION_ABOVE, "Above", OPTV_STRING, {0}, FALSE },
+ {OPTION_LEFT_OF, "LeftOf", OPTV_STRING, {0}, FALSE },
+ {OPTION_ENABLE, "Enable", OPTV_BOOLEAN, {0}, FALSE },
+ {OPTION_DISABLE, "Disable", OPTV_BOOLEAN, {0}, FALSE },
+ {OPTION_MIN_CLOCK, "MinClock", OPTV_FREQ, {0}, FALSE },
+ {OPTION_MAX_CLOCK, "MaxClock", OPTV_FREQ, {0}, FALSE },
+ {OPTION_IGNORE, "Ignore", OPTV_BOOLEAN, {0}, FALSE },
+ {OPTION_ROTATE, "Rotate", OPTV_STRING, {0}, FALSE },
+ {OPTION_PANNING, "Panning", OPTV_STRING, {0}, FALSE },
+ {OPTION_PRIMARY, "Primary", OPTV_BOOLEAN, {0}, FALSE },
+ {OPTION_DEFAULT_MODES, "DefaultModes", OPTV_BOOLEAN, {0}, FALSE },
+ {-1, NULL, OPTV_NONE, {0}, FALSE },
+};
+
+enum {
+ OPTION_MODEDEBUG,
+};
+
+static OptionInfoRec xf86DeviceOptions[] = {
+ {OPTION_MODEDEBUG, "ModeDebug", OPTV_BOOLEAN, {0}, FALSE },
+ {-1, NULL, OPTV_NONE, {0}, FALSE },
+};
+
+static void
+xf86OutputSetMonitor (xf86OutputPtr output)
+{
+ char *option_name;
+ char *monitor;
+
+ if (!output->name)
+ return;
+
+ free(output->options);
+
+ output->options = xnfalloc (sizeof (xf86OutputOptions));
+ memcpy (output->options, xf86OutputOptions, sizeof (xf86OutputOptions));
+
+ XNFasprintf(&option_name, "monitor-%s", output->name);
+ monitor = xf86findOptionValue (output->scrn->options, option_name);
+ if (!monitor)
+ monitor = output->name;
+ else
+ xf86MarkOptionUsedByName (output->scrn->options, option_name);
+ free(option_name);
+ output->conf_monitor = xf86findMonitor (monitor,
+ xf86configptr->conf_monitor_lst);
+ /*
+ * Find the monitor section of the screen and use that
+ */
+ if (!output->conf_monitor && output->use_screen_monitor)
+ output->conf_monitor = xf86findMonitor (output->scrn->monitor->id,
+ xf86configptr->conf_monitor_lst);
+ if (output->conf_monitor)
+ {
+ xf86DrvMsg (output->scrn->scrnIndex, X_INFO,
+ "Output %s using monitor section %s\n",
+ output->name, output->conf_monitor->mon_identifier);
+ xf86ProcessOptions (output->scrn->scrnIndex,
+ output->conf_monitor->mon_option_lst,
+ output->options);
+ }
+ else
+ xf86DrvMsg (output->scrn->scrnIndex, X_INFO,
+ "Output %s has no monitor section\n",
+ output->name);
+}
+
+static Bool
+xf86OutputEnabled (xf86OutputPtr output, Bool strict)
+{
+ Bool enable, disable;
+
+ /* check to see if this output was enabled in the config file */
+ if (xf86GetOptValBool (output->options, OPTION_ENABLE, &enable) && enable)
+ {
+ xf86DrvMsg (output->scrn->scrnIndex, X_INFO,
+ "Output %s enabled by config file\n", output->name);
+ return TRUE;
+ }
+ /* or if this output was disabled in the config file */
+ if (xf86GetOptValBool (output->options, OPTION_DISABLE, &disable) && disable)
+ {
+ xf86DrvMsg (output->scrn->scrnIndex, X_INFO,
+ "Output %s disabled by config file\n", output->name);
+ return FALSE;
+ }
+
+ /* If not, try to only light up the ones we know are connected */
+ if (strict) {
+ enable = output->status == XF86OutputStatusConnected;
+ }
+ /* But if that fails, try to light up even outputs we're unsure of */
+ else {
+ enable = output->status != XF86OutputStatusDisconnected;
+ }
+
+ xf86DrvMsg (output->scrn->scrnIndex, X_INFO,
+ "Output %s %sconnected\n", output->name, enable ? "" : "dis");
+ return enable;
+}
+
+static Bool
+xf86OutputIgnored (xf86OutputPtr output)
+{
+ return xf86ReturnOptValBool (output->options, OPTION_IGNORE, FALSE);
+}
+
+static char *direction[4] = {
+ "normal",
+ "left",
+ "inverted",
+ "right"
+};
+
+static Rotation
+xf86OutputInitialRotation (xf86OutputPtr output)
+{
+ char *rotate_name = xf86GetOptValString (output->options,
+ OPTION_ROTATE);
+ int i;
+
+ if (!rotate_name) {
+ if (output->initial_rotation)
+ return output->initial_rotation;
+ return RR_Rotate_0;
+ }
+
+ for (i = 0; i < 4; i++)
+ if (xf86nameCompare (direction[i], rotate_name) == 0)
+ return 1 << i;
+ return RR_Rotate_0;
+}
+
+xf86OutputPtr
+xf86OutputCreate (ScrnInfoPtr scrn,
+ const xf86OutputFuncsRec *funcs,
+ const char *name)
+{
+ xf86OutputPtr output, *outputs;
+ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
+ int len;
+ Bool primary;
+
+ if (name)
+ len = strlen (name) + 1;
+ else
+ len = 0;
+
+ output = calloc(sizeof (xf86OutputRec) + len, 1);
+ if (!output)
+ return NULL;
+ output->scrn = scrn;
+ output->funcs = funcs;
+ if (name)
+ {
+ output->name = (char *) (output + 1);
+ strcpy (output->name, name);
+ }
+ output->subpixel_order = SubPixelUnknown;
+ /*
+ * Use the old per-screen monitor section for the first output
+ */
+ output->use_screen_monitor = (xf86_config->num_output == 0);
+#ifdef RANDR_12_INTERFACE
+ output->randr_output = NULL;
+#endif
+ if (name)
+ {
+ xf86OutputSetMonitor (output);
+ if (xf86OutputIgnored (output))
+ {
+ free(output);
+ return FALSE;
+ }
+ }
+
+
+ if (xf86_config->output)
+ outputs = realloc(xf86_config->output,
+ (xf86_config->num_output + 1) * sizeof (xf86OutputPtr));
+ else
+ outputs = malloc((xf86_config->num_output + 1) * sizeof (xf86OutputPtr));
+ if (!outputs)
+ {
+ free(output);
+ return NULL;
+ }
+
+ xf86_config->output = outputs;
+
+ if (xf86GetOptValBool (output->options, OPTION_PRIMARY, &primary) && primary)
+ {
+ memmove(xf86_config->output + 1, xf86_config->output,
+ xf86_config->num_output * sizeof (xf86OutputPtr));
+ xf86_config->output[0] = output;
+ }
+ else
+ {
+ xf86_config->output[xf86_config->num_output] = output;
+ }
+
+ xf86_config->num_output++;
+
+ return output;
+}
+
+Bool
+xf86OutputRename (xf86OutputPtr output, const char *name)
+{
+ char *newname = strdup(name);
+
+ if (!newname)
+ return FALSE; /* so sorry... */
+
+ if (output->name && output->name != (char *) (output + 1))
+ free(output->name);
+ output->name = newname;
+ xf86OutputSetMonitor (output);
+ if (xf86OutputIgnored (output))
+ return FALSE;
+ return TRUE;
+}
+
+void
+xf86OutputUseScreenMonitor (xf86OutputPtr output, Bool use_screen_monitor)
+{
+ if (use_screen_monitor != output->use_screen_monitor)
+ {
+ output->use_screen_monitor = use_screen_monitor;
+ xf86OutputSetMonitor (output);
+ }
+}
+
+void
+xf86OutputDestroy (xf86OutputPtr output)
+{
+ ScrnInfoPtr scrn = output->scrn;
+ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
+ int o;
+
+ (*output->funcs->destroy) (output);
+ while (output->probed_modes)
+ xf86DeleteMode (&output->probed_modes, output->probed_modes);
+ for (o = 0; o < xf86_config->num_output; o++)
+ if (xf86_config->output[o] == output)
+ {
+ memmove (&xf86_config->output[o],
+ &xf86_config->output[o+1],
+ ((xf86_config->num_output - (o + 1)) * sizeof(void*)));
+ xf86_config->num_output--;
+ break;
+ }
+ if (output->name && output->name != (char *) (output + 1))
+ free(output->name);
+ free(output);
+}
+
+/*
+ * Called during CreateScreenResources to hook up RandR
+ */
+static Bool
+xf86CrtcCreateScreenResources (ScreenPtr screen)
+{
+ ScrnInfoPtr scrn = xf86Screens[screen->myNum];
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+
+ screen->CreateScreenResources = config->CreateScreenResources;
+
+ if (!(*screen->CreateScreenResources)(screen))
+ return FALSE;
+
+ if (!xf86RandR12CreateScreenResources (screen))
+ return FALSE;
+
+ return TRUE;
+}
+
+/*
+ * Clean up config on server reset
+ */
+static Bool
+xf86CrtcCloseScreen (int index, ScreenPtr screen)
+{
+ ScrnInfoPtr scrn = xf86Screens[screen->myNum];
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+ int o, c;
+
+ screen->CloseScreen = config->CloseScreen;
+
+ xf86RotateCloseScreen (screen);
+
+ for (o = 0; o < config->num_output; o++)
+ {
+ xf86OutputPtr output = config->output[o];
+
+ output->randr_output = NULL;
+ }
+ for (c = 0; c < config->num_crtc; c++)
+ {
+ xf86CrtcPtr crtc = config->crtc[c];
+
+ crtc->randr_crtc = NULL;
+ }
+ xf86RandR12CloseScreen (screen);
+
+ return screen->CloseScreen (index, screen);
+}
+
+/*
+ * Called at ScreenInit time to set up
+ */
+#ifdef RANDR_13_INTERFACE
+int
+#else
+Bool
+#endif
+xf86CrtcScreenInit (ScreenPtr screen)
+{
+ ScrnInfoPtr scrn = xf86Screens[screen->myNum];
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+ int c;
+
+ /* Rotation */
+ xf86DrvMsg(scrn->scrnIndex, X_INFO, "RandR 1.2 enabled, ignore the following RandR disabled message.\n");
+ xf86DisableRandR(); /* Disable old RandR extension support */
+ xf86RandR12Init (screen);
+
+ /* support all rotations if every crtc has the shadow alloc funcs */
+ for (c = 0; c < config->num_crtc; c++)
+ {
+ xf86CrtcPtr crtc = config->crtc[c];
+ if (!crtc->funcs->shadow_allocate || !crtc->funcs->shadow_create)
+ break;
+ }
+ if (c == config->num_crtc)
+ {
+ xf86RandR12SetRotations (screen, RR_Rotate_0 | RR_Rotate_90 |
+ RR_Rotate_180 | RR_Rotate_270 |
+ RR_Reflect_X | RR_Reflect_Y);
+ xf86RandR12SetTransformSupport (screen, TRUE);
+ }
+ else
+ {
+ xf86RandR12SetRotations (screen, RR_Rotate_0);
+ xf86RandR12SetTransformSupport (screen, FALSE);
+ }
+
+ /* Wrap CreateScreenResources so we can initialize the RandR code */
+ config->CreateScreenResources = screen->CreateScreenResources;
+ screen->CreateScreenResources = xf86CrtcCreateScreenResources;
+
+ config->CloseScreen = screen->CloseScreen;
+ screen->CloseScreen = xf86CrtcCloseScreen;
+
+#ifdef XFreeXDGA
+ _xf86_di_dga_init_internal(screen);
+#endif
+#ifdef RANDR_13_INTERFACE
+ return RANDR_INTERFACE_VERSION;
+#else
+ return TRUE;
+#endif
+}
+
+static DisplayModePtr
+xf86DefaultMode (xf86OutputPtr output, int width, int height)
+{
+ DisplayModePtr target_mode = NULL;
+ DisplayModePtr mode;
+ int target_diff = 0;
+ int target_preferred = 0;
+ int mm_height;
+
+ mm_height = output->mm_height;
+ if (!mm_height)
+ mm_height = (768 * 25.4) / DEFAULT_DPI;
+ /*
+ * Pick a mode closest to DEFAULT_DPI
+ */
+ for (mode = output->probed_modes; mode; mode = mode->next)
+ {
+ int dpi;
+ int preferred = (((mode->type & M_T_PREFERRED) != 0) +
+ ((mode->type & M_T_USERPREF) != 0));
+ int diff;
+
+ if (xf86ModeWidth (mode, output->initial_rotation) > width ||
+ xf86ModeHeight (mode, output->initial_rotation) > height)
+ continue;
+
+ /* yes, use VDisplay here, not xf86ModeHeight */
+ dpi = (mode->VDisplay * 254) / (mm_height * 10);
+ diff = dpi - DEFAULT_DPI;
+ diff = diff < 0 ? -diff : diff;
+ if (target_mode == NULL || (preferred > target_preferred) ||
+ (preferred == target_preferred && diff < target_diff))
+ {
+ target_mode = mode;
+ target_diff = diff;
+ target_preferred = preferred;
+ }
+ }
+ return target_mode;
+}
+
+static DisplayModePtr
+xf86ClosestMode (xf86OutputPtr output,
+ DisplayModePtr match, Rotation match_rotation,
+ int width, int height)
+{
+ DisplayModePtr target_mode = NULL;
+ DisplayModePtr mode;
+ int target_diff = 0;
+
+ /*
+ * Pick a mode closest to the specified mode
+ */
+ for (mode = output->probed_modes; mode; mode = mode->next)
+ {
+ int dx, dy;
+ int diff;
+
+ if (xf86ModeWidth (mode, output->initial_rotation) > width ||
+ xf86ModeHeight (mode, output->initial_rotation) > height)
+ continue;
+
+ /* exact matches are preferred */
+ if (output->initial_rotation == match_rotation &&
+ xf86ModesEqual (mode, match))
+ return mode;
+
+ dx = xf86ModeWidth (match, match_rotation) - xf86ModeWidth (mode, output->initial_rotation);
+ dy = xf86ModeHeight (match, match_rotation) - xf86ModeHeight (mode, output->initial_rotation);
+ diff = dx * dx + dy * dy;
+ if (target_mode == NULL || diff < target_diff)
+ {
+ target_mode = mode;
+ target_diff = diff;
+ }
+ }
+ return target_mode;
+}
+
+static DisplayModePtr
+xf86OutputHasPreferredMode (xf86OutputPtr output, int width, int height)
+{
+ DisplayModePtr mode;
+
+ for (mode = output->probed_modes; mode; mode = mode->next)
+ {
+ if (xf86ModeWidth (mode, output->initial_rotation) > width ||
+ xf86ModeHeight (mode, output->initial_rotation) > height)
+ continue;
+
+ if (mode->type & M_T_PREFERRED)
+ return mode;
+ }
+ return NULL;
+}
+
+static DisplayModePtr
+xf86OutputHasUserPreferredMode (xf86OutputPtr output)
+{
+ DisplayModePtr mode, first = output->probed_modes;
+
+ for (mode = first; mode && mode->next != first; mode = mode->next)
+ if (mode->type & M_T_USERPREF)
+ return mode;
+
+ return NULL;
+}
+
+static int
+xf86PickCrtcs (ScrnInfoPtr scrn,
+ xf86CrtcPtr *best_crtcs,
+ DisplayModePtr *modes,
+ int n,
+ int width,
+ int height)
+{
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+ int c, o;
+ xf86OutputPtr output;
+ xf86CrtcPtr crtc;
+ xf86CrtcPtr *crtcs;
+ xf86CrtcPtr best_crtc;
+ int best_score;
+ int score;
+ int my_score;
+
+ if (n == config->num_output)
+ return 0;
+ output = config->output[n];
+
+ /*
+ * Compute score with this output disabled
+ */
+ best_crtcs[n] = NULL;
+ best_crtc = NULL;
+ best_score = xf86PickCrtcs (scrn, best_crtcs, modes, n+1, width, height);
+ if (modes[n] == NULL)
+ return best_score;
+
+ crtcs = malloc(config->num_output * sizeof (xf86CrtcPtr));
+ if (!crtcs)
+ return best_score;
+
+ my_score = 1;
+ /* Score outputs that are known to be connected higher */
+ if (output->status == XF86OutputStatusConnected)
+ my_score++;
+ /* Score outputs with preferred modes higher */
+ if (xf86OutputHasPreferredMode (output, width, height))
+ my_score++;
+ /*
+ * Select a crtc for this output and
+ * then attempt to configure the remaining
+ * outputs
+ */
+ for (c = 0; c < config->num_crtc; c++)
+ {
+ if ((output->possible_crtcs & (1 << c)) == 0)
+ continue;
+
+ crtc = config->crtc[c];
+ /*
+ * Check to see if some other output is
+ * using this crtc
+ */
+ for (o = 0; o < n; o++)
+ if (best_crtcs[o] == crtc)
+ break;
+ if (o < n)
+ {
+ /*
+ * If the two outputs desire the same mode,
+ * see if they can be cloned
+ */
+ if (xf86ModesEqual (modes[o], modes[n]) &&
+ config->output[o]->initial_rotation == config->output[n]->initial_rotation &&
+ config->output[o]->initial_x == config->output[n]->initial_x &&
+ config->output[o]->initial_y == config->output[n]->initial_y)
+ {
+ if ((output->possible_clones & (1 << o)) == 0)
+ continue; /* nope, try next CRTC */
+ }
+ else
+ continue; /* different modes, can't clone */
+ }
+ crtcs[n] = crtc;
+ memcpy (crtcs, best_crtcs, n * sizeof (xf86CrtcPtr));
+ score = my_score + xf86PickCrtcs (scrn, crtcs, modes, n+1, width, height);
+ if (score > best_score)
+ {
+ best_crtc = crtc;
+ best_score = score;
+ memcpy (best_crtcs, crtcs, config->num_output * sizeof (xf86CrtcPtr));
+ }
+ }
+ free(crtcs);
+ return best_score;
+}
+
+
+/*
+ * Compute the virtual size necessary to place all of the available
+ * crtcs in the specified configuration.
+ *
+ * canGrow indicates that the driver can make the screen larger than its initial
+ * configuration. If FALSE, this function will enlarge the screen to include
+ * the largest available mode.
+ */
+
+static void
+xf86DefaultScreenLimits (ScrnInfoPtr scrn, int *widthp, int *heightp,
+ Bool canGrow)
+{
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+ int width = 0, height = 0;
+ int o;
+ int c;
+ int s;
+
+ for (c = 0; c < config->num_crtc; c++)
+ {
+ int crtc_width = 0, crtc_height = 0;
+ xf86CrtcPtr crtc = config->crtc[c];
+
+ if (crtc->enabled)
+ {
+ crtc_width = crtc->desiredX + xf86ModeWidth (&crtc->desiredMode, crtc->desiredRotation);
+ crtc_height = crtc->desiredY + xf86ModeHeight (&crtc->desiredMode, crtc->desiredRotation);
+ }
+ if (!canGrow) {
+ for (o = 0; o < config->num_output; o++)
+ {
+ xf86OutputPtr output = config->output[o];
+
+ for (s = 0; s < config->num_crtc; s++)
+ if (output->possible_crtcs & (1 << s))
+ {
+ DisplayModePtr mode;
+ for (mode = output->probed_modes; mode; mode = mode->next)
+ {
+ if (mode->HDisplay > crtc_width)
+ crtc_width = mode->HDisplay;
+ if (mode->VDisplay > crtc_width)
+ crtc_width = mode->VDisplay;
+ if (mode->VDisplay > crtc_height)
+ crtc_height = mode->VDisplay;
+ if (mode->HDisplay > crtc_height)
+ crtc_height = mode->HDisplay;
+ }
+ }
+ }
+ }
+ if (crtc_width > width)
+ width = crtc_width;
+ if (crtc_height > height)
+ height = crtc_height;
+ }
+ if (config->maxWidth && width > config->maxWidth) width = config->maxWidth;
+ if (config->maxHeight && height > config->maxHeight) height = config->maxHeight;
+ if (config->minWidth && width < config->minWidth) width = config->minWidth;
+ if (config->minHeight && height < config->minHeight) height = config->minHeight;
+ *widthp = width;
+ *heightp = height;
+}
+
+#define POSITION_UNSET -100000
+
+/*
+ * check if the user configured any outputs at all
+ * with either a position or a relative setting or a mode.
+ */
+static Bool
+xf86UserConfiguredOutputs(ScrnInfoPtr scrn, DisplayModePtr *modes)
+{
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+ int o;
+ Bool user_conf = FALSE;
+
+ for (o = 0; o < config->num_output; o++)
+ {
+ xf86OutputPtr output = config->output[o];
+ char *position;
+ char *relative_name;
+ OutputOpts relation;
+ int r;
+ static const OutputOpts relations[] = {
+ OPTION_BELOW, OPTION_RIGHT_OF, OPTION_ABOVE, OPTION_LEFT_OF
+ };
+
+ position = xf86GetOptValString (output->options,
+ OPTION_POSITION);
+ if (position)
+ user_conf = TRUE;
+
+ relation = 0;
+ relative_name = NULL;
+ for (r = 0; r < 4; r++)
+ {
+ relation = relations[r];
+ relative_name = xf86GetOptValString (output->options,
+ relation);
+ if (relative_name)
+ break;
+ }
+ if (relative_name)
+ user_conf = TRUE;
+
+ modes[o] = xf86OutputHasUserPreferredMode(output);
+ if (modes[o])
+ user_conf = TRUE;
+ }
+
+ return user_conf;
+}
+
+static Bool
+xf86InitialOutputPositions (ScrnInfoPtr scrn, DisplayModePtr *modes)
+{
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+ int o;
+ int min_x, min_y;
+
+ for (o = 0; o < config->num_output; o++)
+ {
+ xf86OutputPtr output = config->output[o];
+
+ output->initial_x = output->initial_y = POSITION_UNSET;
+ }
+
+ /*
+ * Loop until all outputs are set
+ */
+ for (;;)
+ {
+ Bool any_set = FALSE;
+ Bool keep_going = FALSE;
+
+ for (o = 0; o < config->num_output; o++)
+ {
+ static const OutputOpts relations[] = {
+ OPTION_BELOW, OPTION_RIGHT_OF, OPTION_ABOVE, OPTION_LEFT_OF
+ };
+ xf86OutputPtr output = config->output[o];
+ xf86OutputPtr relative;
+ char *relative_name;
+ char *position;
+ OutputOpts relation;
+ int r;
+
+ if (output->initial_x != POSITION_UNSET)
+ continue;
+ position = xf86GetOptValString (output->options,
+ OPTION_POSITION);
+ /*
+ * Absolute position wins
+ */
+ if (position)
+ {
+ int x, y;
+ if (sscanf (position, "%d %d", &x, &y) == 2)
+ {
+ output->initial_x = x;
+ output->initial_y = y;
+ }
+ else
+ {
+ xf86DrvMsg (scrn->scrnIndex, X_ERROR,
+ "Output %s position not of form \"x y\"\n",
+ output->name);
+ output->initial_x = output->initial_y = 0;
+ }
+ any_set = TRUE;
+ continue;
+ }
+ /*
+ * Next comes relative positions
+ */
+ relation = 0;
+ relative_name = NULL;
+ for (r = 0; r < 4; r++)
+ {
+ relation = relations[r];
+ relative_name = xf86GetOptValString (output->options,
+ relation);
+ if (relative_name)
+ break;
+ }
+ if (relative_name)
+ {
+ int or;
+ relative = NULL;
+ for (or = 0; or < config->num_output; or++)
+ {
+ xf86OutputPtr out_rel = config->output[or];
+ XF86ConfMonitorPtr rel_mon = out_rel->conf_monitor;
+
+ if (rel_mon)
+ {
+ if (xf86nameCompare (rel_mon->mon_identifier,
+ relative_name) == 0)
+ {
+ relative = config->output[or];
+ break;
+ }
+ }
+ if (strcmp (out_rel->name, relative_name) == 0)
+ {
+ relative = config->output[or];
+ break;
+ }
+ }
+ if (!relative)
+ {
+ xf86DrvMsg (scrn->scrnIndex, X_ERROR,
+ "Cannot position output %s relative to unknown output %s\n",
+ output->name, relative_name);
+ output->initial_x = 0;
+ output->initial_y = 0;
+ any_set = TRUE;
+ continue;
+ }
+ if (!modes[or])
+ {
+ xf86DrvMsg (scrn->scrnIndex, X_ERROR,
+ "Cannot position output %s relative to output %s without modes\n",
+ output->name, relative_name);
+ output->initial_x = 0;
+ output->initial_y = 0;
+ any_set = TRUE;
+ continue;
+ }
+ if (relative->initial_x == POSITION_UNSET)
+ {
+ keep_going = TRUE;
+ continue;
+ }
+ output->initial_x = relative->initial_x;
+ output->initial_y = relative->initial_y;
+ switch (relation) {
+ case OPTION_BELOW:
+ output->initial_y += xf86ModeHeight (modes[or], relative->initial_rotation);
+ break;
+ case OPTION_RIGHT_OF:
+ output->initial_x += xf86ModeWidth (modes[or], relative->initial_rotation);
+ break;
+ case OPTION_ABOVE:
+ if (modes[o])
+ output->initial_y -= xf86ModeHeight (modes[o], output->initial_rotation);
+ break;
+ case OPTION_LEFT_OF:
+ if (modes[o])
+ output->initial_x -= xf86ModeWidth (modes[o], output->initial_rotation);
+ break;
+ default:
+ break;
+ }
+ any_set = TRUE;
+ continue;
+ }
+
+ /* Nothing set, just stick them at 0,0 */
+ output->initial_x = 0;
+ output->initial_y = 0;
+ any_set = TRUE;
+ }
+ if (!keep_going)
+ break;
+ if (!any_set)
+ {
+ for (o = 0; o < config->num_output; o++)
+ {
+ xf86OutputPtr output = config->output[o];
+ if (output->initial_x == POSITION_UNSET)
+ {
+ xf86DrvMsg (scrn->scrnIndex, X_ERROR,
+ "Output position loop. Moving %s to 0,0\n",
+ output->name);
+ output->initial_x = output->initial_y = 0;
+ break;
+ }
+ }
+ }
+ }
+
+ /*
+ * normalize positions
+ */
+ min_x = 1000000;
+ min_y = 1000000;
+ for (o = 0; o < config->num_output; o++)
+ {
+ xf86OutputPtr output = config->output[o];
+
+ if (output->initial_x < min_x)
+ min_x = output->initial_x;
+ if (output->initial_y < min_y)
+ min_y = output->initial_y;
+ }
+
+ for (o = 0; o < config->num_output; o++)
+ {
+ xf86OutputPtr output = config->output[o];
+
+ output->initial_x -= min_x;
+ output->initial_y -= min_y;
+ }
+ return TRUE;
+}
+
+static void
+xf86InitialPanning (ScrnInfoPtr scrn)
+{
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+ int o;
+
+ for (o = 0; o < config->num_output; o++)
+ {
+ xf86OutputPtr output = config->output[o];
+ char *panning = xf86GetOptValString (output->options, OPTION_PANNING);
+ int width, height, left, top;
+ int track_width, track_height, track_left, track_top;
+ int brdr[4];
+
+ memset (&output->initialTotalArea, 0, sizeof(BoxRec));
+ memset (&output->initialTrackingArea, 0, sizeof(BoxRec));
+ memset (output->initialBorder, 0, 4*sizeof(INT16));
+
+ if (! panning)
+ continue;
+
+ switch (sscanf (panning, "%dx%d+%d+%d/%dx%d+%d+%d/%d/%d/%d/%d",
+ &width, &height, &left, &top,
+ &track_width, &track_height, &track_left, &track_top,
+ &brdr[0], &brdr[1], &brdr[2], &brdr[3])) {
+ case 12:
+ output->initialBorder[0] = brdr[0];
+ output->initialBorder[1] = brdr[1];
+ output->initialBorder[2] = brdr[2];
+ output->initialBorder[3] = brdr[3];
+ /* fall through */
+ case 8:
+ output->initialTrackingArea.x1 = track_left;
+ output->initialTrackingArea.y1 = track_top;
+ output->initialTrackingArea.x2 = track_left + track_width;
+ output->initialTrackingArea.y2 = track_top + track_height;
+ /* fall through */
+ case 4:
+ output->initialTotalArea.x1 = left;
+ output->initialTotalArea.y1 = top;
+ /* fall through */
+ case 2:
+ output->initialTotalArea.x2 = output->initialTotalArea.x1 + width;
+ output->initialTotalArea.y2 = output->initialTotalArea.y1 + height;
+ break;
+ default:
+ xf86DrvMsg (scrn->scrnIndex, X_ERROR,
+ "Broken panning specification '%s' for output %s in config file\n",
+ panning, output->name);
+ }
+ }
+}
+
+/** Return - 0 + if a should be earlier, same or later than b in list
+ */
+static int
+xf86ModeCompare (DisplayModePtr a, DisplayModePtr b)
+{
+ int diff;
+
+ diff = ((b->type & M_T_PREFERRED) != 0) - ((a->type & M_T_PREFERRED) != 0);
+ if (diff)
+ return diff;
+ diff = b->HDisplay * b->VDisplay - a->HDisplay * a->VDisplay;
+ if (diff)
+ return diff;
+ diff = b->Clock - a->Clock;
+ return diff;
+}
+
+/**
+ * Insertion sort input in-place and return the resulting head
+ */
+static DisplayModePtr
+xf86SortModes (DisplayModePtr input)
+{
+ DisplayModePtr output = NULL, i, o, n, *op, prev;
+
+ /* sort by preferred status and pixel area */
+ while (input)
+ {
+ i = input;
+ input = input->next;
+ for (op = &output; (o = *op); op = &o->next)
+ if (xf86ModeCompare (o, i) > 0)
+ break;
+ i->next = *op;
+ *op = i;
+ }
+ /* prune identical modes */
+ for (o = output; o && (n = o->next); o = n)
+ {
+ if (!strcmp (o->name, n->name) && xf86ModesEqual (o, n))
+ {
+ o->next = n->next;
+ free(n->name);
+ free(n);
+ n = o;
+ }
+ }
+ /* hook up backward links */
+ prev = NULL;
+ for (o = output; o; o = o->next)
+ {
+ o->prev = prev;
+ prev = o;
+ }
+ return output;
+}
+
+static char *
+preferredMode(ScrnInfoPtr pScrn, xf86OutputPtr output)
+{
+ char *preferred_mode = NULL;
+
+ /* Check for a configured preference for a particular mode */
+ preferred_mode = xf86GetOptValString (output->options,
+ OPTION_PREFERRED_MODE);
+ if (preferred_mode)
+ return preferred_mode;
+
+ if (pScrn->display->modes && *pScrn->display->modes)
+ preferred_mode = *pScrn->display->modes;
+
+ return preferred_mode;
+}
+
+static void
+GuessRangeFromModes(MonPtr mon, DisplayModePtr mode)
+{
+ if (!mon || !mode)
+ return;
+
+ mon->nHsync = 1;
+ mon->hsync[0].lo = 1024.0;
+ mon->hsync[0].hi = 0.0;
+
+ mon->nVrefresh = 1;
+ mon->vrefresh[0].lo = 1024.0;
+ mon->vrefresh[0].hi = 0.0;
+
+ while (mode) {
+ if (!mode->HSync)
+ mode->HSync = ((float) mode->Clock ) / ((float) mode->HTotal);
+
+ if (!mode->VRefresh)
+ mode->VRefresh = (1000.0 * ((float) mode->Clock)) /
+ ((float) (mode->HTotal * mode->VTotal));
+
+ if (mode->HSync < mon->hsync[0].lo)
+ mon->hsync[0].lo = mode->HSync;
+
+ if (mode->HSync > mon->hsync[0].hi)
+ mon->hsync[0].hi = mode->HSync;
+
+ if (mode->VRefresh < mon->vrefresh[0].lo)
+ mon->vrefresh[0].lo = mode->VRefresh;
+
+ if (mode->VRefresh > mon->vrefresh[0].hi)
+ mon->vrefresh[0].hi = mode->VRefresh;
+
+ mode = mode->next;
+ }
+
+ /* stretch out the bottom to fit 640x480@60 */
+ if (mon->hsync[0].lo > 31.0)
+ mon->hsync[0].lo = 31.0;
+ if (mon->vrefresh[0].lo > 58.0)
+ mon->vrefresh[0].lo = 58.0;
+}
+
+enum det_monrec_source {
+ sync_config, sync_edid, sync_default
+};
+
+struct det_monrec_parameter {
+ MonRec *mon_rec;
+ int *max_clock;
+ Bool set_hsync;
+ Bool set_vrefresh;
+ enum det_monrec_source *sync_source;
+};
+
+static void handle_detailed_monrec(struct detailed_monitor_section *det_mon,
+ void *data)
+{
+ struct det_monrec_parameter *p;
+ p = (struct det_monrec_parameter *)data;
+
+ if (det_mon->type == DS_RANGES) {
+ struct monitor_ranges *ranges = &det_mon->section.ranges;
+ if (p->set_hsync && ranges->max_h) {
+ p->mon_rec->hsync[p->mon_rec->nHsync].lo = ranges->min_h;
+ p->mon_rec->hsync[p->mon_rec->nHsync].hi = ranges->max_h;
+ p->mon_rec->nHsync++;
+ if (*p->sync_source == sync_default)
+ *p->sync_source = sync_edid;
+ }
+ if (p->set_vrefresh && ranges->max_v) {
+ p->mon_rec->vrefresh[p->mon_rec->nVrefresh].lo = ranges->min_v;
+ p->mon_rec->vrefresh[p->mon_rec->nVrefresh].hi = ranges->max_v;
+ p->mon_rec->nVrefresh++;
+ if (*p->sync_source == sync_default)
+ *p->sync_source = sync_edid;
+ }
+ if (ranges->max_clock * 1000 > *p->max_clock)
+ *p->max_clock = ranges->max_clock * 1000;
+ }
+}
+
+void
+xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
+{
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+ int o;
+
+ /* When canGrow was TRUE in the initial configuration we have to
+ * compare against the maximum values so that we don't drop modes.
+ * When canGrow was FALSE, the maximum values would have been clamped
+ * anyway.
+ */
+ if (maxX == 0 || maxY == 0) {
+ maxX = config->maxWidth;
+ maxY = config->maxHeight;
+ }
+
+ /* Probe the list of modes for each output. */
+ for (o = 0; o < config->num_output; o++)
+ {
+ xf86OutputPtr output = config->output[o];
+ DisplayModePtr mode;
+ DisplayModePtr config_modes = NULL, output_modes, default_modes = NULL;
+ char *preferred_mode;
+ xf86MonPtr edid_monitor;
+ XF86ConfMonitorPtr conf_monitor;
+ MonRec mon_rec;
+ int min_clock = 0;
+ int max_clock = 0;
+ double clock;
+ Bool add_default_modes = xf86ReturnOptValBool(output->options, OPTION_DEFAULT_MODES, TRUE);
+ Bool debug_modes = config->debug_modes ||
+ xf86Initialising;
+ enum det_monrec_source sync_source = sync_default;
+
+ while (output->probed_modes != NULL)
+ xf86DeleteMode(&output->probed_modes, output->probed_modes);
+
+ /*
+ * Check connection status
+ */
+ output->status = (*output->funcs->detect)(output);
+
+ if (output->status == XF86OutputStatusDisconnected &&
+ !xf86ReturnOptValBool(output->options, OPTION_ENABLE, FALSE))
+ {
+ xf86OutputSetEDID (output, NULL);
+ continue;
+ }
+
+ memset (&mon_rec, '\0', sizeof (mon_rec));
+
+ conf_monitor = output->conf_monitor;
+
+ if (conf_monitor)
+ {
+ int i;
+
+ for (i = 0; i < conf_monitor->mon_n_hsync; i++)
+ {
+ mon_rec.hsync[mon_rec.nHsync].lo = conf_monitor->mon_hsync[i].lo;
+ mon_rec.hsync[mon_rec.nHsync].hi = conf_monitor->mon_hsync[i].hi;
+ mon_rec.nHsync++;
+ sync_source = sync_config;
+ }
+ for (i = 0; i < conf_monitor->mon_n_vrefresh; i++)
+ {
+ mon_rec.vrefresh[mon_rec.nVrefresh].lo = conf_monitor->mon_vrefresh[i].lo;
+ mon_rec.vrefresh[mon_rec.nVrefresh].hi = conf_monitor->mon_vrefresh[i].hi;
+ mon_rec.nVrefresh++;
+ sync_source = sync_config;
+ }
+ config_modes = xf86GetMonitorModes (scrn, conf_monitor);
+ }
+
+ output_modes = (*output->funcs->get_modes) (output);
+
+ edid_monitor = output->MonInfo;
+
+ if (edid_monitor)
+ {
+ struct det_monrec_parameter p;
+ struct disp_features *features = &edid_monitor->features;
+
+ /* if display is not continuous-frequency, don't add default modes */
+ if (!GTF_SUPPORTED(features->msc))
+ add_default_modes = FALSE;
+
+ p.mon_rec = &mon_rec;
+ p.max_clock = &max_clock;
+ p.set_hsync = mon_rec.nHsync == 0;
+ p.set_vrefresh = mon_rec.nVrefresh == 0;
+ p.sync_source = &sync_source;
+
+ xf86ForEachDetailedBlock(edid_monitor,
+ handle_detailed_monrec,
+ &p);
+ }
+
+ if (xf86GetOptValFreq (output->options, OPTION_MIN_CLOCK,
+ OPTUNITS_KHZ, &clock))
+ min_clock = (int) clock;
+ if (xf86GetOptValFreq (output->options, OPTION_MAX_CLOCK,
+ OPTUNITS_KHZ, &clock))
+ max_clock = (int) clock;
+
+ /* If we still don't have a sync range, guess wildly */
+ if (!mon_rec.nHsync || !mon_rec.nVrefresh)
+ GuessRangeFromModes(&mon_rec, output_modes);
+
+ /*
+ * These limits will end up setting a 1024x768@60Hz mode by default,
+ * which seems like a fairly good mode to use when nothing else is
+ * specified
+ */
+ if (mon_rec.nHsync == 0)
+ {
+ mon_rec.hsync[0].lo = 31.0;
+ mon_rec.hsync[0].hi = 55.0;
+ mon_rec.nHsync = 1;
+ }
+ if (mon_rec.nVrefresh == 0)
+ {
+ mon_rec.vrefresh[0].lo = 58.0;
+ mon_rec.vrefresh[0].hi = 62.0;
+ mon_rec.nVrefresh = 1;
+ }
+
+ if (add_default_modes)
+ default_modes = xf86GetDefaultModes ();
+
+ /*
+ * If this is not an RB monitor, remove RB modes from the default
+ * pool. RB modes from the config or the monitor itself are fine.
+ */
+ if (!mon_rec.reducedblanking)
+ xf86ValidateModesReducedBlanking (scrn, default_modes);
+
+ if (sync_source == sync_config)
+ {
+ /*
+ * Check output and config modes against sync range from config file
+ */
+ xf86ValidateModesSync (scrn, output_modes, &mon_rec);
+ xf86ValidateModesSync (scrn, config_modes, &mon_rec);
+ }
+ /*
+ * Check default modes against sync range
+ */
+ xf86ValidateModesSync (scrn, default_modes, &mon_rec);
+ /*
+ * Check default modes against monitor max clock
+ */
+ if (max_clock) {
+ xf86ValidateModesClocks(scrn, default_modes,
+ &min_clock, &max_clock, 1);
+ xf86ValidateModesClocks(scrn, output_modes,
+ &min_clock, &max_clock, 1);
+ }
+
+ output->probed_modes = NULL;
+ output->probed_modes = xf86ModesAdd (output->probed_modes, config_modes);
+ output->probed_modes = xf86ModesAdd (output->probed_modes, output_modes);
+ output->probed_modes = xf86ModesAdd (output->probed_modes, default_modes);
+
+ /*
+ * Check all modes against max size, interlace, and doublescan
+ */
+ if (maxX && maxY)
+ xf86ValidateModesSize (scrn, output->probed_modes,
+ maxX, maxY, 0);
+
+ {
+ int flags = (output->interlaceAllowed ? V_INTERLACE : 0) |
+ (output->doubleScanAllowed ? V_DBLSCAN : 0);
+ xf86ValidateModesFlags (scrn, output->probed_modes, flags);
+ }
+
+ /*
+ * Check all modes against output
+ */
+ for (mode = output->probed_modes; mode != NULL; mode = mode->next)
+ if (mode->status == MODE_OK)
+ mode->status = (*output->funcs->mode_valid)(output, mode);
+
+ xf86PruneInvalidModes(scrn, &output->probed_modes, debug_modes);
+
+ output->probed_modes = xf86SortModes (output->probed_modes);
+
+ /* Check for a configured preference for a particular mode */
+ preferred_mode = preferredMode(scrn, output);
+
+ if (preferred_mode)
+ {
+ for (mode = output->probed_modes; mode; mode = mode->next)
+ {
+ if (!strcmp (preferred_mode, mode->name))
+ {
+ if (mode != output->probed_modes)
+ {
+ if (mode->prev)
+ mode->prev->next = mode->next;
+ if (mode->next)
+ mode->next->prev = mode->prev;
+ mode->next = output->probed_modes;
+ output->probed_modes->prev = mode;
+ mode->prev = NULL;
+ output->probed_modes = mode;
+ }
+ mode->type |= (M_T_PREFERRED|M_T_USERPREF);
+ break;
+ }
+ }
+ }
+
+ output->initial_rotation = xf86OutputInitialRotation (output);
+
+ if (debug_modes) {
+ if (output->probed_modes != NULL) {
+ xf86DrvMsg(scrn->scrnIndex, X_INFO,
+ "Printing probed modes for output %s\n",
+ output->name);
+ } else {
+ xf86DrvMsg(scrn->scrnIndex, X_INFO,
+ "No remaining probed modes for output %s\n",
+ output->name);
+ }
+ }
+ for (mode = output->probed_modes; mode != NULL; mode = mode->next)
+ {
+ /* The code to choose the best mode per pipe later on will require
+ * VRefresh to be set.
+ */
+ mode->VRefresh = xf86ModeVRefresh(mode);
+ xf86SetModeCrtc(mode, INTERLACE_HALVE_V);
+
+ if (debug_modes)
+ xf86PrintModeline(scrn->scrnIndex, mode);
+ }
+ }
+}
+
+
+/**
+ * Copy one of the output mode lists to the ScrnInfo record
+ */
+
+/* XXX where does this function belong? Here? */
+void
+xf86RandR12GetOriginalVirtualSize(ScrnInfoPtr scrn, int *x, int *y);
+
+static DisplayModePtr
+biggestMode(DisplayModePtr a, DisplayModePtr b)
+{
+ int A, B;
+
+ if (!a)
+ return b;
+ if (!b)
+ return a;
+
+ A = a->HDisplay * a->VDisplay;
+ B = b->HDisplay * b->VDisplay;
+
+ if (A > B)
+ return a;
+
+ return b;
+}
+
+static xf86OutputPtr
+SetCompatOutput(xf86CrtcConfigPtr config)
+{
+ xf86OutputPtr output = NULL, test = NULL;
+ DisplayModePtr maxmode = NULL, testmode, mode;
+ int o, compat = -1, count, mincount = 0;
+
+ /* Look for one that's definitely connected */
+ for (o = 0; o < config->num_output; o++)
+ {
+ test = config->output[o];
+ if (!test->crtc)
+ continue;
+ if (test->status != XF86OutputStatusConnected)
+ continue;
+ if (!test->probed_modes)
+ continue;
+
+ testmode = mode = test->probed_modes;
+ for (count = 0; mode; mode = mode->next, count++)
+ testmode = biggestMode(testmode, mode);
+
+ if (!output) {
+ output = test;
+ compat = o;
+ maxmode = testmode;
+ mincount = count;
+ } else if (maxmode == biggestMode(maxmode, testmode)) {
+ output = test;
+ compat = o;
+ maxmode = testmode;
+ mincount = count;
+ } else if ((maxmode->HDisplay == testmode->HDisplay) &&
+ (maxmode->VDisplay == testmode->VDisplay) &&
+ count <= mincount) {
+ output = test;
+ compat = o;
+ maxmode = testmode;
+ mincount = count;
+ }
+ }
+
+ /* If we didn't find one, take anything we can get */
+ if (!output)
+ {
+ for (o = 0; o < config->num_output; o++)
+ {
+ test = config->output[o];
+ if (!test->crtc)
+ continue;
+ if (!test->probed_modes)
+ continue;
+
+ if (!output) {
+ output = test;
+ compat = o;
+ } else if (test->probed_modes->HDisplay < output->probed_modes->HDisplay) {
+ output = test;
+ compat = o;
+ }
+ }
+ }
+
+ if (compat >= 0) {
+ config->compat_output = compat;
+ } else {
+ /* Don't change the compat output when no valid outputs found */
+ output = config->output[config->compat_output];
+ }
+
+ return output;
+}
+
+void
+xf86SetScrnInfoModes (ScrnInfoPtr scrn)
+{
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+ xf86OutputPtr output;
+ xf86CrtcPtr crtc;
+ DisplayModePtr last, mode = NULL;
+
+ output = SetCompatOutput(config);
+
+ if (!output)
+ return; /* punt */
+
+ crtc = output->crtc;
+
+ /* Clear any existing modes from scrn->modes */
+ while (scrn->modes != NULL)
+ xf86DeleteMode(&scrn->modes, scrn->modes);
+
+ /* Set scrn->modes to the mode list for the 'compat' output */
+ scrn->modes = xf86DuplicateModes(scrn, output->probed_modes);
+
+ if (crtc) {
+ for (mode = scrn->modes; mode; mode = mode->next)
+ if (xf86ModesEqual (mode, &crtc->desiredMode))
+ break;
+ }
+
+ if (scrn->modes != NULL) {
+ /* For some reason, scrn->modes is circular, unlike the other mode
+ * lists. How great is that?
+ */
+ for (last = scrn->modes; last && last->next; last = last->next)
+ ;
+ last->next = scrn->modes;
+ scrn->modes->prev = last;
+ if (mode) {
+ while (scrn->modes != mode)
+ scrn->modes = scrn->modes->next;
+ }
+ }
+ scrn->currentMode = scrn->modes;
+#ifdef XFreeXDGA
+ if (scrn->pScreen)
+ _xf86_di_dga_reinit_internal(scrn->pScreen);
+#endif
+}
+
+static Bool
+xf86CollectEnabledOutputs(ScrnInfoPtr scrn, xf86CrtcConfigPtr config,
+ Bool *enabled)
+{
+ Bool any_enabled = FALSE;
+ int o;
+
+ for (o = 0; o < config->num_output; o++)
+ any_enabled |= enabled[o] = xf86OutputEnabled(config->output[o], TRUE);
+
+ if (!any_enabled) {
+ xf86DrvMsg(scrn->scrnIndex, X_WARNING,
+ "No outputs definitely connected, trying again...\n");
+
+ for (o = 0; o < config->num_output; o++)
+ any_enabled |= enabled[o] = xf86OutputEnabled(config->output[o], FALSE);
+ }
+
+ return any_enabled;
+}
+
+static Bool
+nextEnabledOutput(xf86CrtcConfigPtr config, Bool *enabled, int *index)
+{
+ int o = *index;
+
+ for (o++; o < config->num_output; o++) {
+ if (enabled[o]) {
+ *index = o;
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static Bool
+aspectMatch(float a, float b)
+{
+ return fabs(1 - (a / b)) < 0.05;
+}
+
+static DisplayModePtr
+nextAspectMode(xf86OutputPtr o, DisplayModePtr last, float aspect)
+{
+ DisplayModePtr m = NULL;
+
+ if (!o)
+ return NULL;
+
+ if (!last)
+ m = o->probed_modes;
+ else
+ m = last->next;
+
+ for (; m; m = m->next)
+ if (aspectMatch(aspect, (float)m->HDisplay / (float)m->VDisplay))
+ return m;
+
+ return NULL;
+}
+
+static DisplayModePtr
+bestModeForAspect(xf86CrtcConfigPtr config, Bool *enabled, float aspect)
+{
+ int o = -1, p;
+ DisplayModePtr mode = NULL, test = NULL, match = NULL;
+
+ if (!nextEnabledOutput(config, enabled, &o))
+ return NULL;
+ while ((mode = nextAspectMode(config->output[o], mode, aspect))) {
+ test = mode;
+ for (p = o; nextEnabledOutput(config, enabled, &p); ) {
+ test = xf86OutputFindClosestMode(config->output[p], mode);
+ if (!test)
+ break;
+ if (test->HDisplay != mode->HDisplay ||
+ test->VDisplay != mode->VDisplay) {
+ test = NULL;
+ break;
+ }
+ }
+
+ /* if we didn't match it on all outputs, try the next one */
+ if (!test)
+ continue;
+
+ /* if it's bigger than the last one, save it */
+ if (!match || (test->HDisplay > match->HDisplay))
+ match = test;
+ }
+
+ /* return the biggest one found */
+ return match;
+}
+
+static Bool
+xf86TargetPreferred(ScrnInfoPtr scrn, xf86CrtcConfigPtr config,
+ DisplayModePtr *modes, Bool *enabled,
+ int width, int height)
+{
+ int o, p;
+ int max_pref_width = 0, max_pref_height = 0;
+ DisplayModePtr *preferred, *preferred_match;
+ Bool ret = FALSE;
+
+ preferred = xnfcalloc(config->num_output, sizeof(DisplayModePtr));
+ preferred_match = xnfcalloc(config->num_output, sizeof(DisplayModePtr));
+
+ /* Check if the preferred mode is available on all outputs */
+ for (p = -1; nextEnabledOutput(config, enabled, &p); ) {
+ Rotation r = config->output[p]->initial_rotation;
+ DisplayModePtr mode;
+ if ((preferred[p] = xf86OutputHasPreferredMode(config->output[p],
+ width, height))) {
+ int pref_width = xf86ModeWidth(preferred[p], r);
+ int pref_height = xf86ModeHeight(preferred[p], r);
+ Bool all_match = TRUE;
+
+ for (o = -1; nextEnabledOutput(config, enabled, &o); ) {
+ Bool match = FALSE;
+ xf86OutputPtr output = config->output[o];
+ if (o == p)
+ continue;
+
+ for (mode = output->probed_modes; mode; mode = mode->next) {
+ Rotation r = output->initial_rotation;
+ if (xf86ModeWidth(mode, r) == pref_width &&
+ xf86ModeHeight(mode, r) == pref_height) {
+ preferred[o] = mode;
+ match = TRUE;
+ }
+ }
+
+ all_match &= match;
+ }
+
+ if (all_match &&
+ (pref_width*pref_height > max_pref_width*max_pref_height)) {
+ for (o = -1; nextEnabledOutput(config, enabled, &o); )
+ preferred_match[o] = preferred[o];
+ max_pref_width = pref_width;
+ max_pref_height = pref_height;
+ ret = TRUE;
+ }
+ }
+ }
+
+ /*
+ * If there's no preferred mode, but only one monitor, pick the
+ * biggest mode for its aspect ratio, assuming one exists.
+ */
+ if (!ret) do {
+ int i = 0;
+ float aspect = 0.0;
+
+ /* count the number of enabled outputs */
+ for (i = 0, p = -1; nextEnabledOutput(config, enabled, &p); i++) ;
+
+ if (i != 1)
+ break;
+
+ p = -1;
+ nextEnabledOutput(config, enabled, &p);
+ if (config->output[p]->mm_height)
+ aspect = (float)config->output[p]->mm_width /
+ (float)config->output[p]->mm_height;
+
+ if (aspect)
+ preferred_match[p] = bestModeForAspect(config, enabled, aspect);
+
+ if (preferred_match[p])
+ ret = TRUE;
+
+ } while (0);
+
+ if (ret) {
+ /* oh good, there is a match. stash the selected modes and return. */
+ memcpy(modes, preferred_match,
+ config->num_output * sizeof(DisplayModePtr));
+ }
+
+ free(preferred);
+ free(preferred_match);
+ return ret;
+}
+
+static Bool
+xf86TargetAspect(ScrnInfoPtr scrn, xf86CrtcConfigPtr config,
+ DisplayModePtr *modes, Bool *enabled,
+ int width, int height)
+{
+ int o;
+ float aspect = 0.0, *aspects;
+ xf86OutputPtr output;
+ Bool ret = FALSE;
+ DisplayModePtr guess = NULL, aspect_guess = NULL, base_guess = NULL;
+
+ aspects = xnfcalloc(config->num_output, sizeof(float));
+
+ /* collect the aspect ratios */
+ for (o = -1; nextEnabledOutput(config, enabled, &o); ) {
+ output = config->output[o];
+ if (output->mm_height)
+ aspects[o] = (float)output->mm_width / (float)output->mm_height;
+ else
+ aspects[o] = 4.0 / 3.0;
+ }
+
+ /* check that they're all the same */
+ for (o = -1; nextEnabledOutput(config, enabled, &o); ) {
+ output = config->output[o];
+ if (!aspect) {
+ aspect = aspects[o];
+ } else if (!aspectMatch(aspect, aspects[o])) {
+ goto no_aspect_match;
+ }
+ }
+
+ /* if they're all 4:3, just skip ahead and save effort */
+ if (!aspectMatch(aspect, 4.0/3.0))
+ aspect_guess = bestModeForAspect(config, enabled, aspect);
+
+no_aspect_match:
+ base_guess = bestModeForAspect(config, enabled, 4.0/3.0);
+
+ guess = biggestMode(base_guess, aspect_guess);
+
+ if (!guess)
+ goto out;
+
+ /* found a mode that works everywhere, now apply it */
+ for (o = -1; nextEnabledOutput(config, enabled, &o); ) {
+ modes[o] = xf86OutputFindClosestMode(config->output[o], guess);
+ }
+ ret = TRUE;
+
+out:
+ free(aspects);
+ return ret;
+}
+
+static Bool
+xf86TargetFallback(ScrnInfoPtr scrn, xf86CrtcConfigPtr config,
+ DisplayModePtr *modes, Bool *enabled,
+ int width, int height)
+{
+ DisplayModePtr target_mode = NULL;
+ Rotation target_rotation = RR_Rotate_0;
+ DisplayModePtr default_mode;
+ int default_preferred, target_preferred = 0, o;
+
+ /* User preferred > preferred > other modes */
+ for (o = -1; nextEnabledOutput(config, enabled, &o); ) {
+ default_mode = xf86DefaultMode (config->output[o], width, height);
+ if (!default_mode)
+ continue;
+
+ default_preferred = (((default_mode->type & M_T_PREFERRED) != 0) +
+ ((default_mode->type & M_T_USERPREF) != 0));
+
+ if (default_preferred > target_preferred || !target_mode) {
+ target_mode = default_mode;
+ target_preferred = default_preferred;
+ target_rotation = config->output[o]->initial_rotation;
+ config->compat_output = o;
+ }
+ }
+
+ if (target_mode)
+ modes[config->compat_output] = target_mode;
+
+ /* Fill in other output modes */
+ for (o = -1; nextEnabledOutput(config, enabled, &o); ) {
+ if (!modes[o])
+ modes[o] = xf86ClosestMode(config->output[o], target_mode,
+ target_rotation, width, height);
+ }
+
+ return target_mode != NULL;
+}
+
+static Bool
+xf86TargetUserpref(ScrnInfoPtr scrn, xf86CrtcConfigPtr config,
+ DisplayModePtr *modes, Bool *enabled,
+ int width, int height)
+{
+ int o;
+
+ if (xf86UserConfiguredOutputs(scrn, modes))
+ return xf86TargetFallback(scrn, config, modes, enabled, width, height);
+
+ for (o = -1; nextEnabledOutput(config, enabled, &o); )
+ if (xf86OutputHasUserPreferredMode(config->output[o]))
+ return
+ xf86TargetFallback(scrn, config, modes, enabled, width, height);
+
+ return FALSE;
+}
+
+static Bool
+xf86CrtcSetInitialGamma(xf86CrtcPtr crtc, float gamma_red, float gamma_green,
+ float gamma_blue)
+{
+ int i, size = 256;
+ CARD16 *red, *green, *blue;
+
+ red = malloc(3 * size * sizeof(CARD16));
+ green = red + size;
+ blue = green + size;
+
+ /* Only cause warning if user wanted gamma to be set. */
+ if (!crtc->funcs->gamma_set && (gamma_red != 1.0 || gamma_green != 1.0 || gamma_blue != 1.0)) {
+ free(red);
+ return FALSE;
+ } else if (!crtc->funcs->gamma_set) {
+ free(red);
+ return TRUE;
+ }
+
+ /* At this early stage none of the randr-interface stuff is up.
+ * So take the default gamma size for lack of something better.
+ */
+ for (i = 0; i < size; i++) {
+ if (gamma_red == 1.0)
+ red[i] = i << 8;
+ else
+ red[i] = (CARD16)(pow((double)i/(double)(size - 1),
+ 1. / (double)gamma_red) * (double)(size - 1) * 256);
+
+ if (gamma_green == 1.0)
+ green[i] = i << 8;
+ else
+ green[i] = (CARD16)(pow((double)i/(double)(size - 1),
+ 1. / (double)gamma_green) * (double)(size - 1) * 256);
+
+ if (gamma_blue == 1.0)
+ blue[i] = i << 8;
+ else
+ blue[i] = (CARD16)(pow((double)i/(double)(size - 1),
+ 1. / (double)gamma_blue) * (double)(size - 1) * 256);
+ }
+
+ /* Default size is 256, so anything else is failure. */
+ if (size != crtc->gamma_size) {
+ free(red);
+ return FALSE;
+ }
+
+ crtc->gamma_size = size;
+ memcpy (crtc->gamma_red, red, crtc->gamma_size * sizeof (CARD16));
+ memcpy (crtc->gamma_green, green, crtc->gamma_size * sizeof (CARD16));
+ memcpy (crtc->gamma_blue, blue, crtc->gamma_size * sizeof (CARD16));
+
+ /* Do not set gamma now, delay until the crtc is activated. */
+
+ free(red);
+
+ return TRUE;
+}
+
+static Bool
+xf86OutputSetInitialGamma(xf86OutputPtr output)
+{
+ XF86ConfMonitorPtr mon = output->conf_monitor;
+ float gamma_red = 1.0, gamma_green = 1.0, gamma_blue = 1.0;
+
+ if (!mon)
+ return TRUE;
+
+ if (!output->crtc)
+ return FALSE;
+
+ /* Get configured values, where they exist. */
+ if (mon->mon_gamma_red >= GAMMA_MIN &&
+ mon->mon_gamma_red <= GAMMA_MAX)
+ gamma_red = mon->mon_gamma_red;
+
+ if (mon->mon_gamma_green >= GAMMA_MIN &&
+ mon->mon_gamma_green <= GAMMA_MAX)
+ gamma_green = mon->mon_gamma_green;
+
+ if (mon->mon_gamma_blue >= GAMMA_MIN &&
+ mon->mon_gamma_blue <= GAMMA_MAX)
+ gamma_blue = mon->mon_gamma_blue;
+
+ /* This avoids setting gamma 1.0 in case another cloned output on this crtc has a specific gamma. */
+ if (gamma_red != 1.0 || gamma_green != 1.0 || gamma_blue != 1.0) {
+ xf86DrvMsg(output->scrn->scrnIndex, X_INFO, "Output %s wants gamma correction (%.1f, %.1f, %.1f)\n", output->name, gamma_red, gamma_green, gamma_blue);
+ return xf86CrtcSetInitialGamma(output->crtc, gamma_red, gamma_green, gamma_blue);
+ }else
+ return TRUE;
+}
+
+/**
+ * Construct default screen configuration
+ *
+ * Given auto-detected (and, eventually, configured) values,
+ * construct a usable configuration for the system
+ *
+ * canGrow indicates that the driver can resize the screen to larger than its
+ * initially configured size via the config->funcs->resize hook. If TRUE, this
+ * function will set virtualX and virtualY to match the initial configuration
+ * and leave config->max{Width,Height} alone. If FALSE, it will bloat
+ * virtual[XY] to include the largest modes and set config->max{Width,Height}
+ * accordingly.
+ */
+
+Bool
+xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow)
+{
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+ int o, c;
+ xf86CrtcPtr *crtcs;
+ DisplayModePtr *modes;
+ Bool *enabled;
+ int width, height;
+ int i = scrn->scrnIndex;
+ Bool have_outputs = TRUE;
+ Bool ret;
+
+ /* Set up the device options */
+ config->options = xnfalloc (sizeof (xf86DeviceOptions));
+ memcpy (config->options, xf86DeviceOptions, sizeof (xf86DeviceOptions));
+ xf86ProcessOptions (scrn->scrnIndex,
+ scrn->options,
+ config->options);
+ config->debug_modes = xf86ReturnOptValBool (config->options,
+ OPTION_MODEDEBUG, FALSE);
+
+ if (scrn->display->virtualX)
+ width = scrn->display->virtualX;
+ else
+ width = config->maxWidth;
+ if (scrn->display->virtualY)
+ height = scrn->display->virtualY;
+ else
+ height = config->maxHeight;
+
+ xf86ProbeOutputModes (scrn, width, height);
+
+ crtcs = xnfcalloc (config->num_output, sizeof (xf86CrtcPtr));
+ modes = xnfcalloc (config->num_output, sizeof (DisplayModePtr));
+ enabled = xnfcalloc (config->num_output, sizeof (Bool));
+
+ ret = xf86CollectEnabledOutputs(scrn, config, enabled);
+ if (ret == FALSE && canGrow) {
+ xf86DrvMsg(i, X_WARNING, "Unable to find connected outputs - setting %dx%d initial framebuffer\n",
+ NO_OUTPUT_DEFAULT_WIDTH, NO_OUTPUT_DEFAULT_HEIGHT);
+ have_outputs = FALSE;
+ } else {
+ if (xf86TargetUserpref(scrn, config, modes, enabled, width, height))
+ xf86DrvMsg(i, X_INFO, "Using user preference for initial modes\n");
+ else if (xf86TargetPreferred(scrn, config, modes, enabled, width, height))
+ xf86DrvMsg(i, X_INFO, "Using exact sizes for initial modes\n");
+ else if (xf86TargetAspect(scrn, config, modes, enabled, width, height))
+ xf86DrvMsg(i, X_INFO, "Using fuzzy aspect match for initial modes\n");
+ else if (xf86TargetFallback(scrn, config, modes, enabled, width, height))
+ xf86DrvMsg(i, X_INFO, "Using sloppy heuristic for initial modes\n");
+ else
+ xf86DrvMsg(i, X_WARNING, "Unable to find initial modes\n");
+ }
+
+ for (o = -1; nextEnabledOutput(config, enabled, &o); ) {
+ if (!modes[o])
+ xf86DrvMsg (scrn->scrnIndex, X_ERROR,
+ "Output %s enabled but has no modes\n",
+ config->output[o]->name);
+ else
+ xf86DrvMsg (scrn->scrnIndex, X_INFO,
+ "Output %s using initial mode %s\n",
+ config->output[o]->name, modes[o]->name);
+ }
+
+ /*
+ * Set the position of each output
+ */
+ if (!xf86InitialOutputPositions (scrn, modes))
+ {
+ free(crtcs);
+ free(modes);
+ return FALSE;
+ }
+
+ /*
+ * Set initial panning of each output
+ */
+ xf86InitialPanning (scrn);
+
+ /*
+ * Assign CRTCs to fit output configuration
+ */
+ if (have_outputs && !xf86PickCrtcs (scrn, crtcs, modes, 0, width, height))
+ {
+ free(crtcs);
+ free(modes);
+ return FALSE;
+ }
+
+ /* XXX override xf86 common frame computation code */
+
+ scrn->display->frameX0 = 0;
+ scrn->display->frameY0 = 0;
+
+ for (c = 0; c < config->num_crtc; c++)
+ {
+ xf86CrtcPtr crtc = config->crtc[c];
+
+ crtc->enabled = FALSE;
+ memset (&crtc->desiredMode, '\0', sizeof (crtc->desiredMode));
+ /* Set default gamma for all crtc's. */
+ /* This is done to avoid problems later on with cloned outputs. */
+ xf86CrtcSetInitialGamma(crtc, 1.0, 1.0, 1.0);
+ }
+
+ if (xf86_crtc_supports_gamma(scrn))
+ xf86DrvMsg(scrn->scrnIndex, X_INFO, "Using default gamma of (1.0, 1.0, 1.0) unless otherwise stated.\n");
+
+ /*
+ * Set initial configuration
+ */
+ for (o = 0; o < config->num_output; o++)
+ {
+ xf86OutputPtr output = config->output[o];
+ DisplayModePtr mode = modes[o];
+ xf86CrtcPtr crtc = crtcs[o];
+
+ if (mode && crtc)
+ {
+ crtc->desiredMode = *mode;
+ crtc->desiredRotation = output->initial_rotation;
+ crtc->desiredX = output->initial_x;
+ crtc->desiredY = output->initial_y;
+ crtc->desiredTransformPresent = FALSE;
+ crtc->enabled = TRUE;
+ memcpy (&crtc->panningTotalArea, &output->initialTotalArea, sizeof(BoxRec));
+ memcpy (&crtc->panningTrackingArea, &output->initialTrackingArea, sizeof(BoxRec));
+ memcpy (crtc->panningBorder, output->initialBorder, 4*sizeof(INT16));
+ output->crtc = crtc;
+ if (!xf86OutputSetInitialGamma(output))
+ xf86DrvMsg (scrn->scrnIndex, X_WARNING, "Initial gamma correction for output %s: failed.\n", output->name);
+ } else {
+ output->crtc = NULL;
+ }
+ }
+
+ if (scrn->display->virtualX == 0)
+ {
+ /*
+ * Expand virtual size to cover the current config and potential mode
+ * switches, if the driver can't enlarge the screen later.
+ */
+ xf86DefaultScreenLimits (scrn, &width, &height, canGrow);
+
+ if (have_outputs == FALSE) {
+ if (width < NO_OUTPUT_DEFAULT_WIDTH && height < NO_OUTPUT_DEFAULT_HEIGHT) {
+ width = NO_OUTPUT_DEFAULT_WIDTH;
+ height = NO_OUTPUT_DEFAULT_HEIGHT;
+ }
+ }
+
+ scrn->display->virtualX = width;
+ scrn->display->virtualY = height;
+ }
+
+ if (width > scrn->virtualX)
+ scrn->virtualX = width;
+ if (height > scrn->virtualY)
+ scrn->virtualY = height;
+
+ /*
+ * Make sure the configuration isn't too small.
+ */
+ if (width < config->minWidth || height < config->minHeight)
+ return FALSE;
+
+ /*
+ * Limit the crtc config to virtual[XY] if the driver can't grow the
+ * desktop.
+ */
+ if (!canGrow)
+ {
+ xf86CrtcSetSizeRange (scrn, config->minWidth, config->minHeight,
+ width, height);
+ }
+
+ if (have_outputs) {
+ /* Mirror output modes to scrn mode list */
+ xf86SetScrnInfoModes (scrn);
+ } else {
+ /* Clear any existing modes from scrn->modes */
+ while (scrn->modes != NULL)
+ xf86DeleteMode(&scrn->modes, scrn->modes);
+ scrn->modes = xf86ModesAdd(scrn->modes,
+ xf86CVTMode(width, height, 60, 0, 0));
+ }
+
+
+ free(crtcs);
+ free(modes);
+ return TRUE;
+}
+
+/*
+ * Check the CRTC we're going to map each output to vs. it's current
+ * CRTC. If they don't match, we have to disable the output and the CRTC
+ * since the driver will have to re-route things.
+ */
+static void
+xf86PrepareOutputs (ScrnInfoPtr scrn)
+{
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+ int o;
+
+ for (o = 0; o < config->num_output; o++) {
+ xf86OutputPtr output = config->output[o];
+#if RANDR_GET_CRTC_INTERFACE
+ /* Disable outputs that are unused or will be re-routed */
+ if (!output->funcs->get_crtc ||
+ output->crtc != (*output->funcs->get_crtc)(output) ||
+ output->crtc == NULL)
+#endif
+ (*output->funcs->dpms)(output, DPMSModeOff);
+ }
+}
+
+static void
+xf86PrepareCrtcs (ScrnInfoPtr scrn)
+{
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+ int c;
+
+ for (c = 0; c < config->num_crtc; c++) {
+#if RANDR_GET_CRTC_INTERFACE
+ xf86CrtcPtr crtc = config->crtc[c];
+ xf86OutputPtr output = NULL;
+ uint32_t desired_outputs = 0, current_outputs = 0;
+ int o;
+
+ for (o = 0; o < config->num_output; o++) {
+ output = config->output[o];
+ if (output->crtc == crtc)
+ desired_outputs |= (1<<o);
+ /* If we can't tell where it's mapped, force it off */
+ if (!output->funcs->get_crtc) {
+ desired_outputs = 0;
+ break;
+ }
+ if ((*output->funcs->get_crtc)(output) == crtc)
+ current_outputs |= (1<<o);
+ }
+
+ /*
+ * If mappings are different or the CRTC is unused,
+ * we need to disable it
+ */
+ if (desired_outputs != current_outputs ||
+ !desired_outputs)
+ (*crtc->funcs->dpms)(crtc, DPMSModeOff);
+#else
+ (*crtc->funcs->dpms)(crtc, DPMSModeOff);
+#endif
+ }
+}
+
+/*
+ * Using the desired mode information in each crtc, set
+ * modes (used in EnterVT functions, or at server startup)
+ */
+
+Bool
+xf86SetDesiredModes (ScrnInfoPtr scrn)
+{
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+ xf86CrtcPtr crtc = config->crtc[0];
+ int c;
+
+ /* A driver with this hook will take care of this */
+ if (!crtc->funcs->set_mode_major) {
+ xf86PrepareOutputs(scrn);
+ xf86PrepareCrtcs(scrn);
+ }
+
+ for (c = 0; c < config->num_crtc; c++)
+ {
+ xf86OutputPtr output = NULL;
+ xf86CrtcSetRec set;
+ int o;
+ RRTransformPtr transform;
+
+ crtc = config->crtc[c];
+
+ /* Skip disabled CRTCs */
+ if (!crtc->enabled)
+ continue;
+
+ if (xf86CompatOutput(scrn) && xf86CompatCrtc(scrn) == crtc)
+ output = xf86CompatOutput(scrn);
+ else
+ {
+ for (o = 0; o < config->num_output; o++)
+ if (config->output[o]->crtc == crtc)
+ {
+ output = config->output[o];
+ break;
+ }
+ }
+ /* paranoia */
+ if (!output)
+ continue;
+
+ /* Mark that we'll need to re-set the mode for sure */
+ memset(&crtc->mode, 0, sizeof(crtc->mode));
+ if (!crtc->desiredMode.CrtcHDisplay)
+ {
+ DisplayModePtr mode = xf86OutputFindClosestMode (output, scrn->currentMode);
+
+ if (!mode)
+ return FALSE;
+ crtc->desiredMode = *mode;
+ crtc->desiredRotation = RR_Rotate_0;
+ crtc->desiredTransformPresent = FALSE;
+ crtc->desiredX = 0;
+ crtc->desiredY = 0;
+ }
+
+ if (crtc->desiredTransformPresent)
+ transform = &crtc->desiredTransform;
+ else
+ transform = NULL;
+ set.mode = &crtc->desiredMode;
+ set.rotation = crtc->desiredRotation;
+ set.transform = transform;
+ set.x = crtc->desiredX;
+ set.y = crtc->desiredY;
+ set.flags = (XF86CrtcSetMode | XF86CrtcSetOutput |
+ XF86CrtcSetOrigin | XF86CrtcSetTransform |
+ XF86CrtcSetRotation);
+ if (!xf86CrtcSet(crtc, &set))
+ return FALSE;
+ }
+
+ xf86DisableUnusedFunctions(scrn);
+ return TRUE;
+}
+
+/**
+ * In the current world order, there are lists of modes per output, which may
+ * or may not include the mode that was asked to be set by XFree86's mode
+ * selection. Find the closest one, in the following preference order:
+ *
+ * - Equality
+ * - Closer in size to the requested mode, but no larger
+ * - Closer in refresh rate to the requested mode.
+ */
+
+DisplayModePtr
+xf86OutputFindClosestMode (xf86OutputPtr output, DisplayModePtr desired)
+{
+ DisplayModePtr best = NULL, scan = NULL;
+
+ for (scan = output->probed_modes; scan != NULL; scan = scan->next)
+ {
+ /* If there's an exact match, we're done. */
+ if (xf86ModesEqual(scan, desired)) {
+ best = desired;
+ break;
+ }
+
+ /* Reject if it's larger than the desired mode. */
+ if (scan->HDisplay > desired->HDisplay ||
+ scan->VDisplay > desired->VDisplay)
+ {
+ continue;
+ }
+
+ /*
+ * If we haven't picked a best mode yet, use the first
+ * one in the size range
+ */
+ if (best == NULL)
+ {
+ best = scan;
+ continue;
+ }
+
+ /* Find if it's closer to the right size than the current best
+ * option.
+ */
+ if ((scan->HDisplay > best->HDisplay &&
+ scan->VDisplay >= best->VDisplay) ||
+ (scan->HDisplay >= best->HDisplay &&
+ scan->VDisplay > best->VDisplay))
+ {
+ best = scan;
+ continue;
+ }
+
+ /* Find if it's still closer to the right refresh than the current
+ * best resolution.
+ */
+ if (scan->HDisplay == best->HDisplay &&
+ scan->VDisplay == best->VDisplay &&
+ (fabs(scan->VRefresh - desired->VRefresh) <
+ fabs(best->VRefresh - desired->VRefresh))) {
+ best = scan;
+ }
+ }
+ return best;
+}
+
+/**
+ * When setting a mode through XFree86-VidModeExtension or XFree86-DGA,
+ * take the specified mode and apply it to the crtc connected to the compat
+ * output. Then, find similar modes for the other outputs, as with the
+ * InitialConfiguration code above. The goal is to clone the desired
+ * mode across all outputs that are currently active.
+ */
+
+Bool
+xf86SetSingleMode (ScrnInfoPtr pScrn, DisplayModePtr desired, Rotation rotation)
+{
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
+ Bool ok = TRUE;
+ xf86OutputPtr compat_output;
+ DisplayModePtr compat_mode = NULL;
+ int c;
+
+ /*
+ * Let the compat output drive the final mode selection
+ */
+ compat_output = xf86CompatOutput(pScrn);
+ if (compat_output)
+ compat_mode = xf86OutputFindClosestMode (compat_output, desired);
+ if (compat_mode)
+ desired = compat_mode;
+
+ for (c = 0; c < config->num_crtc; c++)
+ {
+ xf86CrtcPtr crtc = config->crtc[c];
+ DisplayModePtr crtc_mode = NULL;
+ int o;
+ xf86CrtcSetRec set;
+
+ if (!crtc->enabled)
+ continue;
+
+ for (o = 0; o < config->num_output; o++)
+ {
+ xf86OutputPtr output = config->output[o];
+ DisplayModePtr output_mode;
+
+ /* skip outputs not on this crtc */
+ if (output->crtc != crtc)
+ continue;
+
+ if (crtc_mode)
+ {
+ output_mode = xf86OutputFindClosestMode (output, crtc_mode);
+ if (output_mode != crtc_mode)
+ output->crtc = NULL;
+ }
+ else
+ crtc_mode = xf86OutputFindClosestMode (output, desired);
+ }
+ if (!crtc_mode)
+ {
+ crtc->enabled = FALSE;
+ continue;
+ }
+ set.mode = crtc_mode;
+ set.rotation = rotation;
+ set.transform = NULL;
+ set.x = 0;
+ set.y = 0;
+ set.flags = (XF86CrtcSetMode | XF86CrtcSetOutput |
+ XF86CrtcSetOrigin | XF86CrtcSetTransform |
+ XF86CrtcSetRotation);
+ if (!xf86CrtcSet (crtc, &set))
+ ok = FALSE;
+ else
+ {
+ crtc->desiredMode = *crtc_mode;
+ crtc->desiredRotation = rotation;
+ crtc->desiredTransformPresent = FALSE;
+ crtc->desiredX = 0;
+ crtc->desiredY = 0;
+ }
+ }
+ xf86DisableUnusedFunctions(pScrn);
+#ifdef RANDR_12_INTERFACE
+ xf86RandR12TellChanged (pScrn->pScreen);
+#endif
+ return ok;
+}
+
+
+/**
+ * Set the DPMS power mode of all outputs and CRTCs.
+ *
+ * If the new mode is off, it will turn off outputs and then CRTCs.
+ * Otherwise, it will affect CRTCs before outputs.
+ */
+void
+xf86DPMSSet(ScrnInfoPtr scrn, int mode, int flags)
+{
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+ int i;
+
+ if (!scrn->vtSema)
+ return;
+
+ if (mode == DPMSModeOff) {
+ for (i = 0; i < config->num_output; i++) {
+ xf86OutputPtr output = config->output[i];
+ if (output->crtc != NULL)
+ (*output->funcs->dpms) (output, mode);
+ }
+ }
+
+ for (i = 0; i < config->num_crtc; i++) {
+ xf86CrtcPtr crtc = config->crtc[i];
+ if (crtc->enabled)
+ (*crtc->funcs->dpms) (crtc, mode);
+ }
+
+ if (mode != DPMSModeOff) {
+ for (i = 0; i < config->num_output; i++) {
+ xf86OutputPtr output = config->output[i];
+ if (output->crtc != NULL)
+ (*output->funcs->dpms) (output, mode);
+ }
+ }
+}
+
+/**
+ * Implement the screensaver by just calling down into the driver DPMS hooks.
+ *
+ * Even for monitors with no DPMS support, by the definition of our DPMS hooks,
+ * the outputs will still get disabled (blanked).
+ */
+Bool
+xf86SaveScreen(ScreenPtr pScreen, int mode)
+{
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+
+ if (xf86IsUnblank(mode))
+ xf86DPMSSet(pScrn, DPMSModeOn, 0);
+ else
+ xf86DPMSSet(pScrn, DPMSModeOff, 0);
+
+ return TRUE;
+}
+
+/**
+ * Disable all inactive crtcs and outputs
+ */
+void
+xf86DisableUnusedFunctions(ScrnInfoPtr pScrn)
+{
+ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
+ int o, c;
+
+ for (o = 0; o < xf86_config->num_output; o++)
+ {
+ xf86OutputPtr output = xf86_config->output[o];
+ if (!output->crtc)
+ (*output->funcs->dpms)(output, DPMSModeOff);
+ }
+
+ for (c = 0; c < xf86_config->num_crtc; c++)
+ {
+ xf86CrtcPtr crtc = xf86_config->crtc[c];
+
+ if (!crtc->enabled)
+ {
+ crtc->funcs->dpms(crtc, DPMSModeOff);
+ memset(&crtc->mode, 0, sizeof(crtc->mode));
+ xf86RotateDestroy(crtc);
+ crtc->active = FALSE;
+ }
+ }
+ if (pScrn->pScreen)
+ xf86_crtc_notify(pScrn->pScreen);
+ if (pScrn->ModeSet)
+ pScrn->ModeSet(pScrn);
+}
+
+#ifdef RANDR_12_INTERFACE
+
+#define EDID_ATOM_NAME "EDID"
+
+/**
+ * Set the RandR EDID property
+ */
+static void
+xf86OutputSetEDIDProperty (xf86OutputPtr output, void *data, int data_len)
+{
+ Atom edid_atom = MakeAtom(EDID_ATOM_NAME, sizeof(EDID_ATOM_NAME) - 1, TRUE);
+
+ /* This may get called before the RandR resources have been created */
+ if (output->randr_output == NULL)
+ return;
+
+ if (data_len != 0) {
+ RRChangeOutputProperty(output->randr_output, edid_atom, XA_INTEGER, 8,
+ PropModeReplace, data_len, data, FALSE, TRUE);
+ } else {
+ RRDeleteOutputProperty(output->randr_output, edid_atom);
+ }
+}
+
+#endif
+
+/* Pull out a phyiscal size from a detailed timing if available. */
+struct det_phySize_parameter {
+ xf86OutputPtr output;
+ ddc_quirk_t quirks;
+ Bool ret;
+};
+
+static void handle_detailed_physical_size(struct detailed_monitor_section
+ *det_mon, void *data)
+{
+ struct det_phySize_parameter *p;
+ p = (struct det_phySize_parameter *)data;
+
+ if (p->ret == TRUE )
+ return ;
+
+ xf86DetTimingApplyQuirks(det_mon, p->quirks,
+ p->output->MonInfo->features.hsize,
+ p->output->MonInfo->features.vsize);
+ if (det_mon->type == DT &&
+ det_mon->section.d_timings.h_size != 0 &&
+ det_mon->section.d_timings.v_size != 0) {
+
+ p->output->mm_width = det_mon->section.d_timings.h_size;
+ p->output->mm_height = det_mon->section.d_timings.v_size;
+ p->ret = TRUE;
+ }
+}
+
+/**
+ * Set the EDID information for the specified output
+ */
+void
+xf86OutputSetEDID (xf86OutputPtr output, xf86MonPtr edid_mon)
+{
+ ScrnInfoPtr scrn = output->scrn;
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+ Bool debug_modes = config->debug_modes || xf86Initialising;
+#ifdef RANDR_12_INTERFACE
+ int size;
+#endif
+
+ free(output->MonInfo);
+
+ output->MonInfo = edid_mon;
+ output->mm_width = 0;
+ output->mm_height = 0;
+
+ if (debug_modes) {
+ xf86DrvMsg(scrn->scrnIndex, X_INFO, "EDID for output %s\n",
+ output->name);
+ xf86PrintEDID(edid_mon);
+ }
+
+ /* Set the DDC properties for the 'compat' output */
+ if (output == xf86CompatOutput(scrn))
+ xf86SetDDCproperties(scrn, edid_mon);
+
+#ifdef RANDR_12_INTERFACE
+ /* Set the RandR output properties */
+ size = 0;
+ if (edid_mon)
+ {
+ if (edid_mon->ver.version == 1) {
+ size = 128;
+ if (edid_mon->flags & EDID_COMPLETE_RAWDATA)
+ size += edid_mon->no_sections * 128;
+ } else if (edid_mon->ver.version == 2)
+ size = 256;
+ }
+ xf86OutputSetEDIDProperty (output, edid_mon ? edid_mon->rawData : NULL, size);
+#endif
+
+ if (edid_mon) {
+
+ struct det_phySize_parameter p;
+ p.output = output;
+ p.quirks = xf86DDCDetectQuirks(scrn->scrnIndex,edid_mon, FALSE);
+ p.ret = FALSE;
+ xf86ForEachDetailedBlock(edid_mon,
+ handle_detailed_physical_size, &p);
+
+ /* if no mm size is available from a detailed timing, check the max size field */
+ if ((!output->mm_width || !output->mm_height) &&
+ (edid_mon->features.hsize && edid_mon->features.vsize))
+ {
+ output->mm_width = edid_mon->features.hsize * 10;
+ output->mm_height = edid_mon->features.vsize * 10;
+ }
+ }
+}
+
+/**
+ * Return the list of modes supported by the EDID information
+ * stored in 'output'
+ */
+DisplayModePtr
+xf86OutputGetEDIDModes (xf86OutputPtr output)
+{
+ ScrnInfoPtr scrn = output->scrn;
+ xf86MonPtr edid_mon = output->MonInfo;
+
+ if (!edid_mon)
+ return NULL;
+ return xf86DDCGetModes(scrn->scrnIndex, edid_mon);
+}
+
+/* maybe we should care about DDC1? meh. */
+xf86MonPtr
+xf86OutputGetEDID (xf86OutputPtr output, I2CBusPtr pDDCBus)
+{
+ ScrnInfoPtr scrn = output->scrn;
+ xf86MonPtr mon;
+
+ mon = xf86DoEEDID(scrn->scrnIndex, pDDCBus, TRUE);
+ if (mon)
+ xf86DDCApplyQuirks(scrn->scrnIndex, mon);
+
+ return mon;
+}
+
+static char *_xf86ConnectorNames[] = {
+ "None", "VGA", "DVI-I", "DVI-D",
+ "DVI-A", "Composite", "S-Video",
+ "Component", "LFP", "Proprietary",
+ "HDMI", "DisplayPort",
+ };
+char *
+xf86ConnectorGetName(xf86ConnectorType connector)
+{
+ return _xf86ConnectorNames[connector];
+}
+
+static void
+x86_crtc_box_intersect(BoxPtr dest, BoxPtr a, BoxPtr b)
+{
+ dest->x1 = a->x1 > b->x1 ? a->x1 : b->x1;
+ dest->x2 = a->x2 < b->x2 ? a->x2 : b->x2;
+ dest->y1 = a->y1 > b->y1 ? a->y1 : b->y1;
+ dest->y2 = a->y2 < b->y2 ? a->y2 : b->y2;
+
+ if (dest->x1 >= dest->x2 || dest->y1 >= dest->y2)
+ dest->x1 = dest->x2 = dest->y1 = dest->y2 = 0;
+}
+
+static void
+x86_crtc_box(xf86CrtcPtr crtc, BoxPtr crtc_box)
+{
+ if (crtc->enabled) {
+ crtc_box->x1 = crtc->x;
+ crtc_box->x2 = crtc->x + xf86ModeWidth(&crtc->mode, crtc->rotation);
+ crtc_box->y1 = crtc->y;
+ crtc_box->y2 = crtc->y + xf86ModeHeight(&crtc->mode, crtc->rotation);
+ } else
+ crtc_box->x1 = crtc_box->x2 = crtc_box->y1 = crtc_box->y2 = 0;
+}
+
+static int
+xf86_crtc_box_area(BoxPtr box)
+{
+ return (int) (box->x2 - box->x1) * (int) (box->y2 - box->y1);
+}
+
+/*
+ * Return the crtc covering 'box'. If two crtcs cover a portion of
+ * 'box', then prefer 'desired'. If 'desired' is NULL, then prefer the crtc
+ * with greater coverage
+ */
+
+static xf86CrtcPtr
+xf86_covering_crtc(ScrnInfoPtr pScrn,
+ BoxPtr box,
+ xf86CrtcPtr desired,
+ BoxPtr crtc_box_ret)
+{
+ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
+ xf86CrtcPtr crtc, best_crtc;
+ int coverage, best_coverage;
+ int c;
+ BoxRec crtc_box, cover_box;
+
+ best_crtc = NULL;
+ best_coverage = 0;
+ crtc_box_ret->x1 = 0;
+ crtc_box_ret->x2 = 0;
+ crtc_box_ret->y1 = 0;
+ crtc_box_ret->y2 = 0;
+ for (c = 0; c < xf86_config->num_crtc; c++) {
+ crtc = xf86_config->crtc[c];
+ x86_crtc_box(crtc, &crtc_box);
+ x86_crtc_box_intersect(&cover_box, &crtc_box, box);
+ coverage = xf86_crtc_box_area(&cover_box);
+ if (coverage && crtc == desired) {
+ *crtc_box_ret = crtc_box;
+ return crtc;
+ } else if (coverage > best_coverage) {
+ *crtc_box_ret = crtc_box;
+ best_crtc = crtc;
+ best_coverage = coverage;
+ }
+ }
+ return best_crtc;
+}
+
+/*
+ * For overlay video, compute the relevant CRTC and
+ * clip video to that.
+ *
+ * returning FALSE means there was a memory failure of some kind,
+ * not that the video shouldn't be displayed
+ */
+
+Bool
+xf86_crtc_clip_video_helper(ScrnInfoPtr pScrn,
+ xf86CrtcPtr *crtc_ret,
+ xf86CrtcPtr desired_crtc,
+ BoxPtr dst,
+ INT32 *xa,
+ INT32 *xb,
+ INT32 *ya,
+ INT32 *yb,
+ RegionPtr reg,
+ INT32 width,
+ INT32 height)
+{
+ Bool ret;
+ RegionRec crtc_region_local;
+ RegionPtr crtc_region = reg;
+
+ if (crtc_ret) {
+ BoxRec crtc_box;
+ xf86CrtcPtr crtc = xf86_covering_crtc(pScrn, dst,
+ desired_crtc,
+ &crtc_box);
+
+ if (crtc) {
+ RegionInit(&crtc_region_local, &crtc_box, 1);
+ crtc_region = &crtc_region_local;
+ RegionIntersect(crtc_region, crtc_region, reg);
+ }
+ *crtc_ret = crtc;
+ }
+
+ ret = xf86XVClipVideoHelper(dst, xa, xb, ya, yb,
+ crtc_region, width, height);
+
+ if (crtc_region != reg)
+ RegionUninit(&crtc_region_local);
+
+ return ret;
+}
+
+xf86_crtc_notify_proc_ptr
+xf86_wrap_crtc_notify (ScreenPtr screen, xf86_crtc_notify_proc_ptr new)
+{
+ if (xf86CrtcConfigPrivateIndex != -1)
+ {
+ ScrnInfoPtr scrn = xf86Screens[screen->myNum];
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+ xf86_crtc_notify_proc_ptr old;
+
+ old = config->xf86_crtc_notify;
+ config->xf86_crtc_notify = new;
+ return old;
+ }
+ return NULL;
+}
+
+void
+xf86_unwrap_crtc_notify(ScreenPtr screen, xf86_crtc_notify_proc_ptr old)
+{
+ if (xf86CrtcConfigPrivateIndex != -1)
+ {
+ ScrnInfoPtr scrn = xf86Screens[screen->myNum];
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+
+ config->xf86_crtc_notify = old;
+ }
+}
+
+void
+xf86_crtc_notify(ScreenPtr screen)
+{
+ ScrnInfoPtr scrn = xf86Screens[screen->myNum];
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+
+ if (config->xf86_crtc_notify)
+ config->xf86_crtc_notify(screen);
+}
+
+Bool
+xf86_crtc_supports_gamma(ScrnInfoPtr pScrn)
+{
+ if (xf86CrtcConfigPrivateIndex != -1) {
+ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
+ xf86CrtcPtr crtc;
+
+ /* for multiple drivers loaded we need this */
+ if (!xf86_config)
+ return FALSE;
+ if (xf86_config->num_crtc == 0)
+ return FALSE;
+ crtc = xf86_config->crtc[0];
+
+ return crtc->funcs->gamma_set != NULL;
+ }
+
+ return FALSE;
+}
diff --git a/xorg-server/hw/xwin/winconfig.c b/xorg-server/hw/xwin/winconfig.c
index f654d13da..1325e77a6 100644
--- a/xorg-server/hw/xwin/winconfig.c
+++ b/xorg-server/hw/xwin/winconfig.c
@@ -239,6 +239,7 @@ Bool
winConfigKeyboard (DeviceIntPtr pDevice)
{
char layoutName[KL_NAMELENGTH];
+ unsigned char layoutFriendlyName[256];
static unsigned int layoutNum = 0;
int keyboardType;
#ifdef XWIN_XF86CONFIG
@@ -298,11 +299,32 @@ winConfigKeyboard (DeviceIntPtr pDevice)
if (LoadKeyboardLayout("00000409", KLF_ACTIVATE) != NULL)
winDebug("Loading US keyboard layout.\n");
else
- ErrorF ("LoadKeyboardLaout failed.\n");
+ ErrorF ("LoadKeyboardLayout failed.\n");
}
}
- winDebug ("winConfigKeyboard - Layout: \"%s\" (%08x) \n",
- layoutName, layoutNum);
+
+ /* Discover the friendly name of the current layout */
+ {
+ HKEY regkey = NULL;
+ const char regtempl[] = "SYSTEM\\CurrentControlSet\\Control\\Keyboard Layouts\\";
+ char *regpath;
+ DWORD namesize = sizeof(layoutFriendlyName);
+
+ regpath = malloc(sizeof(regtempl) + KL_NAMELENGTH + 1);
+ strcpy(regpath, regtempl);
+ strcat(regpath, layoutName);
+
+ if (!RegOpenKey(HKEY_LOCAL_MACHINE, regpath, &regkey))
+ RegQueryValueEx(regkey, "Layout Text", 0, NULL, layoutFriendlyName, &namesize);
+
+ /* Close registry key */
+ if (regkey)
+ RegCloseKey (regkey);
+ free(regpath);
+ }
+
+ winDebug ("Windows keyboard layout: \"%s\" (%08x) \"%s\", type %d\n",
+ layoutName, layoutNum, layoutFriendlyName, keyboardType);
for (pLayout = winKBLayouts; pLayout->winlayout != -1; pLayout++)
{
@@ -310,44 +332,35 @@ winConfigKeyboard (DeviceIntPtr pDevice)
continue;
if (pLayout->winkbtype > 0 && pLayout->winkbtype != keyboardType)
continue;
-
+
bfound = TRUE;
- winDebug ("Using preset keyboard for \"%s\" (%x), type \"%d\"\n",
- pLayout->layoutname, pLayout->winlayout, keyboardType);
-
+ winDebug (
+ "Found matching XKB configuration \"%s\"\n",
+ pLayout->layoutname);
+
+ winDebug(
+ "Model = \"%s\" Layout = \"%s\""
+ " Variant = \"%s\" Options = \"%s\"\n",
+ pLayout->xkbmodel ? pLayout->xkbmodel : "none",
+ pLayout->xkblayout ? pLayout->xkblayout : "none",
+ pLayout->xkbvariant ? pLayout->xkbvariant : "none",
+ pLayout->xkboptions ? pLayout->xkboptions : "none");
+
g_winInfo.xkb.model = pLayout->xkbmodel;
g_winInfo.xkb.layout = pLayout->xkblayout;
g_winInfo.xkb.variant = pLayout->xkbvariant;
- g_winInfo.xkb.options = pLayout->xkboptions;
+ g_winInfo.xkb.options = pLayout->xkboptions;
+
+
break;
}
-
+
if (!bfound)
{
- HKEY regkey = NULL;
- const char regtempl[] =
- "SYSTEM\\CurrentControlSet\\Control\\Keyboard Layouts\\";
- char *regpath;
- unsigned char lname[256];
- DWORD namesize = sizeof(lname);
-
- regpath = malloc(sizeof(regtempl) + KL_NAMELENGTH + 1);
- strcpy(regpath, regtempl);
- strcat(regpath, layoutName);
-
- if (!RegOpenKey(HKEY_LOCAL_MACHINE, regpath, &regkey) &&
- !RegQueryValueEx(regkey, "Layout Text", 0, NULL, lname, &namesize))
- {
- ErrorF ("Keyboardlayout \"%s\" (%s) is unknown\n", lname, layoutName);
- }
-
- /* Close registry key */
- if (regkey)
- RegCloseKey (regkey);
- free(regpath);
+ ErrorF ("Keyboardlayout \"%s\" (%s) is unknown, using X server default layout\n", layoutFriendlyName, layoutName);
}
- }
-
+ }
+
/* parse the configuration */
#ifdef XWIN_XF86CONFIG
if (g_cmdline.keyboard)
diff --git a/xorg-server/hw/xwin/winkeybd.c b/xorg-server/hw/xwin/winkeybd.c
index c72fbe275..4711a0d96 100644
--- a/xorg-server/hw/xwin/winkeybd.c
+++ b/xorg-server/hw/xwin/winkeybd.c
@@ -73,6 +73,8 @@ winTranslateKey (WPARAM wParam, LPARAM lParam, int *piScanCode)
int iParam = HIWORD (lParam);
int iParamScanCode = LOBYTE (iParam);
+ winDebug("winTranslateKey: wParam %08x lParam %08x\n", wParam, lParam);
+
/* WM_ key messages faked by Vista speech recognition (WSR) don't have a
* scan code.
*
@@ -115,6 +117,7 @@ winTranslateKey (WPARAM wParam, LPARAM lParam, int *piScanCode)
}
}
+
/* Ring the keyboard bell (system speaker on PCs) */
static void
winKeybdBell (int iPercent, DeviceIntPtr pDeviceInt,
@@ -488,7 +491,7 @@ winSendKeyEvent (DWORD dwKey, Bool fDown)
mieqEnqueue(g_pwinKeyboard, (InternalEvent*)events[i].event);
winDebug("winSendKeyEvent: dwKey: %d, fDown: %d, nEvents %d\n",
- dwKey, fDown, nevents);
+ dwKey, fDown, nevents);
}
BOOL winCheckKeyPressed(WPARAM wParam, LPARAM lParam)
diff --git a/xorg-server/hw/xwin/winkeyhook.c b/xorg-server/hw/xwin/winkeyhook.c
index 7f75a563b..e452fa5f7 100644
--- a/xorg-server/hw/xwin/winkeyhook.c
+++ b/xorg-server/hw/xwin/winkeyhook.c
@@ -88,6 +88,7 @@ winKeyboardMessageHookLL (int iCode, WPARAM wParam, LPARAM lParam)
/* Pass keystrokes on to our main message loop */
if (iCode == HC_ACTION)
{
+ winDebug("winKeyboardMessageHook: vkCode: %08x scanCode: %08x\n", p->vkCode, p->scanCode);
switch (wParam)
{
diff --git a/xorg-server/hw/xwin/winkeynames.h b/xorg-server/hw/xwin/winkeynames.h
index 39574d393..a6738330e 100644
--- a/xorg-server/hw/xwin/winkeynames.h
+++ b/xorg-server/hw/xwin/winkeynames.h
@@ -23,10 +23,6 @@
*
*/
-#define XK_TECHNICAL
-#define XK_KATAKANA
-#include <X11/keysym.h>
-
#define GLYPHS_PER_KEY 4
#define NUM_KEYCODES 248
#define MIN_KEYCODE 8
diff --git a/xorg-server/hw/xwin/winlayouts.h b/xorg-server/hw/xwin/winlayouts.h
index 882e4f71c..c53f0e054 100644
--- a/xorg-server/hw/xwin/winlayouts.h
+++ b/xorg-server/hw/xwin/winlayouts.h
@@ -56,7 +56,7 @@ WinKBLayoutRec winKBLayouts[] =
{ 0x00020409, -1, "pc105", "us_intl", NULL, NULL, "English (USA,International)"},
{ 0x00000809, -1, "pc105", "gb", NULL, NULL, "English (United Kingdom)"},
{ 0x00001009, -1, "pc105", "ca", "fr", NULL, "French (Canada)"},
- { 0x00011009, -1, "pc105", "ca", "multix", NULL, "Candian Multilingual Standard"},
+ { 0x00011009, -1, "pc105", "ca", "multix", NULL, "Canadian Multilingual Standard"},
{ 0x00001809, -1, "pc105", "ie", NULL, NULL, "Irish"},
{ 0x0000040a, -1, "pc105", "es", NULL, NULL, "Spanish (Spain,Traditional Sort)"},
{ 0x0000080a, -1, "pc105", "latam", NULL, NULL, "Latin American"},
@@ -64,7 +64,7 @@ WinKBLayoutRec winKBLayouts[] =
{ 0x0000040c, -1, "pc105", "fr", NULL, NULL, "French (Standard)"},
{ 0x0000080c, -1, "pc105", "be", NULL, NULL, "French (Belgian)"},
{ 0x0001080c, -1, "pc105", "be", NULL, NULL, "Belgian (Comma)"},
- { 0x00000c0c, -1, "pc105", "ca", "fr-legacy", NULL, "French (Canada) (Legacy)"},
+ { 0x00000c0c, -1, "pc105", "ca", "fr-legacy", NULL, "French (Canada, Legacy)"},
{ 0x0000100c, -1, "pc105", "ch", "fr", NULL, "French (Switzerland)"},
{ 0x0000040d, -1, "pc105", "il", NULL, NULL, "Hebrew"},
{ 0x0000040e, -1, "pc105", "hu", NULL, NULL, "Hungarian"},
@@ -82,6 +82,8 @@ WinKBLayoutRec winKBLayouts[] =
{ 0x00000816, -1, "pc105", "pt", NULL, NULL, "Portuguese (Portugal)"},
{ 0x0000041a, -1, "pc105", "hr", NULL, NULL, "Croatian"},
{ 0x0000041d, -1, "pc105", "se", NULL, NULL, "Swedish (Sweden)"},
+ { 0x0000041f, -1, "pc105", "tr", NULL, NULL, "Turkish (Q)"},
+ { 0x0001041f, -1, "pc105", "tr", "f", NULL, "Turkish (F)"},
{ 0x00000424, -1, "pc105", "si", NULL, NULL, "Slovenian"},
{ 0x00000425, -1, "pc105", "ee", NULL, NULL, "Estonian"},
{ 0x00000452, -1, "pc105", "gb", "intl", NULL, "United Kingdom (Extended)"},
@@ -92,5 +94,3 @@ WinKBLayoutRec winKBLayouts[] =
See http://technet.microsoft.com/en-us/library/cc766503%28WS.10%29.aspx
for a listing of input locale (keyboard layout) codes
*/
-
-
diff --git a/xorg-server/include/exevents.h b/xorg-server/include/exevents.h
index 2b859a3bd..6e5804080 100644
--- a/xorg-server/include/exevents.h
+++ b/xorg-server/include/exevents.h
@@ -69,7 +69,7 @@ extern _X_EXPORT int XIChangeDeviceProperty(
int /* format*/,
int /* mode*/,
unsigned long /* len*/,
- pointer /* value*/,
+ const pointer /* value*/,
Bool /* sendevent*/
);
diff --git a/xorg-server/miext/damage/Makefile.am b/xorg-server/miext/damage/Makefile.am
index 595835731..9f858a8e5 100644
--- a/xorg-server/miext/damage/Makefile.am
+++ b/xorg-server/miext/damage/Makefile.am
@@ -1,14 +1,14 @@
-noinst_LTLIBRARIES = libdamage.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-INCLUDES = -I$(srcdir)/../cw -I$(top_srcdir)/hw/xfree86/os-support
-
-if XORG
-sdk_HEADERS = damage.h damagestr.h
-endif
-
-libdamage_la_SOURCES = \
- damage.c \
- damage.h \
- damagestr.h
+noinst_LTLIBRARIES = libdamage.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+INCLUDES = -I$(srcdir)/../cw
+
+if XORG
+sdk_HEADERS = damage.h damagestr.h
+endif
+
+libdamage_la_SOURCES = \
+ damage.c \
+ damage.h \
+ damagestr.h
diff --git a/xorg-server/miext/rootless/Makefile.am b/xorg-server/miext/rootless/Makefile.am
index f09300d5c..72d299bcc 100644
--- a/xorg-server/miext/rootless/Makefile.am
+++ b/xorg-server/miext/rootless/Makefile.am
@@ -1,17 +1,16 @@
-AM_CFLAGS = $(DIX_CFLAGS) $(XSERVER_CFLAGS)
-AM_CPPFLAGS = -I$(top_srcdir)/hw/xfree86/os-support
-
-noinst_LTLIBRARIES = librootless.la
-librootless_la_SOURCES = \
- rootlessCommon.c \
- rootlessGC.c \
- rootlessScreen.c \
- rootlessValTree.c \
- rootlessWindow.c
-
-EXTRA_DIST = \
- README.txt \
- rootless.h \
- rootlessCommon.h \
- rootlessConfig.h \
- rootlessWindow.h
+AM_CFLAGS = $(DIX_CFLAGS) $(XSERVER_CFLAGS)
+
+noinst_LTLIBRARIES = librootless.la
+librootless_la_SOURCES = \
+ rootlessCommon.c \
+ rootlessGC.c \
+ rootlessScreen.c \
+ rootlessValTree.c \
+ rootlessWindow.c
+
+EXTRA_DIST = \
+ README.txt \
+ rootless.h \
+ rootlessCommon.h \
+ rootlessConfig.h \
+ rootlessWindow.h
diff --git a/xorg-server/miext/shadow/Makefile.am b/xorg-server/miext/shadow/Makefile.am
index a73d0ec78..59cee7f59 100644
--- a/xorg-server/miext/shadow/Makefile.am
+++ b/xorg-server/miext/shadow/Makefile.am
@@ -1,34 +1,32 @@
-noinst_LTLIBRARIES = libshadow.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-INCLUDES = -I$(top_srcdir)/hw/xfree86/os-support
-
-if XORG
-sdk_HEADERS = shadow.h
-endif
-
-libshadow_la_SOURCES = \
- shadow.c \
- shadow.h \
- shalloc.c \
- shpacked.c \
- shplanar8.c \
- shplanar.c \
- shrot16pack_180.c \
- shrot16pack_270.c \
- shrot16pack_270YX.c \
- shrot16pack_90.c \
- shrot16pack_90YX.c \
- shrot16pack.c \
- shrot32pack_180.c \
- shrot32pack_270.c \
- shrot32pack_90.c \
- shrot32pack.c \
- shrot8pack_180.c \
- shrot8pack_270.c \
- shrot8pack_90.c \
- shrot8pack.c \
- shrotate.c \
- shrotpack.h \
- shrotpackYX.h
+noinst_LTLIBRARIES = libshadow.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+if XORG
+sdk_HEADERS = shadow.h
+endif
+
+libshadow_la_SOURCES = \
+ shadow.c \
+ shadow.h \
+ shalloc.c \
+ shpacked.c \
+ shplanar8.c \
+ shplanar.c \
+ shrot16pack_180.c \
+ shrot16pack_270.c \
+ shrot16pack_270YX.c \
+ shrot16pack_90.c \
+ shrot16pack_90YX.c \
+ shrot16pack.c \
+ shrot32pack_180.c \
+ shrot32pack_270.c \
+ shrot32pack_90.c \
+ shrot32pack.c \
+ shrot8pack_180.c \
+ shrot8pack_270.c \
+ shrot8pack_90.c \
+ shrot8pack.c \
+ shrotate.c \
+ shrotpack.h \
+ shrotpackYX.h
diff --git a/xorg-server/randr/rrdispatch.c b/xorg-server/randr/rrdispatch.c
index 7540b4d35..b9cbb5858 100644
--- a/xorg-server/randr/rrdispatch.c
+++ b/xorg-server/randr/rrdispatch.c
@@ -35,7 +35,7 @@ RRClientKnowsRates (ClientPtr pClient)
static int
ProcRRQueryVersion (ClientPtr client)
{
- xRRQueryVersionReply rep;
+ xRRQueryVersionReply rep = {0};
register int n;
REQUEST(xRRQueryVersionReq);
rrClientPriv(client);
diff --git a/xorg-server/randr/rrmode.c b/xorg-server/randr/rrmode.c
index 692f61567..ae7939909 100644
--- a/xorg-server/randr/rrmode.c
+++ b/xorg-server/randr/rrmode.c
@@ -288,7 +288,7 @@ int
ProcRRCreateMode (ClientPtr client)
{
REQUEST(xRRCreateModeReq);
- xRRCreateModeReply rep;
+ xRRCreateModeReply rep = {0};
WindowPtr pWin;
ScreenPtr pScreen;
rrScrPrivPtr pScrPriv;
diff --git a/xorg-server/xfixes/cursor.c b/xorg-server/xfixes/cursor.c
index 14bdafbf3..a039d581d 100644
--- a/xorg-server/xfixes/cursor.c
+++ b/xorg-server/xfixes/cursor.c
@@ -1047,7 +1047,7 @@ XFixesCursorInit (void)
ScreenPtr pScreen = screenInfo.screens[i];
CursorScreenPtr cs;
- cs = (CursorScreenPtr) malloc(sizeof (CursorScreenRec));
+ cs = (CursorScreenPtr) calloc(1, sizeof (CursorScreenRec));
if (!cs)
return FALSE;
Wrap (cs, pScreen, CloseScreen, CursorCloseScreen);
diff --git a/xorg-server/xkb/ddxLoad.c b/xorg-server/xkb/ddxLoad.c
index d792dedb1..decad1e33 100644
--- a/xorg-server/xkb/ddxLoad.c
+++ b/xorg-server/xkb/ddxLoad.c
@@ -1,463 +1,507 @@
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <xkb-config.h>
-
-#include <stdio.h>
-#include <ctype.h>
-#include <X11/X.h>
-#include <X11/Xos.h>
-#include <X11/Xproto.h>
-#include <X11/keysym.h>
-#include <X11/extensions/XKM.h>
-#include "inputstr.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#define XKBSRV_NEED_FILE_FUNCS
-#include <xkbsrv.h>
-#include <X11/extensions/XI.h>
-#include "xkb.h"
-
- /*
- * If XKM_OUTPUT_DIR specifies a path without a leading slash, it is
- * relative to the top-level XKB configuration directory.
- * Making the server write to a subdirectory of that directory
- * requires some work in the general case (install procedure
- * has to create links to /var or somesuch on many machines),
- * so we just compile into /usr/tmp for now.
- */
-#ifndef XKM_OUTPUT_DIR
-#define XKM_OUTPUT_DIR "compiled/"
-#endif
-
-#define PRE_ERROR_MSG "\"The XKEYBOARD keymap compiler (xkbcomp) reports:\""
-#define ERROR_PREFIX "\"> \""
-#define POST_ERROR_MSG1 "\"Errors from xkbcomp are not fatal to the X server\""
-#define POST_ERROR_MSG2 "\"End of messages from xkbcomp\""
-
-#if defined(WIN32)
-#define PATHSEPARATOR "\\"
-#else
-#define PATHSEPARATOR "/"
-#endif
-
-#ifdef WIN32
-
-#include <X11/Xwindows.h>
-const char*
-Win32TempDir()
-{
- static char buffer[PATH_MAX];
- if (GetTempPath(sizeof(buffer), buffer))
- {
- int len;
- buffer[sizeof(buffer)-1] = 0;
- len = strlen(buffer);
- if (len > 0)
- if (buffer[len-1] == '\\')
- buffer[len-1] = 0;
- return buffer;
- }
- if (getenv("TEMP") != NULL)
- return getenv("TEMP");
- else if (getenv("TMP") != NULL)
- return getenv("TEMP");
- else
- return "/tmp";
-}
-
-int
-Win32System(const char *cmdline)
-{
- STARTUPINFO si;
- PROCESS_INFORMATION pi;
- DWORD dwExitCode;
- char *cmd = strdup(cmdline);
-
- ZeroMemory( &si, sizeof(si) );
- si.cb = sizeof(si);
- ZeroMemory( &pi, sizeof(pi) );
-
- if (!CreateProcess(NULL, cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
- {
- LPVOID buffer;
- if (!FormatMessage(
- FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- GetLastError(),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPTSTR) &buffer,
- 0,
- NULL ))
- {
- ErrorF("[xkb] Starting '%s' failed!\n", cmdline);
- }
- else
- {
- ErrorF("[xkb] Starting '%s' failed: %s", cmdline, (char *)buffer);
- LocalFree(buffer);
- }
-
- free(cmd);
- return -1;
- }
- /* Wait until child process exits. */
- WaitForSingleObject( pi.hProcess, INFINITE );
-
- GetExitCodeProcess( pi.hProcess, &dwExitCode);
-
- /* Close process and thread handles. */
- CloseHandle( pi.hProcess );
- CloseHandle( pi.hThread );
- free(cmd);
-
- return dwExitCode;
-}
-#undef System
-#define System(x) Win32System(x)
-#endif
-
-static void
-OutputDirectory(
- char* outdir,
- size_t size)
-{
-#ifndef WIN32
- /* Can we write an xkm and then open it too? */
- if (access(XKM_OUTPUT_DIR, W_OK | X_OK) == 0 && (strlen(XKM_OUTPUT_DIR) < size))
- {
- (void) strcpy (outdir, XKM_OUTPUT_DIR);
- } else
-#else
- if (strlen(Win32TempDir()) + 1 < size)
- {
- (void) strcpy(outdir, Win32TempDir());
- (void) strcat(outdir, "\\");
- } else
-#endif
- if (strlen("/tmp/") < size)
- {
- (void) strcpy (outdir, "/tmp/");
- }
-}
-
-static Bool
-XkbDDXCompileKeymapByNames( XkbDescPtr xkb,
- XkbComponentNamesPtr names,
- unsigned want,
- unsigned need,
- char * nameRtrn,
- int nameRtrnLen)
-{
- FILE * out;
- char *buf = NULL, keymap[PATH_MAX], xkm_output_dir[PATH_MAX];
-
- const char *emptystring = "";
- char *xkbbasedirflag = NULL;
- const char *xkbbindir = emptystring;
- const char *xkbbindirsep = emptystring;
-
-#ifdef WIN32
- /* WIN32 has no popen. The input must be stored in a file which is
- used as input for xkbcomp. xkbcomp does not read from stdin. */
- char tmpname[PATH_MAX];
- const char *xkmfile = tmpname;
-#else
- const char *xkmfile = "-";
-#endif
-
- snprintf(keymap, sizeof(keymap), "server-%s", display);
-
- OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir));
-
-#ifdef WIN32
- strcpy(tmpname, Win32TempDir());
- strcat(tmpname, "\\xkb_XXXXXX");
- (void) mktemp(tmpname);
-#endif
-
- if (XkbBaseDirectory != NULL) {
- if (asprintf(&xkbbasedirflag, "\"-R%s\"", XkbBaseDirectory) == -1)
- xkbbasedirflag = NULL;
- }
-
- if (XkbBinDirectory != NULL) {
- int ld = strlen(XkbBinDirectory);
- int lps = strlen(PATHSEPARATOR);
-
- xkbbindir = XkbBinDirectory;
-
- if ((ld >= lps) &&
- (strcmp(xkbbindir + ld - lps, PATHSEPARATOR) != 0)) {
- xkbbindirsep = PATHSEPARATOR;
- }
- }
-
- if (asprintf(&buf,
- "\"%s%sxkbcomp\" -w %d %s -xkm \"%s\" "
- "-em1 %s -emp %s -eml %s \"%s%s.xkm\"",
- xkbbindir, xkbbindirsep,
- ((xkbDebugFlags < 2) ? 1 :
- ((xkbDebugFlags > 10) ? 10 : (int) xkbDebugFlags)),
- xkbbasedirflag ? xkbbasedirflag : "", xkmfile,
- PRE_ERROR_MSG, ERROR_PREFIX, POST_ERROR_MSG1,
- xkm_output_dir, keymap) == -1)
- buf = NULL;
-
- free(xkbbasedirflag);
-
- if (!buf) {
- LogMessage(X_ERROR, "XKB: Could not invoke xkbcomp: not enough memory\n");
- return FALSE;
- }
-
-#ifndef WIN32
- out= Popen(buf,"w");
-#else
- out= fopen(tmpname, "w");
-#endif
-
- if (out!=NULL) {
-#ifdef DEBUG
- if (xkbDebugFlags) {
- ErrorF("[xkb] XkbDDXCompileKeymapByNames compiling keymap:\n");
- XkbWriteXKBKeymapForNames(stderr,names,xkb,want,need);
- }
-#endif
- XkbWriteXKBKeymapForNames(out,names,xkb,want,need);
-#ifndef WIN32
- if (Pclose(out)==0)
-#else
- if (fclose(out)==0 && System(buf) >= 0)
-#endif
- {
- if (xkbDebugFlags)
- DebugF("[xkb] xkb executes: %s\n",buf);
- if (nameRtrn) {
- strncpy(nameRtrn,keymap,nameRtrnLen);
- nameRtrn[nameRtrnLen-1]= '\0';
- }
- free(buf);
-#ifdef WIN32
- /* remove the temporary file */
- unlink(tmpname);
-#endif
- return TRUE;
- }
- else
- LogMessage(X_ERROR, "Error compiling keymap (%s)\n", keymap);
-#ifdef WIN32
- /* remove the temporary file */
- unlink(tmpname);
-#endif
- }
- else {
-#ifndef WIN32
- LogMessage(X_ERROR, "XKB: Could not invoke xkbcomp\n");
-#else
- LogMessage(X_ERROR, "Could not open file %s\n", tmpname);
-#endif
- }
- if (nameRtrn)
- nameRtrn[0]= '\0';
- free(buf);
- return FALSE;
-}
-
-static FILE *
-XkbDDXOpenConfigFile(char *mapName,char *fileNameRtrn,int fileNameRtrnLen)
-{
-char buf[PATH_MAX],xkm_output_dir[PATH_MAX];
-FILE * file;
-
- buf[0]= '\0';
- if (mapName!=NULL) {
- OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir));
- if ((XkbBaseDirectory!=NULL)&&(xkm_output_dir[0]!='/')
-#ifdef WIN32
- &&(!isalpha(xkm_output_dir[0]) || xkm_output_dir[1]!=':')
-#endif
- ) {
- if (strlen(XkbBaseDirectory)+strlen(xkm_output_dir)
- +strlen(mapName)+6 <= PATH_MAX)
- {
- sprintf(buf,"%s/%s%s.xkm",XkbBaseDirectory,
- xkm_output_dir,mapName);
- }
- }
- else if (strlen(xkm_output_dir)+strlen(mapName)+5 <= PATH_MAX)
- sprintf(buf,"%s%s.xkm",xkm_output_dir,mapName);
- if (buf[0] != '\0')
- file= fopen(buf,"rb");
- else file= NULL;
- }
- else file= NULL;
- if ((fileNameRtrn!=NULL)&&(fileNameRtrnLen>0)) {
- strncpy(fileNameRtrn,buf,fileNameRtrnLen);
- buf[fileNameRtrnLen-1]= '\0';
- }
- return file;
-}
-
-unsigned
-XkbDDXLoadKeymapByNames( DeviceIntPtr keybd,
- XkbComponentNamesPtr names,
- unsigned want,
- unsigned need,
- XkbDescPtr * xkbRtrn,
- char * nameRtrn,
- int nameRtrnLen)
-{
-XkbDescPtr xkb;
-FILE * file;
-char fileName[PATH_MAX];
-unsigned missing;
-
- *xkbRtrn = NULL;
- if ((keybd==NULL)||(keybd->key==NULL)||(keybd->key->xkbInfo==NULL))
- xkb= NULL;
- else xkb= keybd->key->xkbInfo->desc;
- if ((names->keycodes==NULL)&&(names->types==NULL)&&
- (names->compat==NULL)&&(names->symbols==NULL)&&
- (names->geometry==NULL)) {
- LogMessage(X_ERROR, "XKB: No components provided for device %s\n",
- keybd->name ? keybd->name : "(unnamed keyboard)");
- return 0;
- }
- else if (!XkbDDXCompileKeymapByNames(xkb,names,want,need,
- nameRtrn,nameRtrnLen)){
- LogMessage(X_ERROR, "XKB: Couldn't compile keymap\n");
- return 0;
- }
- file= XkbDDXOpenConfigFile(nameRtrn,fileName,PATH_MAX);
- if (file==NULL) {
- LogMessage(X_ERROR, "Couldn't open compiled keymap file %s\n",fileName);
- return 0;
- }
- missing= XkmReadFile(file,need,want,xkbRtrn);
- if (*xkbRtrn==NULL) {
- LogMessage(X_ERROR, "Error loading keymap %s\n",fileName);
- fclose(file);
- (void) unlink (fileName);
- return 0;
- }
- else {
- DebugF("Loaded XKB keymap %s, defined=0x%x\n",fileName,(*xkbRtrn)->defined);
- }
- fclose(file);
- (void) unlink (fileName);
- return (need|want)&(~missing);
-}
-
-Bool
-XkbDDXNamesFromRules( DeviceIntPtr keybd,
- char * rules_name,
- XkbRF_VarDefsPtr defs,
- XkbComponentNamesPtr names)
-{
-char buf[PATH_MAX];
-FILE * file;
-Bool complete;
-XkbRF_RulesPtr rules;
-
- if (!rules_name)
- return FALSE;
-
- if (strlen(XkbBaseDirectory) + strlen(rules_name) + 8 > PATH_MAX) {
- LogMessage(X_ERROR, "XKB: Rules name is too long\n");
- return FALSE;
- }
- sprintf(buf,"%s/rules/%s", XkbBaseDirectory, rules_name);
-
- file = fopen(buf, "r");
- if (!file) {
- LogMessage(X_ERROR, "XKB: Couldn't open rules file %s\n", buf);
- return FALSE;
- }
-
- rules = XkbRF_Create();
- if (!rules) {
- LogMessage(X_ERROR, "XKB: Couldn't create rules struct\n");
- fclose(file);
- return FALSE;
- }
-
- if (!XkbRF_LoadRules(file, rules)) {
- LogMessage(X_ERROR, "XKB: Couldn't parse rules file %s\n", rules_name);
- fclose(file);
- XkbRF_Free(rules,TRUE);
- return FALSE;
- }
-
- memset(names, 0, sizeof(*names));
- complete = XkbRF_GetComponents(rules,defs,names);
- fclose(file);
- XkbRF_Free(rules, TRUE);
-
- if (!complete)
- LogMessage(X_ERROR, "XKB: Rules returned no components\n");
-
- return complete;
-}
-
-XkbDescPtr
-XkbCompileKeymap(DeviceIntPtr dev, XkbRMLVOSet *rmlvo)
-{
- XkbComponentNamesRec kccgst;
- XkbRF_VarDefsRec mlvo;
- XkbDescPtr xkb;
- char name[PATH_MAX];
-
- if (!dev || !rmlvo) {
- LogMessage(X_ERROR, "XKB: No device or RMLVO specified\n");
- return NULL;
- }
-
- mlvo.model = rmlvo->model;
- mlvo.layout = rmlvo->layout;
- mlvo.variant = rmlvo->variant;
- mlvo.options = rmlvo->options;
-
- /* XDNFR already logs for us. */
- if (!XkbDDXNamesFromRules(dev, rmlvo->rules, &mlvo, &kccgst))
- return NULL;
-
- /* XDLKBN too, but it might return 0 as well as allocating. */
- if (!XkbDDXLoadKeymapByNames(dev, &kccgst, XkmAllIndicesMask, 0, &xkb, name,
- PATH_MAX)) {
- if (xkb)
- XkbFreeKeyboard(xkb, 0, TRUE);
- return NULL;
- }
-
- return xkb;
-}
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <xkb-config.h>
+
+#include <stdio.h>
+#include <ctype.h>
+#include <X11/X.h>
+#include <X11/Xos.h>
+#include <X11/Xproto.h>
+#include <X11/keysym.h>
+#include <X11/extensions/XKM.h>
+#include "inputstr.h"
+#include "scrnintstr.h"
+#include "windowstr.h"
+#define XKBSRV_NEED_FILE_FUNCS
+#include <xkbsrv.h>
+#include <X11/extensions/XI.h>
+#include "xkb.h"
+
+ /*
+ * If XKM_OUTPUT_DIR specifies a path without a leading slash, it is
+ * relative to the top-level XKB configuration directory.
+ * Making the server write to a subdirectory of that directory
+ * requires some work in the general case (install procedure
+ * has to create links to /var or somesuch on many machines),
+ * so we just compile into /usr/tmp for now.
+ */
+#ifndef XKM_OUTPUT_DIR
+#define XKM_OUTPUT_DIR "compiled/"
+#endif
+
+#define PRE_ERROR_MSG "\"The XKEYBOARD keymap compiler (xkbcomp) reports:\""
+#define ERROR_PREFIX "\"> \""
+#define POST_ERROR_MSG1 "\"Errors from xkbcomp are not fatal to the X server\""
+#define POST_ERROR_MSG2 "\"End of messages from xkbcomp\""
+
+#if defined(WIN32)
+#define PATHSEPARATOR "\\"
+#else
+#define PATHSEPARATOR "/"
+#endif
+
+#ifdef WIN32
+
+#include <X11/Xwindows.h>
+const char*
+Win32TempDir()
+{
+ static char buffer[PATH_MAX];
+ if (GetTempPath(sizeof(buffer), buffer))
+ {
+ int len;
+ buffer[sizeof(buffer)-1] = 0;
+ len = strlen(buffer);
+ if (len > 0)
+ if (buffer[len-1] == '\\')
+ buffer[len-1] = 0;
+ return buffer;
+ }
+ if (getenv("TEMP") != NULL)
+ return getenv("TEMP");
+ else if (getenv("TMP") != NULL)
+ return getenv("TEMP");
+ else
+ return "/tmp";
+}
+
+int
+Win32System(const char *cmdline)
+{
+ STARTUPINFO si;
+ PROCESS_INFORMATION pi;
+ DWORD dwExitCode;
+ char *cmd = strdup(cmdline);
+
+ ZeroMemory( &si, sizeof(si) );
+ si.cb = sizeof(si);
+ ZeroMemory( &pi, sizeof(pi) );
+
+ if (!CreateProcess(NULL, cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
+ {
+ LPVOID buffer;
+ if (!FormatMessage(
+ FORMAT_MESSAGE_ALLOCATE_BUFFER |
+ FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL,
+ GetLastError(),
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ (LPTSTR) &buffer,
+ 0,
+ NULL ))
+ {
+ ErrorF("[xkb] Starting '%s' failed!\n", cmdline);
+ }
+ else
+ {
+ ErrorF("[xkb] Starting '%s' failed: %s", cmdline, (char *)buffer);
+ LocalFree(buffer);
+ }
+
+ free(cmd);
+ return -1;
+ }
+ /* Wait until child process exits. */
+ WaitForSingleObject( pi.hProcess, INFINITE );
+
+ GetExitCodeProcess( pi.hProcess, &dwExitCode);
+
+ /* Close process and thread handles. */
+ CloseHandle( pi.hProcess );
+ CloseHandle( pi.hThread );
+ free(cmd);
+
+ return dwExitCode;
+}
+#undef System
+#define System(x) Win32System(x)
+#endif
+
+static void
+OutputDirectory(
+ char* outdir,
+ size_t size)
+{
+#ifndef WIN32
+ /* Can we write an xkm and then open it too? */
+ if (access(XKM_OUTPUT_DIR, W_OK | X_OK) == 0 && (strlen(XKM_OUTPUT_DIR) < size))
+ {
+ (void) strcpy (outdir, XKM_OUTPUT_DIR);
+ } else
+#else
+ if (strlen(Win32TempDir()) + 1 < size)
+ {
+ (void) strcpy(outdir, Win32TempDir());
+ (void) strcat(outdir, "\\");
+ } else
+#endif
+ if (strlen("/tmp/") < size)
+ {
+ (void) strcpy (outdir, "/tmp/");
+ }
+}
+
+static Bool
+XkbDDXCompileKeymapByNames( XkbDescPtr xkb,
+ XkbComponentNamesPtr names,
+ unsigned want,
+ unsigned need,
+ char * nameRtrn,
+ int nameRtrnLen)
+{
+ FILE * out;
+ char *buf = NULL, keymap[PATH_MAX], xkm_output_dir[PATH_MAX];
+
+ const char *emptystring = "";
+ char *xkbbasedirflag = NULL;
+ const char *xkbbindir = emptystring;
+ const char *xkbbindirsep = emptystring;
+
+#ifdef WIN32
+ /* WIN32 has no popen. The input must be stored in a file which is
+ used as input for xkbcomp. xkbcomp does not read from stdin. */
+ char tmpname[PATH_MAX];
+ const char *xkmfile = tmpname;
+#else
+ const char *xkmfile = "-";
+#endif
+
+ snprintf(keymap, sizeof(keymap), "server-%s", display);
+
+ OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir));
+
+#ifdef WIN32
+ strcpy(tmpname, Win32TempDir());
+ strcat(tmpname, "\\xkb_XXXXXX");
+ (void) mktemp(tmpname);
+#endif
+
+ if (XkbBaseDirectory != NULL) {
+ if (asprintf(&xkbbasedirflag, "\"-R%s\"", XkbBaseDirectory) == -1)
+ xkbbasedirflag = NULL;
+ }
+
+ if (XkbBinDirectory != NULL) {
+ int ld = strlen(XkbBinDirectory);
+ int lps = strlen(PATHSEPARATOR);
+
+ xkbbindir = XkbBinDirectory;
+
+ if ((ld >= lps) &&
+ (strcmp(xkbbindir + ld - lps, PATHSEPARATOR) != 0)) {
+ xkbbindirsep = PATHSEPARATOR;
+ }
+ }
+
+ if (asprintf(&buf,
+ "\"%s%sxkbcomp\" -w %d %s -xkm \"%s\" "
+ "-em1 %s -emp %s -eml %s \"%s%s.xkm\"",
+ xkbbindir, xkbbindirsep,
+ ((xkbDebugFlags < 2) ? 1 :
+ ((xkbDebugFlags > 10) ? 10 : (int) xkbDebugFlags)),
+ xkbbasedirflag ? xkbbasedirflag : "", xkmfile,
+ PRE_ERROR_MSG, ERROR_PREFIX, POST_ERROR_MSG1,
+ xkm_output_dir, keymap) == -1)
+ buf = NULL;
+
+ free(xkbbasedirflag);
+
+ if (!buf) {
+ LogMessage(X_ERROR, "XKB: Could not invoke xkbcomp: not enough memory\n");
+ return FALSE;
+ }
+
+#ifndef WIN32
+ out= Popen(buf,"w");
+#else
+ out= fopen(tmpname, "w");
+#endif
+
+ if (out!=NULL) {
+#ifdef DEBUG
+ if (xkbDebugFlags) {
+ ErrorF("[xkb] XkbDDXCompileKeymapByNames compiling keymap:\n");
+ XkbWriteXKBKeymapForNames(stderr,names,xkb,want,need);
+ }
+#endif
+ XkbWriteXKBKeymapForNames(out,names,xkb,want,need);
+#ifndef WIN32
+ if (Pclose(out)==0)
+#else
+ if (fclose(out)==0 && System(buf) >= 0)
+#endif
+ {
+ if (xkbDebugFlags)
+ DebugF("[xkb] xkb executes: %s\n",buf);
+ if (nameRtrn) {
+ strncpy(nameRtrn,keymap,nameRtrnLen);
+ nameRtrn[nameRtrnLen-1]= '\0';
+ }
+ free(buf);
+#ifdef WIN32
+ /* remove the temporary file */
+ unlink(tmpname);
+#endif
+ return TRUE;
+ }
+ else
+ LogMessage(X_ERROR, "Error compiling keymap (%s)\n", keymap);
+#ifdef WIN32
+ /* remove the temporary file */
+ unlink(tmpname);
+#endif
+ }
+ else {
+#ifndef WIN32
+ LogMessage(X_ERROR, "XKB: Could not invoke xkbcomp\n");
+#else
+ LogMessage(X_ERROR, "Could not open file %s\n", tmpname);
+#endif
+ }
+ if (nameRtrn)
+ nameRtrn[0]= '\0';
+ free(buf);
+ return FALSE;
+}
+
+static FILE *
+XkbDDXOpenConfigFile(char *mapName,char *fileNameRtrn,int fileNameRtrnLen)
+{
+char buf[PATH_MAX],xkm_output_dir[PATH_MAX];
+FILE * file;
+
+ buf[0]= '\0';
+ if (mapName!=NULL) {
+ OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir));
+ if ((XkbBaseDirectory!=NULL)&&(xkm_output_dir[0]!='/')
+#ifdef WIN32
+ &&(!isalpha(xkm_output_dir[0]) || xkm_output_dir[1]!=':')
+#endif
+ ) {
+ if (strlen(XkbBaseDirectory)+strlen(xkm_output_dir)
+ +strlen(mapName)+6 <= PATH_MAX)
+ {
+ sprintf(buf,"%s/%s%s.xkm",XkbBaseDirectory,
+ xkm_output_dir,mapName);
+ }
+ }
+ else if (strlen(xkm_output_dir)+strlen(mapName)+5 <= PATH_MAX)
+ sprintf(buf,"%s%s.xkm",xkm_output_dir,mapName);
+ if (buf[0] != '\0')
+ file= fopen(buf,"rb");
+ else file= NULL;
+ }
+ else file= NULL;
+ if ((fileNameRtrn!=NULL)&&(fileNameRtrnLen>0)) {
+ strncpy(fileNameRtrn,buf,fileNameRtrnLen);
+ buf[fileNameRtrnLen-1]= '\0';
+ }
+ return file;
+}
+
+unsigned
+XkbDDXLoadKeymapByNames( DeviceIntPtr keybd,
+ XkbComponentNamesPtr names,
+ unsigned want,
+ unsigned need,
+ XkbDescPtr * xkbRtrn,
+ char * nameRtrn,
+ int nameRtrnLen)
+{
+XkbDescPtr xkb;
+FILE * file;
+char fileName[PATH_MAX];
+unsigned missing;
+
+ *xkbRtrn = NULL;
+ if ((keybd==NULL)||(keybd->key==NULL)||(keybd->key->xkbInfo==NULL))
+ xkb= NULL;
+ else xkb= keybd->key->xkbInfo->desc;
+ if ((names->keycodes==NULL)&&(names->types==NULL)&&
+ (names->compat==NULL)&&(names->symbols==NULL)&&
+ (names->geometry==NULL)) {
+ LogMessage(X_ERROR, "XKB: No components provided for device %s\n",
+ keybd->name ? keybd->name : "(unnamed keyboard)");
+ return 0;
+ }
+ else if (!XkbDDXCompileKeymapByNames(xkb,names,want,need,
+ nameRtrn,nameRtrnLen)){
+ LogMessage(X_ERROR, "XKB: Couldn't compile keymap\n");
+ return 0;
+ }
+ file= XkbDDXOpenConfigFile(nameRtrn,fileName,PATH_MAX);
+ if (file==NULL) {
+ LogMessage(X_ERROR, "Couldn't open compiled keymap file %s\n",fileName);
+ return 0;
+ }
+ missing= XkmReadFile(file,need,want,xkbRtrn);
+ if (*xkbRtrn==NULL) {
+ LogMessage(X_ERROR, "Error loading keymap %s\n",fileName);
+ fclose(file);
+ (void) unlink (fileName);
+ return 0;
+ }
+ else {
+ DebugF("Loaded XKB keymap %s, defined=0x%x\n",fileName,(*xkbRtrn)->defined);
+ }
+ fclose(file);
+ (void) unlink (fileName);
+ return (need|want)&(~missing);
+}
+
+Bool
+XkbDDXNamesFromRules( DeviceIntPtr keybd,
+ char * rules_name,
+ XkbRF_VarDefsPtr defs,
+ XkbComponentNamesPtr names)
+{
+char buf[PATH_MAX];
+FILE * file;
+Bool complete;
+XkbRF_RulesPtr rules;
+
+ if (!rules_name)
+ return FALSE;
+
+ if (strlen(XkbBaseDirectory) + strlen(rules_name) + 8 > PATH_MAX) {
+ LogMessage(X_ERROR, "XKB: Rules name is too long\n");
+ return FALSE;
+ }
+ sprintf(buf,"%s/rules/%s", XkbBaseDirectory, rules_name);
+
+ file = fopen(buf, "r");
+ if (!file) {
+ LogMessage(X_ERROR, "XKB: Couldn't open rules file %s\n", buf);
+ return FALSE;
+ }
+
+ rules = XkbRF_Create();
+ if (!rules) {
+ LogMessage(X_ERROR, "XKB: Couldn't create rules struct\n");
+ fclose(file);
+ return FALSE;
+ }
+
+ if (!XkbRF_LoadRules(file, rules)) {
+ LogMessage(X_ERROR, "XKB: Couldn't parse rules file %s\n", rules_name);
+ fclose(file);
+ XkbRF_Free(rules,TRUE);
+ return FALSE;
+ }
+
+ memset(names, 0, sizeof(*names));
+ complete = XkbRF_GetComponents(rules,defs,names);
+ fclose(file);
+ XkbRF_Free(rules, TRUE);
+
+ if (!complete)
+ LogMessage(X_ERROR, "XKB: Rules returned no components\n");
+
+ return complete;
+}
+
+static Bool
+XkbRMLVOtoKcCGST(DeviceIntPtr dev, XkbRMLVOSet *rmlvo, XkbComponentNamesPtr kccgst)
+{
+ XkbRF_VarDefsRec mlvo;
+
+ mlvo.model = rmlvo->model;
+ mlvo.layout = rmlvo->layout;
+ mlvo.variant = rmlvo->variant;
+ mlvo.options = rmlvo->options;
+
+ return XkbDDXNamesFromRules(dev, rmlvo->rules, &mlvo, kccgst);
+}
+
+/**
+ * Compile the given RMLVO keymap and return it. Returns the XkbDescPtr on
+ * success or NULL on failure. If the components compiled are not a superset
+ * or equal to need, the compiliation is treated as failure.
+ */
+static XkbDescPtr
+XkbCompileKeymapForDevice(DeviceIntPtr dev, XkbRMLVOSet *rmlvo, int need)
+{
+ XkbDescPtr xkb;
+ unsigned int provided;
+ XkbComponentNamesRec kccgst;
+ char name[PATH_MAX];
+
+ if (!XkbRMLVOtoKcCGST(dev, rmlvo, &kccgst))
+ return NULL;
+
+ provided = XkbDDXLoadKeymapByNames(dev, &kccgst, XkmAllIndicesMask, need,
+ &xkb, name, PATH_MAX);
+ if ((need & provided) != need) {
+ if (xkb) {
+ XkbFreeKeyboard(xkb, 0, TRUE);
+ xkb = NULL;
+ }
+ }
+
+ return xkb;
+}
+
+XkbDescPtr
+XkbCompileKeymap(DeviceIntPtr dev, XkbRMLVOSet *rmlvo)
+{
+ XkbDescPtr xkb;
+ unsigned int need;
+
+ if (!dev || !rmlvo) {
+ LogMessage(X_ERROR, "XKB: No device or RMLVO specified\n");
+ return NULL;
+ }
+
+ /* These are the components we really really need */
+ need = XkmSymbolsMask | XkmCompatMapMask | XkmTypesMask |
+ XkmKeyNamesMask | XkmVirtualModsMask;
+
+
+ xkb = XkbCompileKeymapForDevice(dev, rmlvo, need);
+
+ if (!xkb) {
+ XkbRMLVOSet dflts;
+
+ /* we didn't get what we really needed. And that will likely leave
+ * us with a keyboard that doesn't work. Use the defaults instead */
+ LogMessage(X_ERROR, "XKB: Failed to load keymap. Loading default "
+ "keymap instead.\n");
+
+ XkbGetRulesDflts(&dflts);
+
+ xkb = XkbCompileKeymapForDevice(dev, &dflts, 0);
+
+ XkbFreeRMLVOSet(&dflts, FALSE);
+ }
+
+ return xkb;
+}
diff --git a/xorg-server/xkb/xkb.c b/xorg-server/xkb/xkb.c
index d12805691..3ce7e690c 100644
--- a/xorg-server/xkb/xkb.c
+++ b/xorg-server/xkb/xkb.c
@@ -1,6742 +1,6742 @@
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "inputstr.h"
-#define XKBSRV_NEED_FILE_FUNCS
-#include <xkbsrv.h>
-#include "extnsionst.h"
-#include "xace.h"
-#include "xkb.h"
-#include "protocol-versions.h"
-
-#include <X11/extensions/XI.h>
-#include <X11/extensions/XKMformat.h>
-
-int XkbEventBase;
-static int XkbErrorBase;
-int XkbReqCode;
-int XkbKeyboardErrorCode;
-CARD32 xkbDebugFlags = 0;
-static CARD32 xkbDebugCtrls = 0;
-
-static RESTYPE RT_XKBCLIENT;
-
-/***====================================================================***/
-
-#define CHK_DEVICE(dev, id, client, access_mode, lf) {\
- int why;\
- int rc = lf(&(dev), id, client, access_mode, &why);\
- if (rc != Success) {\
- client->errorValue = _XkbErrCode2(why, id);\
- return rc;\
- }\
-}
-
-#define CHK_KBD_DEVICE(dev, id, client, mode) \
- CHK_DEVICE(dev, id, client, mode, _XkbLookupKeyboard)
-#define CHK_LED_DEVICE(dev, id, client, mode) \
- CHK_DEVICE(dev, id, client, mode, _XkbLookupLedDevice)
-#define CHK_BELL_DEVICE(dev, id, client, mode) \
- CHK_DEVICE(dev, id, client, mode, _XkbLookupBellDevice)
-#define CHK_ANY_DEVICE(dev, id, client, mode) \
- CHK_DEVICE(dev, id, client, mode, _XkbLookupAnyDevice)
-
-#define CHK_ATOM_ONLY2(a,ev,er) {\
- if (((a)==None)||(!ValidAtom((a)))) {\
- (ev)= (XID)(a);\
- return er;\
- }\
-}
-#define CHK_ATOM_ONLY(a) \
- CHK_ATOM_ONLY2(a,client->errorValue,BadAtom)
-
-#define CHK_ATOM_OR_NONE3(a,ev,er,ret) {\
- if (((a)!=None)&&(!ValidAtom((a)))) {\
- (ev)= (XID)(a);\
- (er)= BadAtom;\
- return ret;\
- }\
-}
-#define CHK_ATOM_OR_NONE2(a,ev,er) {\
- if (((a)!=None)&&(!ValidAtom((a)))) {\
- (ev)= (XID)(a);\
- return er;\
- }\
-}
-#define CHK_ATOM_OR_NONE(a) \
- CHK_ATOM_OR_NONE2(a,client->errorValue,BadAtom)
-
-#define CHK_MASK_LEGAL3(err,mask,legal,ev,er,ret) {\
- if ((mask)&(~(legal))) { \
- (ev)= _XkbErrCode2((err),((mask)&(~(legal))));\
- (er)= BadValue;\
- return ret;\
- }\
-}
-#define CHK_MASK_LEGAL2(err,mask,legal,ev,er) {\
- if ((mask)&(~(legal))) { \
- (ev)= _XkbErrCode2((err),((mask)&(~(legal))));\
- return er;\
- }\
-}
-#define CHK_MASK_LEGAL(err,mask,legal) \
- CHK_MASK_LEGAL2(err,mask,legal,client->errorValue,BadValue)
-
-#define CHK_MASK_MATCH(err,affect,value) {\
- if ((value)&(~(affect))) { \
- client->errorValue= _XkbErrCode2((err),((value)&(~(affect))));\
- return BadMatch;\
- }\
-}
-#define CHK_MASK_OVERLAP(err,m1,m2) {\
- if ((m1)&(m2)) { \
- client->errorValue= _XkbErrCode2((err),((m1)&(m2)));\
- return BadMatch;\
- }\
-}
-#define CHK_KEY_RANGE2(err,first,num,x,ev,er) {\
- if (((unsigned)(first)+(num)-1)>(x)->max_key_code) {\
- (ev)=_XkbErrCode4(err,(first),(num),(x)->max_key_code);\
- return er;\
- }\
- else if ( (first)<(x)->min_key_code ) {\
- (ev)=_XkbErrCode3(err+1,(first),xkb->min_key_code);\
- return er;\
- }\
-}
-#define CHK_KEY_RANGE(err,first,num,x) \
- CHK_KEY_RANGE2(err,first,num,x,client->errorValue,BadValue)
-
-#define CHK_REQ_KEY_RANGE2(err,first,num,r,ev,er) {\
- if (((unsigned)(first)+(num)-1)>(r)->maxKeyCode) {\
- (ev)=_XkbErrCode4(err,(first),(num),(r)->maxKeyCode);\
- return er;\
- }\
- else if ( (first)<(r)->minKeyCode ) {\
- (ev)=_XkbErrCode3(err+1,(first),(r)->minKeyCode);\
- return er;\
- }\
-}
-#define CHK_REQ_KEY_RANGE(err,first,num,r) \
- CHK_REQ_KEY_RANGE2(err,first,num,r,client->errorValue,BadValue)
-
-/***====================================================================***/
-
-int
-ProcXkbUseExtension(ClientPtr client)
-{
- REQUEST(xkbUseExtensionReq);
- xkbUseExtensionReply rep;
- register int n;
- int supported;
-
- REQUEST_SIZE_MATCH(xkbUseExtensionReq);
- if (stuff->wantedMajor != SERVER_XKB_MAJOR_VERSION) {
- /* pre-release version 0.65 is compatible with 1.00 */
- supported= ((SERVER_XKB_MAJOR_VERSION==1)&&
- (stuff->wantedMajor==0)&&(stuff->wantedMinor==65));
- }
- else supported = 1;
-
- if ((supported) && (!(client->xkbClientFlags&_XkbClientInitialized))) {
- client->xkbClientFlags= _XkbClientInitialized;
- client->vMajor= stuff->wantedMajor;
- client->vMinor= stuff->wantedMinor;
- }
- else if (xkbDebugFlags&0x1) {
- ErrorF("[xkb] Rejecting client %d (0x%lx) (wants %d.%02d, have %d.%02d)\n",
- client->index,
- (long)client->clientAsMask,
- stuff->wantedMajor,stuff->wantedMinor,
- SERVER_XKB_MAJOR_VERSION,SERVER_XKB_MINOR_VERSION);
- }
- memset(&rep, 0, sizeof(xkbUseExtensionReply));
- rep.type = X_Reply;
- rep.supported = supported;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- rep.serverMajor = SERVER_XKB_MAJOR_VERSION;
- rep.serverMinor = SERVER_XKB_MINOR_VERSION;
- if ( client->swapped ) {
- swaps(&rep.sequenceNumber, n);
- swaps(&rep.serverMajor, n);
- swaps(&rep.serverMinor, n);
- }
- WriteToClient(client,SIZEOF(xkbUseExtensionReply), (char *)&rep);
- return Success;
-}
-
-/***====================================================================***/
-
-int
-ProcXkbSelectEvents(ClientPtr client)
-{
- unsigned legal;
- DeviceIntPtr dev;
- XkbInterestPtr masks;
- REQUEST(xkbSelectEventsReq);
-
- REQUEST_AT_LEAST_SIZE(xkbSelectEventsReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_ANY_DEVICE(dev, stuff->deviceSpec, client, DixUseAccess);
-
- if (((stuff->affectWhich&XkbMapNotifyMask)!=0)&&(stuff->affectMap)) {
- client->mapNotifyMask&= ~stuff->affectMap;
- client->mapNotifyMask|= (stuff->affectMap&stuff->map);
- }
- if ((stuff->affectWhich&(~XkbMapNotifyMask))==0)
- return Success;
-
- masks = XkbFindClientResource((DevicePtr)dev,client);
- if (!masks){
- XID id = FakeClientID(client->index);
- if (!AddResource(id,RT_XKBCLIENT,dev))
- return BadAlloc;
- masks= XkbAddClientResource((DevicePtr)dev,client,id);
- }
- if (masks) {
- union {
- CARD8 *c8;
- CARD16 *c16;
- CARD32 *c32;
- } from,to;
- register unsigned bit,ndx,maskLeft,dataLeft,size;
-
- from.c8= (CARD8 *)&stuff[1];
- dataLeft= (stuff->length*4)-SIZEOF(xkbSelectEventsReq);
- maskLeft= (stuff->affectWhich&(~XkbMapNotifyMask));
- for (ndx=0,bit=1; (maskLeft!=0); ndx++, bit<<=1) {
- if ((bit&maskLeft)==0)
- continue;
- maskLeft&= ~bit;
- switch (ndx) {
- case XkbNewKeyboardNotify:
- to.c16= &client->newKeyboardNotifyMask;
- legal= XkbAllNewKeyboardEventsMask;
- size= 2;
- break;
- case XkbStateNotify:
- to.c16= &masks->stateNotifyMask;
- legal= XkbAllStateEventsMask;
- size= 2;
- break;
- case XkbControlsNotify:
- to.c32= &masks->ctrlsNotifyMask;
- legal= XkbAllControlEventsMask;
- size= 4;
- break;
- case XkbIndicatorStateNotify:
- to.c32= &masks->iStateNotifyMask;
- legal= XkbAllIndicatorEventsMask;
- size= 4;
- break;
- case XkbIndicatorMapNotify:
- to.c32= &masks->iMapNotifyMask;
- legal= XkbAllIndicatorEventsMask;
- size= 4;
- break;
- case XkbNamesNotify:
- to.c16= &masks->namesNotifyMask;
- legal= XkbAllNameEventsMask;
- size= 2;
- break;
- case XkbCompatMapNotify:
- to.c8= &masks->compatNotifyMask;
- legal= XkbAllCompatMapEventsMask;
- size= 1;
- break;
- case XkbBellNotify:
- to.c8= &masks->bellNotifyMask;
- legal= XkbAllBellEventsMask;
- size= 1;
- break;
- case XkbActionMessage:
- to.c8= &masks->actionMessageMask;
- legal= XkbAllActionMessagesMask;
- size= 1;
- break;
- case XkbAccessXNotify:
- to.c16= &masks->accessXNotifyMask;
- legal= XkbAllAccessXEventsMask;
- size= 2;
- break;
- case XkbExtensionDeviceNotify:
- to.c16= &masks->extDevNotifyMask;
- legal= XkbAllExtensionDeviceEventsMask;
- size= 2;
- break;
- default:
- client->errorValue = _XkbErrCode2(33,bit);
- return BadValue;
- }
-
- if (stuff->clear&bit) {
- if (size==2) to.c16[0]= 0;
- else if (size==4) to.c32[0]= 0;
- else to.c8[0]= 0;
- }
- else if (stuff->selectAll&bit) {
- if (size==2) to.c16[0]= ~0;
- else if (size==4) to.c32[0]= ~0;
- else to.c8[0]= ~0;
- }
- else {
- if (dataLeft<(size*2))
- return BadLength;
- if (size==2) {
- CHK_MASK_MATCH(ndx,from.c16[0],from.c16[1]);
- CHK_MASK_LEGAL(ndx,from.c16[0],legal);
- to.c16[0]&= ~from.c16[0];
- to.c16[0]|= (from.c16[0]&from.c16[1]);
- }
- else if (size==4) {
- CHK_MASK_MATCH(ndx,from.c32[0],from.c32[1]);
- CHK_MASK_LEGAL(ndx,from.c32[0],legal);
- to.c32[0]&= ~from.c32[0];
- to.c32[0]|= (from.c32[0]&from.c32[1]);
- }
- else {
- CHK_MASK_MATCH(ndx,from.c8[0],from.c8[1]);
- CHK_MASK_LEGAL(ndx,from.c8[0],legal);
- to.c8[0]&= ~from.c8[0];
- to.c8[0]|= (from.c8[0]&from.c8[1]);
- size= 2;
- }
- from.c8+= (size*2);
- dataLeft-= (size*2);
- }
- }
- if (dataLeft>2) {
- ErrorF("[xkb] Extra data (%d bytes) after SelectEvents\n",dataLeft);
- return BadLength;
- }
- return Success;
- }
- return BadAlloc;
-}
-
-/***====================================================================***/
-/**
- * Ring a bell on the given device for the given client.
- */
-static int
-_XkbBell(ClientPtr client, DeviceIntPtr dev, WindowPtr pWin,
- int bellClass, int bellID, int pitch, int duration,
- int percent, int forceSound, int eventOnly, Atom name)
-{
- int base;
- pointer ctrl;
- int oldPitch, oldDuration;
- int newPercent;
-
- if (bellClass == KbdFeedbackClass) {
- KbdFeedbackPtr k;
- if (bellID==XkbDfltXIId)
- k= dev->kbdfeed;
- else {
- for (k=dev->kbdfeed; k; k=k->next) {
- if (k->ctrl.id == bellID)
- break;
- }
- }
- if (!k) {
- client->errorValue = _XkbErrCode2(0x5,bellID);
- return BadValue;
- }
- base = k->ctrl.bell;
- ctrl = (pointer) &(k->ctrl);
- oldPitch= k->ctrl.bell_pitch;
- oldDuration= k->ctrl.bell_duration;
- if (pitch!=0) {
- if (pitch==-1)
- k->ctrl.bell_pitch= defaultKeyboardControl.bell_pitch;
- else k->ctrl.bell_pitch= pitch;
- }
- if (duration!=0) {
- if (duration==-1)
- k->ctrl.bell_duration= defaultKeyboardControl.bell_duration;
- else k->ctrl.bell_duration= duration;
- }
- }
- else if (bellClass == BellFeedbackClass) {
- BellFeedbackPtr b;
- if (bellID==XkbDfltXIId)
- b= dev->bell;
- else {
- for (b=dev->bell; b; b=b->next) {
- if (b->ctrl.id == bellID)
- break;
- }
- }
- if (!b) {
- client->errorValue = _XkbErrCode2(0x6,bellID);
- return BadValue;
- }
- base = b->ctrl.percent;
- ctrl = (pointer) &(b->ctrl);
- oldPitch= b->ctrl.pitch;
- oldDuration= b->ctrl.duration;
- if (pitch!=0) {
- if (pitch==-1)
- b->ctrl.pitch= defaultKeyboardControl.bell_pitch;
- else b->ctrl.pitch= pitch;
- }
- if (duration!=0) {
- if (duration==-1)
- b->ctrl.duration= defaultKeyboardControl.bell_duration;
- else b->ctrl.duration= duration;
- }
- }
- else {
- client->errorValue = _XkbErrCode2(0x7, bellClass);
- return BadValue;
- }
-
- newPercent = (base * percent)/100;
- if (percent < 0)
- newPercent = base + newPercent;
- else newPercent = base - newPercent + percent;
-
- XkbHandleBell(forceSound, eventOnly,
- dev, newPercent, ctrl, bellClass,
- name, pWin, client);
- if ((pitch!=0)||(duration!=0)) {
- if (bellClass == KbdFeedbackClass) {
- KbdFeedbackPtr k;
- k= (KbdFeedbackPtr)ctrl;
- if (pitch!=0)
- k->ctrl.bell_pitch= oldPitch;
- if (duration!=0)
- k->ctrl.bell_duration= oldDuration;
- }
- else {
- BellFeedbackPtr b;
- b= (BellFeedbackPtr)ctrl;
- if (pitch!=0)
- b->ctrl.pitch= oldPitch;
- if (duration!=0)
- b->ctrl.duration= oldDuration;
- }
- }
-
- return Success;
-}
-
-int
-ProcXkbBell(ClientPtr client)
-{
- REQUEST(xkbBellReq);
- DeviceIntPtr dev;
- WindowPtr pWin;
- int rc;
-
- REQUEST_SIZE_MATCH(xkbBellReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_BELL_DEVICE(dev, stuff->deviceSpec, client, DixBellAccess);
- CHK_ATOM_OR_NONE(stuff->name);
-
- /* device-independent checks request for sane values */
- if ((stuff->forceSound)&&(stuff->eventOnly)) {
- client->errorValue=_XkbErrCode3(0x1,stuff->forceSound,stuff->eventOnly);
- return BadMatch;
- }
- if (stuff->percent < -100 || stuff->percent > 100) {
- client->errorValue = _XkbErrCode2(0x2,stuff->percent);
- return BadValue;
- }
- if (stuff->duration<-1) {
- client->errorValue = _XkbErrCode2(0x3,stuff->duration);
- return BadValue;
- }
- if (stuff->pitch<-1) {
- client->errorValue = _XkbErrCode2(0x4,stuff->pitch);
- return BadValue;
- }
-
- if (stuff->bellClass == XkbDfltXIClass) {
- if (dev->kbdfeed!=NULL)
- stuff->bellClass= KbdFeedbackClass;
- else stuff->bellClass= BellFeedbackClass;
- }
-
- if (stuff->window!=None) {
- rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
- if (rc != Success) {
- client->errorValue= stuff->window;
- return rc;
- }
- }
- else pWin= NULL;
-
- /* Client wants to ring a bell on the core keyboard?
- Ring the bell on the core keyboard (which does nothing, but if that
- fails the client is screwed anyway), and then on all extension devices.
- Fail if the core keyboard fails but not the extension devices. this
- may cause some keyboards to ding and others to stay silent. Fix
- your client to use explicit keyboards to avoid this.
-
- dev is the device the client requested.
- */
- rc = _XkbBell(client, dev, pWin, stuff->bellClass, stuff->bellID,
- stuff->pitch, stuff->duration, stuff->percent,
- stuff->forceSound, stuff->eventOnly, stuff->name);
-
- if ((rc == Success) && ((stuff->deviceSpec == XkbUseCoreKbd) ||
- (stuff->deviceSpec == XkbUseCorePtr)))
- {
- DeviceIntPtr other;
- for (other = inputInfo.devices; other; other = other->next)
- {
- if ((other != dev) && other->key && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev)
- {
- rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixBellAccess);
- if (rc == Success)
- _XkbBell(client, other, pWin, stuff->bellClass,
- stuff->bellID, stuff->pitch, stuff->duration,
- stuff->percent, stuff->forceSound,
- stuff->eventOnly, stuff->name);
- }
- }
- rc = Success; /* reset to success, that's what we got for the VCK */
- }
-
- return rc;
-}
-
-/***====================================================================***/
-
-int
-ProcXkbGetState(ClientPtr client)
-{
- REQUEST(xkbGetStateReq);
- DeviceIntPtr dev;
- xkbGetStateReply rep;
- XkbStateRec *xkb;
-
- REQUEST_SIZE_MATCH(xkbGetStateReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
-
- xkb= &dev->key->xkbInfo->state;
- memset(&rep, 0, sizeof(xkbGetStateReply));
- rep.type= X_Reply;
- rep.sequenceNumber= client->sequence;
- rep.length = 0;
- rep.deviceID = dev->id;
- rep.mods = XkbStateFieldFromRec(xkb) & 0xff;
- rep.baseMods = xkb->base_mods;
- rep.lockedMods = xkb->locked_mods;
- rep.latchedMods = xkb->latched_mods;
- rep.group = xkb->group;
- rep.baseGroup = xkb->base_group;
- rep.latchedGroup = xkb->latched_group;
- rep.lockedGroup = xkb->locked_group;
- rep.compatState = xkb->compat_state;
- rep.ptrBtnState = xkb->ptr_buttons;
- if (client->swapped) {
- register int n;
- swaps(&rep.sequenceNumber,n);
- swaps(&rep.ptrBtnState,n);
- }
- WriteToClient(client, SIZEOF(xkbGetStateReply), (char *)&rep);
- return Success;
-}
-
-/***====================================================================***/
-
-int
-ProcXkbLatchLockState(ClientPtr client)
-{
- int status;
- DeviceIntPtr dev, tmpd;
- XkbStateRec oldState,*newState;
- CARD16 changed;
- xkbStateNotify sn;
- XkbEventCauseRec cause;
-
- REQUEST(xkbLatchLockStateReq);
- REQUEST_SIZE_MATCH(xkbLatchLockStateReq);
-
- if (!(client->xkbClientFlags & _XkbClientInitialized))
- return BadAccess;
-
- CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixSetAttrAccess);
- CHK_MASK_MATCH(0x01, stuff->affectModLocks, stuff->modLocks);
- CHK_MASK_MATCH(0x01, stuff->affectModLatches, stuff->modLatches);
-
- status = Success;
-
- for (tmpd = inputInfo.devices; tmpd; tmpd = tmpd->next) {
- if ((tmpd == dev) || (!IsMaster(tmpd) && GetMaster(tmpd, MASTER_KEYBOARD) == dev)) {
- if (!tmpd->key || !tmpd->key->xkbInfo)
- continue;
-
- oldState = tmpd->key->xkbInfo->state;
- newState = &tmpd->key->xkbInfo->state;
- if (stuff->affectModLocks) {
- newState->locked_mods &= ~stuff->affectModLocks;
- newState->locked_mods |= (stuff->affectModLocks & stuff->modLocks);
- }
- if (status == Success && stuff->lockGroup)
- newState->locked_group = stuff->groupLock;
- if (status == Success && stuff->affectModLatches)
- status = XkbLatchModifiers(tmpd, stuff->affectModLatches,
- stuff->modLatches);
- if (status == Success && stuff->latchGroup)
- status = XkbLatchGroup(tmpd, stuff->groupLatch);
-
- if (status != Success)
- return status;
-
- XkbComputeDerivedState(tmpd->key->xkbInfo);
-
- changed = XkbStateChangedFlags(&oldState, newState);
- if (changed) {
- sn.keycode = 0;
- sn.eventType = 0;
- sn.requestMajor = XkbReqCode;
- sn.requestMinor = X_kbLatchLockState;
- sn.changed = changed;
- XkbSendStateNotify(tmpd, &sn);
- changed = XkbIndicatorsToUpdate(tmpd, changed, FALSE);
- if (changed) {
- XkbSetCauseXkbReq(&cause, X_kbLatchLockState, client);
- XkbUpdateIndicators(tmpd, changed, TRUE, NULL, &cause);
- }
- }
- }
- }
-
- return Success;
-}
-
-/***====================================================================***/
-
-int
-ProcXkbGetControls(ClientPtr client)
-{
- xkbGetControlsReply rep;
- XkbControlsPtr xkb;
- DeviceIntPtr dev;
- register int n;
-
- REQUEST(xkbGetControlsReq);
- REQUEST_SIZE_MATCH(xkbGetControlsReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
-
- xkb = dev->key->xkbInfo->desc->ctrls;
- rep.type = X_Reply;
- rep.length = bytes_to_int32(SIZEOF(xkbGetControlsReply)-
- SIZEOF(xGenericReply));
- rep.sequenceNumber = client->sequence;
- rep.deviceID = ((DeviceIntPtr)dev)->id;
- rep.numGroups = xkb->num_groups;
- rep.groupsWrap = xkb->groups_wrap;
- rep.internalMods = xkb->internal.mask;
- rep.ignoreLockMods = xkb->ignore_lock.mask;
- rep.internalRealMods = xkb->internal.real_mods;
- rep.ignoreLockRealMods = xkb->ignore_lock.real_mods;
- rep.internalVMods = xkb->internal.vmods;
- rep.ignoreLockVMods = xkb->ignore_lock.vmods;
- rep.enabledCtrls = xkb->enabled_ctrls;
- rep.repeatDelay = xkb->repeat_delay;
- rep.repeatInterval = xkb->repeat_interval;
- rep.slowKeysDelay = xkb->slow_keys_delay;
- rep.debounceDelay = xkb->debounce_delay;
- rep.mkDelay = xkb->mk_delay;
- rep.mkInterval = xkb->mk_interval;
- rep.mkTimeToMax = xkb->mk_time_to_max;
- rep.mkMaxSpeed = xkb->mk_max_speed;
- rep.mkCurve = xkb->mk_curve;
- rep.mkDfltBtn = xkb->mk_dflt_btn;
- rep.axTimeout = xkb->ax_timeout;
- rep.axtCtrlsMask = xkb->axt_ctrls_mask;
- rep.axtCtrlsValues = xkb->axt_ctrls_values;
- rep.axtOptsMask = xkb->axt_opts_mask;
- rep.axtOptsValues = xkb->axt_opts_values;
- rep.axOptions = xkb->ax_options;
- memcpy(rep.perKeyRepeat,xkb->per_key_repeat,XkbPerKeyBitArraySize);
- if (client->swapped) {
- swaps(&rep.sequenceNumber, n);
- swapl(&rep.length,n);
- swaps(&rep.internalVMods, n);
- swaps(&rep.ignoreLockVMods, n);
- swapl(&rep.enabledCtrls, n);
- swaps(&rep.repeatDelay, n);
- swaps(&rep.repeatInterval, n);
- swaps(&rep.slowKeysDelay, n);
- swaps(&rep.debounceDelay, n);
- swaps(&rep.mkDelay, n);
- swaps(&rep.mkInterval, n);
- swaps(&rep.mkTimeToMax, n);
- swaps(&rep.mkMaxSpeed, n);
- swaps(&rep.mkCurve, n);
- swaps(&rep.axTimeout, n);
- swapl(&rep.axtCtrlsMask, n);
- swapl(&rep.axtCtrlsValues, n);
- swaps(&rep.axtOptsMask, n);
- swaps(&rep.axtOptsValues, n);
- swaps(&rep.axOptions, n);
- }
- WriteToClient(client, SIZEOF(xkbGetControlsReply), (char *)&rep);
- return Success;
-}
-
-int
-ProcXkbSetControls(ClientPtr client)
-{
- DeviceIntPtr dev, tmpd;
- XkbSrvInfoPtr xkbi;
- XkbControlsPtr ctrl;
- XkbControlsRec new,old;
- xkbControlsNotify cn;
- XkbEventCauseRec cause;
- XkbSrvLedInfoPtr sli;
-
- REQUEST(xkbSetControlsReq);
- REQUEST_SIZE_MATCH(xkbSetControlsReq);
-
- if (!(client->xkbClientFlags & _XkbClientInitialized))
- return BadAccess;
-
- CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixManageAccess);
- CHK_MASK_LEGAL(0x01, stuff->changeCtrls, XkbAllControlsMask);
-
- for (tmpd = inputInfo.devices; tmpd; tmpd = tmpd->next) {
- if (!tmpd->key || !tmpd->key->xkbInfo)
- continue;
- if ((tmpd == dev) || (!IsMaster(tmpd) && GetMaster(tmpd, MASTER_KEYBOARD) == dev)) {
- xkbi = tmpd->key->xkbInfo;
- ctrl = xkbi->desc->ctrls;
- new = *ctrl;
- XkbSetCauseXkbReq(&cause, X_kbSetControls, client);
-
- if (stuff->changeCtrls & XkbInternalModsMask) {
- CHK_MASK_MATCH(0x02, stuff->affectInternalMods,
- stuff->internalMods);
- CHK_MASK_MATCH(0x03, stuff->affectInternalVMods,
- stuff->internalVMods);
-
- new.internal.real_mods &= ~(stuff->affectInternalMods);
- new.internal.real_mods |= (stuff->affectInternalMods &
- stuff->internalMods);
- new.internal.vmods &= ~(stuff->affectInternalVMods);
- new.internal.vmods |= (stuff->affectInternalVMods &
- stuff->internalVMods);
- new.internal.mask = new.internal.real_mods |
- XkbMaskForVMask(xkbi->desc,
- new.internal.vmods);
- }
-
- if (stuff->changeCtrls & XkbIgnoreLockModsMask) {
- CHK_MASK_MATCH(0x4, stuff->affectIgnoreLockMods,
- stuff->ignoreLockMods);
- CHK_MASK_MATCH(0x5, stuff->affectIgnoreLockVMods,
- stuff->ignoreLockVMods);
-
- new.ignore_lock.real_mods &= ~(stuff->affectIgnoreLockMods);
- new.ignore_lock.real_mods |= (stuff->affectIgnoreLockMods &
- stuff->ignoreLockMods);
- new.ignore_lock.vmods &= ~(stuff->affectIgnoreLockVMods);
- new.ignore_lock.vmods |= (stuff->affectIgnoreLockVMods &
- stuff->ignoreLockVMods);
- new.ignore_lock.mask = new.ignore_lock.real_mods |
- XkbMaskForVMask(xkbi->desc,
- new.ignore_lock.vmods);
- }
-
- CHK_MASK_MATCH(0x06, stuff->affectEnabledCtrls,
- stuff->enabledCtrls);
- if (stuff->affectEnabledCtrls) {
- CHK_MASK_LEGAL(0x07, stuff->affectEnabledCtrls,
- XkbAllBooleanCtrlsMask);
-
- new.enabled_ctrls &= ~(stuff->affectEnabledCtrls);
- new.enabled_ctrls |= (stuff->affectEnabledCtrls &
- stuff->enabledCtrls);
- }
-
- if (stuff->changeCtrls & XkbRepeatKeysMask) {
- if (stuff->repeatDelay < 1 || stuff->repeatInterval < 1) {
- client->errorValue = _XkbErrCode3(0x08, stuff->repeatDelay,
- stuff->repeatInterval);
- return BadValue;
- }
-
- new.repeat_delay = stuff->repeatDelay;
- new.repeat_interval = stuff->repeatInterval;
- }
-
- if (stuff->changeCtrls & XkbSlowKeysMask) {
- if (stuff->slowKeysDelay < 1) {
- client->errorValue = _XkbErrCode2(0x09,
- stuff->slowKeysDelay);
- return BadValue;
- }
-
- new.slow_keys_delay = stuff->slowKeysDelay;
- }
-
- if (stuff->changeCtrls & XkbBounceKeysMask) {
- if (stuff->debounceDelay < 1) {
- client->errorValue = _XkbErrCode2(0x0A,
- stuff->debounceDelay);
- return BadValue;
- }
-
- new.debounce_delay = stuff->debounceDelay;
- }
-
- if (stuff->changeCtrls & XkbMouseKeysMask) {
- if (stuff->mkDfltBtn > XkbMaxMouseKeysBtn) {
- client->errorValue = _XkbErrCode2(0x0B, stuff->mkDfltBtn);
- return BadValue;
- }
-
- new.mk_dflt_btn = stuff->mkDfltBtn;
- }
-
- if (stuff->changeCtrls & XkbMouseKeysAccelMask) {
- if (stuff->mkDelay < 1 || stuff->mkInterval < 1 ||
- stuff->mkTimeToMax < 1 || stuff->mkMaxSpeed < 1 ||
- stuff->mkCurve < -1000) {
- client->errorValue = _XkbErrCode2(0x0C,0);
- return BadValue;
- }
-
- new.mk_delay = stuff->mkDelay;
- new.mk_interval = stuff->mkInterval;
- new.mk_time_to_max = stuff->mkTimeToMax;
- new.mk_max_speed = stuff->mkMaxSpeed;
- new.mk_curve = stuff->mkCurve;
- AccessXComputeCurveFactor(xkbi, &new);
- }
-
- if (stuff->changeCtrls & XkbGroupsWrapMask) {
- unsigned act, num;
-
- act = XkbOutOfRangeGroupAction(stuff->groupsWrap);
- switch (act) {
- case XkbRedirectIntoRange:
- num = XkbOutOfRangeGroupNumber(stuff->groupsWrap);
- if (num >= new.num_groups) {
- client->errorValue = _XkbErrCode3(0x0D, new.num_groups,
- num);
- return BadValue;
- }
- case XkbWrapIntoRange:
- case XkbClampIntoRange:
- break;
- default:
- client->errorValue = _XkbErrCode2(0x0E, act);
- return BadValue;
- }
-
- new.groups_wrap= stuff->groupsWrap;
- }
-
- CHK_MASK_LEGAL(0x0F, stuff->axOptions, XkbAX_AllOptionsMask);
- if (stuff->changeCtrls & XkbAccessXKeysMask) {
- new.ax_options = stuff->axOptions & XkbAX_AllOptionsMask;
- }
- else {
- if (stuff->changeCtrls & XkbStickyKeysMask) {
- new.ax_options &= ~(XkbAX_SKOptionsMask);
- new.ax_options |= (stuff->axOptions & XkbAX_SKOptionsMask);
- }
-
- if (stuff->changeCtrls & XkbAccessXFeedbackMask) {
- new.ax_options &= ~(XkbAX_FBOptionsMask);
- new.ax_options |= (stuff->axOptions & XkbAX_FBOptionsMask);
- }
- }
-
- if (stuff->changeCtrls & XkbAccessXTimeoutMask) {
- if (stuff->axTimeout < 1) {
- client->errorValue = _XkbErrCode2(0x10, stuff->axTimeout);
- return BadValue;
- }
- CHK_MASK_MATCH(0x11, stuff->axtCtrlsMask,
- stuff->axtCtrlsValues);
- CHK_MASK_LEGAL(0x12, stuff->axtCtrlsMask,
- XkbAllBooleanCtrlsMask);
- CHK_MASK_MATCH(0x13, stuff->axtOptsMask, stuff->axtOptsValues);
- CHK_MASK_LEGAL(0x14, stuff->axtOptsMask, XkbAX_AllOptionsMask);
- new.ax_timeout = stuff->axTimeout;
- new.axt_ctrls_mask = stuff->axtCtrlsMask;
- new.axt_ctrls_values = (stuff->axtCtrlsValues &
- stuff->axtCtrlsMask);
- new.axt_opts_mask = stuff->axtOptsMask;
- new.axt_opts_values = (stuff->axtOptsValues &
- stuff->axtOptsMask);
- }
-
- if (stuff->changeCtrls & XkbPerKeyRepeatMask) {
- memcpy(new.per_key_repeat, stuff->perKeyRepeat,
- XkbPerKeyBitArraySize);
- if (xkbi->repeatKey &&
- !BitIsOn(new.per_key_repeat, xkbi->repeatKey)) {
- AccessXCancelRepeatKey(xkbi, xkbi->repeatKey);
- }
- }
-
- old= *ctrl;
- *ctrl= new;
- XkbDDXChangeControls(tmpd, &old, ctrl);
-
- if (XkbComputeControlsNotify(tmpd, &old, ctrl, &cn, FALSE)) {
- cn.keycode = 0;
- cn.eventType = 0;
- cn.requestMajor = XkbReqCode;
- cn.requestMinor = X_kbSetControls;
- XkbSendControlsNotify(tmpd, &cn);
- }
-
- sli = XkbFindSrvLedInfo(tmpd, XkbDfltXIClass, XkbDfltXIId, 0);
- if (sli)
- XkbUpdateIndicators(tmpd, sli->usesControls, TRUE, NULL,
- &cause);
-
- /* If sticky keys were disabled, clear all locks and latches */
- if ((old.enabled_ctrls & XkbStickyKeysMask) &&
- !(ctrl->enabled_ctrls & XkbStickyKeysMask))
- XkbClearAllLatchesAndLocks(tmpd, xkbi, TRUE, &cause);
- }
- }
-
- return Success;
-}
-
-/***====================================================================***/
-
-static int
-XkbSizeKeyTypes(XkbDescPtr xkb,xkbGetMapReply *rep)
-{
- XkbKeyTypeRec *type;
- unsigned i,len;
-
- len= 0;
- if (((rep->present&XkbKeyTypesMask)==0)||(rep->nTypes<1)||
- (!xkb)||(!xkb->map)||(!xkb->map->types)) {
- rep->present&= ~XkbKeyTypesMask;
- rep->firstType= rep->nTypes= 0;
- return 0;
- }
- type= &xkb->map->types[rep->firstType];
- for (i=0;i<rep->nTypes;i++,type++){
- len+= SIZEOF(xkbKeyTypeWireDesc);
- if (type->map_count>0) {
- len+= (type->map_count*SIZEOF(xkbKTMapEntryWireDesc));
- if (type->preserve)
- len+= (type->map_count*SIZEOF(xkbModsWireDesc));
- }
- }
- return len;
-}
-
-static char *
-XkbWriteKeyTypes( XkbDescPtr xkb,
- xkbGetMapReply * rep,
- char * buf,
- ClientPtr client)
-{
- XkbKeyTypePtr type;
- unsigned i;
- xkbKeyTypeWireDesc *wire;
-
- type= &xkb->map->types[rep->firstType];
- for (i=0;i<rep->nTypes;i++,type++) {
- register unsigned n;
- wire= (xkbKeyTypeWireDesc *)buf;
- wire->mask = type->mods.mask;
- wire->realMods = type->mods.real_mods;
- wire->virtualMods = type->mods.vmods;
- wire->numLevels = type->num_levels;
- wire->nMapEntries = type->map_count;
- wire->preserve = (type->preserve!=NULL);
- if (client->swapped) {
- register int n;
- swaps(&wire->virtualMods,n);
- }
-
- buf= (char *)&wire[1];
- if (wire->nMapEntries>0) {
- xkbKTMapEntryWireDesc * wire;
- XkbKTMapEntryPtr entry;
- wire= (xkbKTMapEntryWireDesc *)buf;
- entry= type->map;
- for (n=0;n<type->map_count;n++,wire++,entry++) {
- wire->active= entry->active;
- wire->mask= entry->mods.mask;
- wire->level= entry->level;
- wire->realMods= entry->mods.real_mods;
- wire->virtualMods= entry->mods.vmods;
- if (client->swapped) {
- register int n;
- swaps(&wire->virtualMods,n);
- }
- }
- buf= (char *)wire;
- if (type->preserve!=NULL) {
- xkbModsWireDesc * pwire;
- XkbModsPtr preserve;
- pwire= (xkbModsWireDesc *)buf;
- preserve= type->preserve;
- for (n=0;n<type->map_count;n++,pwire++,preserve++) {
- pwire->mask= preserve->mask;
- pwire->realMods= preserve->real_mods;
- pwire->virtualMods= preserve->vmods;
- if (client->swapped) {
- register int n;
- swaps(&pwire->virtualMods,n);
- }
- }
- buf= (char *)pwire;
- }
- }
- }
- return buf;
-}
-
-static int
-XkbSizeKeySyms(XkbDescPtr xkb,xkbGetMapReply *rep)
-{
- XkbSymMapPtr symMap;
- unsigned i,len;
- unsigned nSyms,nSymsThisKey;
-
- if (((rep->present&XkbKeySymsMask)==0)||(rep->nKeySyms<1)||
- (!xkb)||(!xkb->map)||(!xkb->map->key_sym_map)) {
- rep->present&= ~XkbKeySymsMask;
- rep->firstKeySym= rep->nKeySyms= 0;
- rep->totalSyms= 0;
- return 0;
- }
- len= rep->nKeySyms*SIZEOF(xkbSymMapWireDesc);
- symMap = &xkb->map->key_sym_map[rep->firstKeySym];
- for (i=nSyms=0;i<rep->nKeySyms;i++,symMap++) {
- if (symMap->offset!=0) {
- nSymsThisKey= XkbNumGroups(symMap->group_info)*symMap->width;
- nSyms+= nSymsThisKey;
- }
- }
- len+= nSyms*4;
- rep->totalSyms= nSyms;
- return len;
-}
-
-static int
-XkbSizeVirtualMods(XkbDescPtr xkb,xkbGetMapReply *rep)
-{
-register unsigned i,nMods,bit;
-
- if (((rep->present&XkbVirtualModsMask)==0)||(rep->virtualMods==0)||
- (!xkb)||(!xkb->server)) {
- rep->present&= ~XkbVirtualModsMask;
- rep->virtualMods= 0;
- return 0;
- }
- for (i=nMods=0,bit=1;i<XkbNumVirtualMods;i++,bit<<=1) {
- if (rep->virtualMods&bit)
- nMods++;
- }
- return XkbPaddedSize(nMods);
-}
-
-static char *
-XkbWriteKeySyms(XkbDescPtr xkb,xkbGetMapReply *rep,char *buf,ClientPtr client)
-{
-register KeySym * pSym;
-XkbSymMapPtr symMap;
-xkbSymMapWireDesc * outMap;
-register unsigned i;
-
- symMap = &xkb->map->key_sym_map[rep->firstKeySym];
- for (i=0;i<rep->nKeySyms;i++,symMap++) {
- outMap = (xkbSymMapWireDesc *)buf;
- outMap->ktIndex[0] = symMap->kt_index[0];
- outMap->ktIndex[1] = symMap->kt_index[1];
- outMap->ktIndex[2] = symMap->kt_index[2];
- outMap->ktIndex[3] = symMap->kt_index[3];
- outMap->groupInfo = symMap->group_info;
- outMap->width= symMap->width;
- outMap->nSyms = symMap->width*XkbNumGroups(symMap->group_info);
- buf= (char *)&outMap[1];
- if (outMap->nSyms==0)
- continue;
-
- pSym = &xkb->map->syms[symMap->offset];
- memcpy((char *)buf,(char *)pSym,outMap->nSyms*4);
- if (client->swapped) {
- register int n,nSyms= outMap->nSyms;
- swaps(&outMap->nSyms,n);
- while (nSyms-->0) {
- swapl(buf,n);
- buf+= 4;
- }
- }
- else buf+= outMap->nSyms*4;
- }
- return buf;
-}
-
-static int
-XkbSizeKeyActions(XkbDescPtr xkb,xkbGetMapReply *rep)
-{
- unsigned i,len,nActs;
- register KeyCode firstKey;
-
- if (((rep->present&XkbKeyActionsMask)==0)||(rep->nKeyActs<1)||
- (!xkb)||(!xkb->server)||(!xkb->server->key_acts)) {
- rep->present&= ~XkbKeyActionsMask;
- rep->firstKeyAct= rep->nKeyActs= 0;
- rep->totalActs= 0;
- return 0;
- }
- firstKey= rep->firstKeyAct;
- for (nActs=i=0;i<rep->nKeyActs;i++) {
- if (xkb->server->key_acts[i+firstKey]!=0)
- nActs+= XkbKeyNumActions(xkb,i+firstKey);
- }
- len= XkbPaddedSize(rep->nKeyActs)+(nActs*SIZEOF(xkbActionWireDesc));
- rep->totalActs= nActs;
- return len;
-}
-
-static char *
-XkbWriteKeyActions(XkbDescPtr xkb,xkbGetMapReply *rep,char *buf,
- ClientPtr client)
-{
- unsigned i;
- CARD8 * numDesc;
- XkbAnyAction * actDesc;
-
- numDesc = (CARD8 *)buf;
- for (i=0;i<rep->nKeyActs;i++) {
- if (xkb->server->key_acts[i+rep->firstKeyAct]==0)
- numDesc[i] = 0;
- else numDesc[i] = XkbKeyNumActions(xkb,(i+rep->firstKeyAct));
- }
- buf+= XkbPaddedSize(rep->nKeyActs);
-
- actDesc = (XkbAnyAction *)buf;
- for (i=0;i<rep->nKeyActs;i++) {
- if (xkb->server->key_acts[i+rep->firstKeyAct]!=0) {
- unsigned int num;
- num = XkbKeyNumActions(xkb,(i+rep->firstKeyAct));
- memcpy((char *)actDesc,
- (char*)XkbKeyActionsPtr(xkb,(i+rep->firstKeyAct)),
- num*SIZEOF(xkbActionWireDesc));
- actDesc+= num;
- }
- }
- buf = (char *)actDesc;
- return buf;
-}
-
-static int
-XkbSizeKeyBehaviors(XkbDescPtr xkb,xkbGetMapReply *rep)
-{
- unsigned i,len,nBhvr;
- XkbBehavior * bhv;
-
- if (((rep->present&XkbKeyBehaviorsMask)==0)||(rep->nKeyBehaviors<1)||
- (!xkb)||(!xkb->server)||(!xkb->server->behaviors)) {
- rep->present&= ~XkbKeyBehaviorsMask;
- rep->firstKeyBehavior= rep->nKeyBehaviors= 0;
- rep->totalKeyBehaviors= 0;
- return 0;
- }
- bhv= &xkb->server->behaviors[rep->firstKeyBehavior];
- for (nBhvr=i=0;i<rep->nKeyBehaviors;i++,bhv++) {
- if (bhv->type!=XkbKB_Default)
- nBhvr++;
- }
- len= nBhvr*SIZEOF(xkbBehaviorWireDesc);
- rep->totalKeyBehaviors= nBhvr;
- return len;
-}
-
-static char *
-XkbWriteKeyBehaviors(XkbDescPtr xkb,xkbGetMapReply *rep,char *buf,
- ClientPtr client)
-{
- unsigned i;
- xkbBehaviorWireDesc *wire;
- XkbBehavior *pBhvr;
-
- wire = (xkbBehaviorWireDesc *)buf;
- pBhvr= &xkb->server->behaviors[rep->firstKeyBehavior];
- for (i=0;i<rep->nKeyBehaviors;i++,pBhvr++) {
- if (pBhvr->type!=XkbKB_Default) {
- wire->key= i+rep->firstKeyBehavior;
- wire->type= pBhvr->type;
- wire->data= pBhvr->data;
- wire++;
- }
- }
- buf = (char *)wire;
- return buf;
-}
-
-static int
-XkbSizeExplicit(XkbDescPtr xkb,xkbGetMapReply *rep)
-{
- unsigned i,len,nRtrn;
-
- if (((rep->present&XkbExplicitComponentsMask)==0)||(rep->nKeyExplicit<1)||
- (!xkb)||(!xkb->server)||(!xkb->server->explicit)) {
- rep->present&= ~XkbExplicitComponentsMask;
- rep->firstKeyExplicit= rep->nKeyExplicit= 0;
- rep->totalKeyExplicit= 0;
- return 0;
- }
- for (nRtrn=i=0;i<rep->nKeyExplicit;i++) {
- if (xkb->server->explicit[i+rep->firstKeyExplicit]!=0)
- nRtrn++;
- }
- rep->totalKeyExplicit= nRtrn;
- len= XkbPaddedSize(nRtrn*2); /* two bytes per non-zero explicit component */
- return len;
-}
-
-static char *
-XkbWriteExplicit(XkbDescPtr xkb,xkbGetMapReply *rep,char *buf,ClientPtr client)
-{
-unsigned i;
-char * start;
-unsigned char * pExp;
-
- start= buf;
- pExp= &xkb->server->explicit[rep->firstKeyExplicit];
- for (i=0;i<rep->nKeyExplicit;i++,pExp++) {
- if (*pExp!=0) {
- *buf++= i+rep->firstKeyExplicit;
- *buf++= *pExp;
- }
- }
- i= XkbPaddedSize(buf-start)-(buf-start); /* pad to word boundary */
- return buf+i;
-}
-
-static int
-XkbSizeModifierMap(XkbDescPtr xkb,xkbGetMapReply *rep)
-{
- unsigned i,len,nRtrn;
-
- if (((rep->present&XkbModifierMapMask)==0)||(rep->nModMapKeys<1)||
- (!xkb)||(!xkb->map)||(!xkb->map->modmap)) {
- rep->present&= ~XkbModifierMapMask;
- rep->firstModMapKey= rep->nModMapKeys= 0;
- rep->totalModMapKeys= 0;
- return 0;
- }
- for (nRtrn=i=0;i<rep->nModMapKeys;i++) {
- if (xkb->map->modmap[i+rep->firstModMapKey]!=0)
- nRtrn++;
- }
- rep->totalModMapKeys= nRtrn;
- len= XkbPaddedSize(nRtrn*2); /* two bytes per non-zero modmap component */
- return len;
-}
-
-static char *
-XkbWriteModifierMap(XkbDescPtr xkb,xkbGetMapReply *rep,char *buf,
- ClientPtr client)
-{
-unsigned i;
-char * start;
-unsigned char * pMap;
-
- start= buf;
- pMap= &xkb->map->modmap[rep->firstModMapKey];
- for (i=0;i<rep->nModMapKeys;i++,pMap++) {
- if (*pMap!=0) {
- *buf++= i+rep->firstModMapKey;
- *buf++= *pMap;
- }
- }
- i= XkbPaddedSize(buf-start)-(buf-start); /* pad to word boundary */
- return buf+i;
-}
-
-static int
-XkbSizeVirtualModMap(XkbDescPtr xkb,xkbGetMapReply *rep)
-{
- unsigned i,len,nRtrn;
-
- if (((rep->present&XkbVirtualModMapMask)==0)||(rep->nVModMapKeys<1)||
- (!xkb)||(!xkb->server)||(!xkb->server->vmodmap)) {
- rep->present&= ~XkbVirtualModMapMask;
- rep->firstVModMapKey= rep->nVModMapKeys= 0;
- rep->totalVModMapKeys= 0;
- return 0;
- }
- for (nRtrn=i=0;i<rep->nVModMapKeys;i++) {
- if (xkb->server->vmodmap[i+rep->firstVModMapKey]!=0)
- nRtrn++;
- }
- rep->totalVModMapKeys= nRtrn;
- len= nRtrn*SIZEOF(xkbVModMapWireDesc);
- return len;
-}
-
-static char *
-XkbWriteVirtualModMap(XkbDescPtr xkb,xkbGetMapReply *rep,char *buf,
- ClientPtr client)
-{
-unsigned i;
-xkbVModMapWireDesc * wire;
-unsigned short * pMap;
-
- wire= (xkbVModMapWireDesc *)buf;
- pMap= &xkb->server->vmodmap[rep->firstVModMapKey];
- for (i=0;i<rep->nVModMapKeys;i++,pMap++) {
- if (*pMap!=0) {
- wire->key= i+rep->firstVModMapKey;
- wire->vmods= *pMap;
- wire++;
- }
- }
- return (char *)wire;
-}
-
-static Status
-XkbComputeGetMapReplySize(XkbDescPtr xkb,xkbGetMapReply *rep)
-{
-int len;
-
- rep->minKeyCode= xkb->min_key_code;
- rep->maxKeyCode= xkb->max_key_code;
- len= XkbSizeKeyTypes(xkb,rep);
- len+= XkbSizeKeySyms(xkb,rep);
- len+= XkbSizeKeyActions(xkb,rep);
- len+= XkbSizeKeyBehaviors(xkb,rep);
- len+= XkbSizeVirtualMods(xkb,rep);
- len+= XkbSizeExplicit(xkb,rep);
- len+= XkbSizeModifierMap(xkb,rep);
- len+= XkbSizeVirtualModMap(xkb,rep);
- rep->length+= (len/4);
- return Success;
-}
-
-static int
-XkbSendMap(ClientPtr client,XkbDescPtr xkb,xkbGetMapReply *rep)
-{
-unsigned i,len;
-char *desc,*start;
-
- len= (rep->length*4)-(SIZEOF(xkbGetMapReply)-SIZEOF(xGenericReply));
- start= desc= calloc(1, len);
- if (!start)
- return BadAlloc;
- if ( rep->nTypes>0 )
- desc = XkbWriteKeyTypes(xkb,rep,desc,client);
- if ( rep->nKeySyms>0 )
- desc = XkbWriteKeySyms(xkb,rep,desc,client);
- if ( rep->nKeyActs>0 )
- desc = XkbWriteKeyActions(xkb,rep,desc,client);
- if ( rep->totalKeyBehaviors>0 )
- desc = XkbWriteKeyBehaviors(xkb,rep,desc,client);
- if ( rep->virtualMods ) {
- register int sz,bit;
- for (i=sz=0,bit=1;i<XkbNumVirtualMods;i++,bit<<=1) {
- if (rep->virtualMods&bit) {
- desc[sz++]= xkb->server->vmods[i];
- }
- }
- desc+= XkbPaddedSize(sz);
- }
- if ( rep->totalKeyExplicit>0 )
- desc= XkbWriteExplicit(xkb,rep,desc,client);
- if ( rep->totalModMapKeys>0 )
- desc= XkbWriteModifierMap(xkb,rep,desc,client);
- if ( rep->totalVModMapKeys>0 )
- desc= XkbWriteVirtualModMap(xkb,rep,desc,client);
- if ((desc-start)!=(len)) {
- ErrorF("[xkb] BOGUS LENGTH in write keyboard desc, expected %d, got %ld\n",
- len, (unsigned long)(desc-start));
- }
- if (client->swapped) {
- register int n;
- swaps(&rep->sequenceNumber,n);
- swapl(&rep->length,n);
- swaps(&rep->present,n);
- swaps(&rep->totalSyms,n);
- swaps(&rep->totalActs,n);
- }
- WriteToClient(client, (i=SIZEOF(xkbGetMapReply)), (char *)rep);
- WriteToClient(client, len, start);
- free((char *)start);
- return Success;
-}
-
-int
-ProcXkbGetMap(ClientPtr client)
-{
- DeviceIntPtr dev;
- xkbGetMapReply rep;
- XkbDescRec *xkb;
- int n,status;
-
- REQUEST(xkbGetMapReq);
- REQUEST_SIZE_MATCH(xkbGetMapReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
- CHK_MASK_OVERLAP(0x01,stuff->full,stuff->partial);
- CHK_MASK_LEGAL(0x02,stuff->full,XkbAllMapComponentsMask);
- CHK_MASK_LEGAL(0x03,stuff->partial,XkbAllMapComponentsMask);
-
- xkb= dev->key->xkbInfo->desc;
- memset(&rep, 0, sizeof(xkbGetMapReply));
- rep.type= X_Reply;
- rep.sequenceNumber= client->sequence;
- rep.length = (SIZEOF(xkbGetMapReply)-SIZEOF(xGenericReply))>>2;
- rep.deviceID = dev->id;
- rep.present = stuff->partial|stuff->full;
- rep.minKeyCode = xkb->min_key_code;
- rep.maxKeyCode = xkb->max_key_code;
- if ( stuff->full&XkbKeyTypesMask ) {
- rep.firstType = 0;
- rep.nTypes = xkb->map->num_types;
- }
- else if (stuff->partial&XkbKeyTypesMask) {
- if (((unsigned)stuff->firstType+stuff->nTypes)>xkb->map->num_types) {
- client->errorValue = _XkbErrCode4(0x04,xkb->map->num_types,
- stuff->firstType,stuff->nTypes);
- return BadValue;
- }
- rep.firstType = stuff->firstType;
- rep.nTypes = stuff->nTypes;
- }
- else rep.nTypes = 0;
- rep.totalTypes = xkb->map->num_types;
-
- n= XkbNumKeys(xkb);
- if ( stuff->full&XkbKeySymsMask ) {
- rep.firstKeySym = xkb->min_key_code;
- rep.nKeySyms = n;
- }
- else if (stuff->partial&XkbKeySymsMask) {
- CHK_KEY_RANGE(0x05,stuff->firstKeySym,stuff->nKeySyms,xkb);
- rep.firstKeySym = stuff->firstKeySym;
- rep.nKeySyms = stuff->nKeySyms;
- }
- else rep.nKeySyms = 0;
- rep.totalSyms= 0;
-
- if ( stuff->full&XkbKeyActionsMask ) {
- rep.firstKeyAct= xkb->min_key_code;
- rep.nKeyActs= n;
- }
- else if (stuff->partial&XkbKeyActionsMask) {
- CHK_KEY_RANGE(0x07,stuff->firstKeyAct,stuff->nKeyActs,xkb);
- rep.firstKeyAct= stuff->firstKeyAct;
- rep.nKeyActs= stuff->nKeyActs;
- }
- else rep.nKeyActs= 0;
- rep.totalActs= 0;
-
- if ( stuff->full&XkbKeyBehaviorsMask ) {
- rep.firstKeyBehavior = xkb->min_key_code;
- rep.nKeyBehaviors = n;
- }
- else if (stuff->partial&XkbKeyBehaviorsMask) {
- CHK_KEY_RANGE(0x09,stuff->firstKeyBehavior,stuff->nKeyBehaviors,xkb);
- rep.firstKeyBehavior= stuff->firstKeyBehavior;
- rep.nKeyBehaviors= stuff->nKeyBehaviors;
- }
- else rep.nKeyBehaviors = 0;
- rep.totalKeyBehaviors= 0;
-
- if (stuff->full&XkbVirtualModsMask)
- rep.virtualMods= ~0;
- else if (stuff->partial&XkbVirtualModsMask)
- rep.virtualMods= stuff->virtualMods;
-
- if (stuff->full&XkbExplicitComponentsMask) {
- rep.firstKeyExplicit= xkb->min_key_code;
- rep.nKeyExplicit= n;
- }
- else if (stuff->partial&XkbExplicitComponentsMask) {
- CHK_KEY_RANGE(0x0B,stuff->firstKeyExplicit,stuff->nKeyExplicit,xkb);
- rep.firstKeyExplicit= stuff->firstKeyExplicit;
- rep.nKeyExplicit= stuff->nKeyExplicit;
- }
- else rep.nKeyExplicit = 0;
- rep.totalKeyExplicit= 0;
-
- if (stuff->full&XkbModifierMapMask) {
- rep.firstModMapKey= xkb->min_key_code;
- rep.nModMapKeys= n;
- }
- else if (stuff->partial&XkbModifierMapMask) {
- CHK_KEY_RANGE(0x0D,stuff->firstModMapKey,stuff->nModMapKeys,xkb);
- rep.firstModMapKey= stuff->firstModMapKey;
- rep.nModMapKeys= stuff->nModMapKeys;
- }
- else rep.nModMapKeys = 0;
- rep.totalModMapKeys= 0;
-
- if (stuff->full&XkbVirtualModMapMask) {
- rep.firstVModMapKey= xkb->min_key_code;
- rep.nVModMapKeys= n;
- }
- else if (stuff->partial&XkbVirtualModMapMask) {
- CHK_KEY_RANGE(0x0F,stuff->firstVModMapKey,stuff->nVModMapKeys,xkb);
- rep.firstVModMapKey= stuff->firstVModMapKey;
- rep.nVModMapKeys= stuff->nVModMapKeys;
- }
- else rep.nVModMapKeys = 0;
- rep.totalVModMapKeys= 0;
-
- if ((status=XkbComputeGetMapReplySize(xkb,&rep))!=Success)
- return status;
- return XkbSendMap(client,xkb,&rep);
-}
-
-/***====================================================================***/
-
-static int
-CheckKeyTypes( ClientPtr client,
- XkbDescPtr xkb,
- xkbSetMapReq * req,
- xkbKeyTypeWireDesc **wireRtrn,
- int * nMapsRtrn,
- CARD8 * mapWidthRtrn)
-{
-unsigned nMaps;
-register unsigned i,n;
-register CARD8 * map;
-register xkbKeyTypeWireDesc *wire = *wireRtrn;
-
- if (req->firstType>((unsigned)xkb->map->num_types)) {
- *nMapsRtrn = _XkbErrCode3(0x01,req->firstType,xkb->map->num_types);
- return 0;
- }
- if (req->flags&XkbSetMapResizeTypes) {
- nMaps = req->firstType+req->nTypes;
- if (nMaps<XkbNumRequiredTypes) { /* canonical types must be there */
- *nMapsRtrn= _XkbErrCode4(0x02,req->firstType,req->nTypes,4);
- return 0;
- }
- }
- else if (req->present&XkbKeyTypesMask) {
- nMaps = xkb->map->num_types;
- if ((req->firstType+req->nTypes)>nMaps) {
- *nMapsRtrn = req->firstType+req->nTypes;
- return 0;
- }
- }
- else {
- *nMapsRtrn = xkb->map->num_types;
- for (i=0;i<xkb->map->num_types;i++) {
- mapWidthRtrn[i] = xkb->map->types[i].num_levels;
- }
- return 1;
- }
-
- for (i=0;i<req->firstType;i++) {
- mapWidthRtrn[i] = xkb->map->types[i].num_levels;
- }
- for (i=0;i<req->nTypes;i++) {
- unsigned width;
- if (client->swapped) {
- register int s;
- swaps(&wire->virtualMods,s);
- }
- n= i+req->firstType;
- width= wire->numLevels;
- if (width<1) {
- *nMapsRtrn= _XkbErrCode3(0x04,n,width);
- return 0;
- }
- else if ((n==XkbOneLevelIndex)&&(width!=1)) { /* must be width 1 */
- *nMapsRtrn= _XkbErrCode3(0x05,n,width);
- return 0;
- }
- else if ((width!=2)&&
- ((n==XkbTwoLevelIndex)||(n==XkbKeypadIndex)||
- (n==XkbAlphabeticIndex))) {
- /* TWO_LEVEL, ALPHABETIC and KEYPAD must be width 2 */
- *nMapsRtrn= _XkbErrCode3(0x05,n,width);
- return 0;
- }
- if (wire->nMapEntries>0) {
- xkbKTSetMapEntryWireDesc * mapWire;
- xkbModsWireDesc * preWire;
- mapWire= (xkbKTSetMapEntryWireDesc *)&wire[1];
- preWire= (xkbModsWireDesc *)&mapWire[wire->nMapEntries];
- for (n=0;n<wire->nMapEntries;n++) {
- if (client->swapped) {
- register int s;
- swaps(&mapWire[n].virtualMods,s);
- }
- if (mapWire[n].realMods&(~wire->realMods)) {
- *nMapsRtrn= _XkbErrCode4(0x06,n,mapWire[n].realMods,
- wire->realMods);
- return 0;
- }
- if (mapWire[n].virtualMods&(~wire->virtualMods)) {
- *nMapsRtrn= _XkbErrCode3(0x07,n,mapWire[n].virtualMods);
- return 0;
- }
- if (mapWire[n].level>=wire->numLevels) {
- *nMapsRtrn= _XkbErrCode4(0x08,n,wire->numLevels,
- mapWire[n].level);
- return 0;
- }
- if (wire->preserve) {
- if (client->swapped) {
- register int s;
- swaps(&preWire[n].virtualMods,s);
- }
- if (preWire[n].realMods&(~mapWire[n].realMods)) {
- *nMapsRtrn= _XkbErrCode4(0x09,n,preWire[n].realMods,
- mapWire[n].realMods);
- return 0;
- }
- if (preWire[n].virtualMods&(~mapWire[n].virtualMods)) {
- *nMapsRtrn=_XkbErrCode3(0x0a,n,preWire[n].virtualMods);
- return 0;
- }
- }
- }
- if (wire->preserve)
- map= (CARD8 *)&preWire[wire->nMapEntries];
- else map= (CARD8 *)&mapWire[wire->nMapEntries];
- }
- else map= (CARD8 *)&wire[1];
- mapWidthRtrn[i+req->firstType] = wire->numLevels;
- wire= (xkbKeyTypeWireDesc *)map;
- }
- for (i=req->firstType+req->nTypes;i<nMaps;i++) {
- mapWidthRtrn[i] = xkb->map->types[i].num_levels;
- }
- *nMapsRtrn = nMaps;
- *wireRtrn = wire;
- return 1;
-}
-
-static int
-CheckKeySyms( ClientPtr client,
- XkbDescPtr xkb,
- xkbSetMapReq * req,
- int nTypes,
- CARD8 * mapWidths,
- CARD16 * symsPerKey,
- xkbSymMapWireDesc ** wireRtrn,
- int * errorRtrn)
-{
-register unsigned i;
-XkbSymMapPtr map;
-xkbSymMapWireDesc* wire = *wireRtrn;
-
- if (!(XkbKeySymsMask&req->present))
- return 1;
- CHK_REQ_KEY_RANGE2(0x11,req->firstKeySym,req->nKeySyms,req,(*errorRtrn),0);
- for (i=0;i<req->nKeySyms;i++) {
- KeySym *pSyms;
- register unsigned nG;
- if (client->swapped) {
- swaps(&wire->nSyms,nG);
- }
- nG = XkbNumGroups(wire->groupInfo);
- if (nG>XkbNumKbdGroups) {
- *errorRtrn = _XkbErrCode3(0x14,i+req->firstKeySym,nG);
- return 0;
- }
- if (nG>0) {
- register int g,w;
- for (g=w=0;g<nG;g++) {
- if (wire->ktIndex[g]>=(unsigned)nTypes) {
- *errorRtrn= _XkbErrCode4(0x15,i+req->firstKeySym,g,
- wire->ktIndex[g]);
- return 0;
- }
- if (mapWidths[wire->ktIndex[g]]>w)
- w= mapWidths[wire->ktIndex[g]];
- }
- if (wire->width!=w) {
- *errorRtrn= _XkbErrCode3(0x16,i+req->firstKeySym,wire->width);
- return 0;
- }
- w*= nG;
- symsPerKey[i+req->firstKeySym] = w;
- if (w!=wire->nSyms) {
- *errorRtrn=_XkbErrCode4(0x16,i+req->firstKeySym,wire->nSyms,w);
- return 0;
- }
- }
- else if (wire->nSyms!=0) {
- *errorRtrn = _XkbErrCode3(0x17,i+req->firstKeySym,wire->nSyms);
- return 0;
- }
- pSyms = (KeySym *)&wire[1];
- wire = (xkbSymMapWireDesc *)&pSyms[wire->nSyms];
- }
-
- map = &xkb->map->key_sym_map[i];
- for (;i<=(unsigned)xkb->max_key_code;i++,map++) {
- register int g,nG,w;
- nG= XkbKeyNumGroups(xkb,i);
- for (w=g=0;g<nG;g++) {
- if (map->kt_index[g]>=(unsigned)nTypes) {
- *errorRtrn = _XkbErrCode4(0x18,i,g,map->kt_index[g]);
- return 0;
- }
- if (mapWidths[map->kt_index[g]]>w)
- w= mapWidths[map->kt_index[g]];
- }
- symsPerKey[i] = w*nG;
- }
- *wireRtrn = wire;
- return 1;
-}
-
-static int
-CheckKeyActions( XkbDescPtr xkb,
- xkbSetMapReq * req,
- int nTypes,
- CARD8 * mapWidths,
- CARD16 * symsPerKey,
- CARD8 ** wireRtrn,
- int * nActsRtrn)
-{
-int nActs;
-CARD8 * wire = *wireRtrn;
-register unsigned i;
-
- if (!(XkbKeyActionsMask&req->present))
- return 1;
- CHK_REQ_KEY_RANGE2(0x21,req->firstKeyAct,req->nKeyActs,req,(*nActsRtrn),0);
- for (nActs=i=0;i<req->nKeyActs;i++) {
- if (wire[0]!=0) {
- if (wire[0]==symsPerKey[i+req->firstKeyAct])
- nActs+= wire[0];
- else {
- *nActsRtrn= _XkbErrCode3(0x23,i+req->firstKeyAct,wire[0]);
- return 0;
- }
- }
- wire++;
- }
- if (req->nKeyActs%4)
- wire+= 4-(req->nKeyActs%4);
- *wireRtrn = (CARD8 *)(((XkbAnyAction *)wire)+nActs);
- *nActsRtrn = nActs;
- return 1;
-}
-
-static int
-CheckKeyBehaviors( XkbDescPtr xkb,
- xkbSetMapReq * req,
- xkbBehaviorWireDesc ** wireRtrn,
- int * errorRtrn)
-{
-register xkbBehaviorWireDesc * wire = *wireRtrn;
-register XkbServerMapPtr server = xkb->server;
-register unsigned i;
-unsigned first,last;
-
- if (((req->present&XkbKeyBehaviorsMask)==0)||(req->nKeyBehaviors<1)) {
- req->present&= ~XkbKeyBehaviorsMask;
- req->nKeyBehaviors= 0;
- return 1;
- }
- first= req->firstKeyBehavior;
- last= req->firstKeyBehavior+req->nKeyBehaviors-1;
- if (first<req->minKeyCode) {
- *errorRtrn = _XkbErrCode3(0x31,first,req->minKeyCode);
- return 0;
- }
- if (last>req->maxKeyCode) {
- *errorRtrn = _XkbErrCode3(0x32,last,req->maxKeyCode);
- return 0;
- }
-
- for (i=0;i<req->totalKeyBehaviors;i++,wire++) {
- if ((wire->key<first)||(wire->key>last)) {
- *errorRtrn = _XkbErrCode4(0x33,first,last,wire->key);
- return 0;
- }
- if ((wire->type&XkbKB_Permanent)&&
- ((server->behaviors[wire->key].type!=wire->type)||
- (server->behaviors[wire->key].data!=wire->data))) {
- *errorRtrn = _XkbErrCode3(0x33,wire->key,wire->type);
- return 0;
- }
- if ((wire->type==XkbKB_RadioGroup)&&
- ((wire->data&(~XkbKB_RGAllowNone))>XkbMaxRadioGroups)) {
- *errorRtrn= _XkbErrCode4(0x34,wire->key,wire->data,
- XkbMaxRadioGroups);
- return 0;
- }
- if ((wire->type==XkbKB_Overlay1)||(wire->type==XkbKB_Overlay2)) {
- CHK_KEY_RANGE2(0x35,wire->key,1,xkb,*errorRtrn,0);
- }
- }
- *wireRtrn = wire;
- return 1;
-}
-
-static int
-CheckVirtualMods( XkbDescRec * xkb,
- xkbSetMapReq * req,
- CARD8 ** wireRtrn,
- int * errorRtrn)
-{
-register CARD8 *wire = *wireRtrn;
-register unsigned i,nMods,bit;
-
- if (((req->present&XkbVirtualModsMask)==0)||(req->virtualMods==0))
- return 1;
- for (i=nMods=0,bit=1;i<XkbNumVirtualMods;i++,bit<<=1) {
- if (req->virtualMods&bit)
- nMods++;
- }
- *wireRtrn= (wire+XkbPaddedSize(nMods));
- return 1;
-}
-
-static int
-CheckKeyExplicit( XkbDescPtr xkb,
- xkbSetMapReq * req,
- CARD8 ** wireRtrn,
- int * errorRtrn)
-{
-register CARD8 * wire = *wireRtrn;
-CARD8 * start;
-register unsigned i;
-int first,last;
-
- if (((req->present&XkbExplicitComponentsMask)==0)||(req->nKeyExplicit<1)) {
- req->present&= ~XkbExplicitComponentsMask;
- req->nKeyExplicit= 0;
- return 1;
- }
- first= req->firstKeyExplicit;
- last= first+req->nKeyExplicit-1;
- if (first<req->minKeyCode) {
- *errorRtrn = _XkbErrCode3(0x51,first,req->minKeyCode);
- return 0;
- }
- if (last>req->maxKeyCode) {
- *errorRtrn = _XkbErrCode3(0x52,last,req->maxKeyCode);
- return 0;
- }
- start= wire;
- for (i=0;i<req->totalKeyExplicit;i++,wire+=2) {
- if ((wire[0]<first)||(wire[0]>last)) {
- *errorRtrn = _XkbErrCode4(0x53,first,last,wire[0]);
- return 0;
- }
- if (wire[1]&(~XkbAllExplicitMask)) {
- *errorRtrn= _XkbErrCode3(0x52,~XkbAllExplicitMask,wire[1]);
- return 0;
- }
- }
- wire+= XkbPaddedSize(wire-start)-(wire-start);
- *wireRtrn= wire;
- return 1;
-}
-
-static int
-CheckModifierMap(XkbDescPtr xkb,xkbSetMapReq *req,CARD8 **wireRtrn,int *errRtrn)
-{
-register CARD8 * wire = *wireRtrn;
-CARD8 * start;
-register unsigned i;
-int first,last;
-
- if (((req->present&XkbModifierMapMask)==0)||(req->nModMapKeys<1)) {
- req->present&= ~XkbModifierMapMask;
- req->nModMapKeys= 0;
- return 1;
- }
- first= req->firstModMapKey;
- last= first+req->nModMapKeys-1;
- if (first<req->minKeyCode) {
- *errRtrn = _XkbErrCode3(0x61,first,req->minKeyCode);
- return 0;
- }
- if (last>req->maxKeyCode) {
- *errRtrn = _XkbErrCode3(0x62,last,req->maxKeyCode);
- return 0;
- }
- start= wire;
- for (i=0;i<req->totalModMapKeys;i++,wire+=2) {
- if ((wire[0]<first)||(wire[0]>last)) {
- *errRtrn = _XkbErrCode4(0x63,first,last,wire[0]);
- return 0;
- }
- }
- wire+= XkbPaddedSize(wire-start)-(wire-start);
- *wireRtrn= wire;
- return 1;
-}
-
-static int
-CheckVirtualModMap( XkbDescPtr xkb,
- xkbSetMapReq *req,
- xkbVModMapWireDesc **wireRtrn,
- int *errRtrn)
-{
-register xkbVModMapWireDesc * wire = *wireRtrn;
-register unsigned i;
-int first,last;
-
- if (((req->present&XkbVirtualModMapMask)==0)||(req->nVModMapKeys<1)) {
- req->present&= ~XkbVirtualModMapMask;
- req->nVModMapKeys= 0;
- return 1;
- }
- first= req->firstVModMapKey;
- last= first+req->nVModMapKeys-1;
- if (first<req->minKeyCode) {
- *errRtrn = _XkbErrCode3(0x71,first,req->minKeyCode);
- return 0;
- }
- if (last>req->maxKeyCode) {
- *errRtrn = _XkbErrCode3(0x72,last,req->maxKeyCode);
- return 0;
- }
- for (i=0;i<req->totalVModMapKeys;i++,wire++) {
- if ((wire->key<first)||(wire->key>last)) {
- *errRtrn = _XkbErrCode4(0x73,first,last,wire->key);
- return 0;
- }
- }
- *wireRtrn= wire;
- return 1;
-}
-
-static char *
-SetKeyTypes( XkbDescPtr xkb,
- xkbSetMapReq * req,
- xkbKeyTypeWireDesc * wire,
- XkbChangesPtr changes)
-{
-register unsigned i;
-unsigned first,last;
-CARD8 *map;
-
- if ((unsigned)(req->firstType+req->nTypes)>xkb->map->size_types) {
- i= req->firstType+req->nTypes;
- if (XkbAllocClientMap(xkb,XkbKeyTypesMask,i)!=Success) {
- return NULL;
- }
- }
- if ((unsigned)(req->firstType+req->nTypes)>xkb->map->num_types)
- xkb->map->num_types= req->firstType+req->nTypes;
-
- for (i=0;i<req->nTypes;i++) {
- XkbKeyTypePtr pOld;
- register unsigned n;
-
- if (XkbResizeKeyType(xkb,i+req->firstType,wire->nMapEntries,
- wire->preserve,wire->numLevels)!=Success) {
- return NULL;
- }
- pOld = &xkb->map->types[i+req->firstType];
- map = (CARD8 *)&wire[1];
-
- pOld->mods.real_mods = wire->realMods;
- pOld->mods.vmods= wire->virtualMods;
- pOld->num_levels = wire->numLevels;
- pOld->map_count= wire->nMapEntries;
-
- pOld->mods.mask= pOld->mods.real_mods|
- XkbMaskForVMask(xkb,pOld->mods.vmods);
-
- if (wire->nMapEntries) {
- xkbKTSetMapEntryWireDesc *mapWire;
- xkbModsWireDesc *preWire;
- unsigned tmp;
- mapWire= (xkbKTSetMapEntryWireDesc *)map;
- preWire= (xkbModsWireDesc *)&mapWire[wire->nMapEntries];
- for (n=0;n<wire->nMapEntries;n++) {
- pOld->map[n].active= 1;
- pOld->map[n].mods.mask= mapWire[n].realMods;
- pOld->map[n].mods.real_mods= mapWire[n].realMods;
- pOld->map[n].mods.vmods= mapWire[n].virtualMods;
- pOld->map[n].level= mapWire[n].level;
- if (mapWire[n].virtualMods!=0) {
- tmp= XkbMaskForVMask(xkb,mapWire[n].virtualMods);
- pOld->map[n].active= (tmp!=0);
- pOld->map[n].mods.mask|= tmp;
- }
- if (wire->preserve) {
- pOld->preserve[n].real_mods= preWire[n].realMods;
- pOld->preserve[n].vmods= preWire[n].virtualMods;
- tmp= XkbMaskForVMask(xkb,preWire[n].virtualMods);
- pOld->preserve[n].mask= preWire[n].realMods|tmp;
- }
- }
- if (wire->preserve)
- map= (CARD8 *)&preWire[wire->nMapEntries];
- else map= (CARD8 *)&mapWire[wire->nMapEntries];
- }
- else map= (CARD8 *)&wire[1];
- wire = (xkbKeyTypeWireDesc *)map;
- }
- first= req->firstType;
- last= first+req->nTypes-1; /* last changed type */
- if (changes->map.changed&XkbKeyTypesMask) {
- int oldLast;
- oldLast= changes->map.first_type+changes->map.num_types-1;
- if (changes->map.first_type<first)
- first= changes->map.first_type;
- if (oldLast>last)
- last= oldLast;
- }
- changes->map.changed|= XkbKeyTypesMask;
- changes->map.first_type = first;
- changes->map.num_types = (last-first)+1;
- return (char *)wire;
-}
-
-static char *
-SetKeySyms( ClientPtr client,
- XkbDescPtr xkb,
- xkbSetMapReq * req,
- xkbSymMapWireDesc * wire,
- XkbChangesPtr changes,
- DeviceIntPtr dev)
-{
-register unsigned i,s;
-XkbSymMapPtr oldMap;
-KeySym * newSyms;
-KeySym * pSyms;
-unsigned first,last;
-
- oldMap = &xkb->map->key_sym_map[req->firstKeySym];
- for (i=0;i<req->nKeySyms;i++,oldMap++) {
- pSyms = (KeySym *)&wire[1];
- if (wire->nSyms>0) {
- newSyms = XkbResizeKeySyms(xkb,i+req->firstKeySym,wire->nSyms);
- for (s=0;s<wire->nSyms;s++) {
- newSyms[s]= pSyms[s];
- }
- if (client->swapped) {
- int n;
- for (s=0;s<wire->nSyms;s++) {
- swapl(&newSyms[s],n);
- }
- }
- }
- oldMap->kt_index[0] = wire->ktIndex[0];
- oldMap->kt_index[1] = wire->ktIndex[1];
- oldMap->kt_index[2] = wire->ktIndex[2];
- oldMap->kt_index[3] = wire->ktIndex[3];
- oldMap->group_info = wire->groupInfo;
- oldMap->width = wire->width;
- wire= (xkbSymMapWireDesc *)&pSyms[wire->nSyms];
- }
- first= req->firstKeySym;
- last= first+req->nKeySyms-1;
- if (changes->map.changed&XkbKeySymsMask) {
- int oldLast= (changes->map.first_key_sym+changes->map.num_key_syms-1);
- if (changes->map.first_key_sym<first)
- first= changes->map.first_key_sym;
- if (oldLast>last)
- last= oldLast;
- }
- changes->map.changed|= XkbKeySymsMask;
- changes->map.first_key_sym = first;
- changes->map.num_key_syms = (last-first+1);
-
- s= 0;
- for (i=xkb->min_key_code;i<=xkb->max_key_code;i++) {
- if (XkbKeyNumGroups(xkb,i)>s)
- s= XkbKeyNumGroups(xkb,i);
- }
- if (s!=xkb->ctrls->num_groups) {
- xkbControlsNotify cn;
- XkbControlsRec old;
- cn.keycode= 0;
- cn.eventType= 0;
- cn.requestMajor= XkbReqCode;
- cn.requestMinor= X_kbSetMap;
- old= *xkb->ctrls;
- xkb->ctrls->num_groups= s;
- if (XkbComputeControlsNotify(dev,&old,xkb->ctrls,&cn,FALSE))
- XkbSendControlsNotify(dev,&cn);
- }
- return (char *)wire;
-}
-
-static char *
-SetKeyActions( XkbDescPtr xkb,
- xkbSetMapReq * req,
- CARD8 * wire,
- XkbChangesPtr changes)
-{
-register unsigned i,first,last;
-CARD8 * nActs = wire;
-XkbAction * newActs;
-
- wire+= XkbPaddedSize(req->nKeyActs);
- for (i=0;i<req->nKeyActs;i++) {
- if (nActs[i]==0)
- xkb->server->key_acts[i+req->firstKeyAct]= 0;
- else {
- newActs= XkbResizeKeyActions(xkb,i+req->firstKeyAct,nActs[i]);
- memcpy((char *)newActs,(char *)wire,
- nActs[i]*SIZEOF(xkbActionWireDesc));
- wire+= nActs[i]*SIZEOF(xkbActionWireDesc);
- }
- }
- first= req->firstKeyAct;
- last= (first+req->nKeyActs-1);
- if (changes->map.changed&XkbKeyActionsMask) {
- int oldLast;
- oldLast= changes->map.first_key_act+changes->map.num_key_acts-1;
- if (changes->map.first_key_act<first)
- first= changes->map.first_key_act;
- if (oldLast>last)
- last= oldLast;
- }
- changes->map.changed|= XkbKeyActionsMask;
- changes->map.first_key_act= first;
- changes->map.num_key_acts= (last-first+1);
- return (char *)wire;
-}
-
-static char *
-SetKeyBehaviors( XkbSrvInfoPtr xkbi,
- xkbSetMapReq *req,
- xkbBehaviorWireDesc *wire,
- XkbChangesPtr changes)
-{
-register unsigned i;
-int maxRG = -1;
-XkbDescPtr xkb = xkbi->desc;
-XkbServerMapPtr server = xkb->server;
-unsigned first,last;
-
- first= req->firstKeyBehavior;
- last= req->firstKeyBehavior+req->nKeyBehaviors-1;
- memset(&server->behaviors[first], 0, req->nKeyBehaviors*sizeof(XkbBehavior));
- for (i=0;i<req->totalKeyBehaviors;i++) {
- if ((server->behaviors[wire->key].type&XkbKB_Permanent)==0) {
- server->behaviors[wire->key].type= wire->type;
- server->behaviors[wire->key].data= wire->data;
- if ((wire->type==XkbKB_RadioGroup)&&(((int)wire->data)>maxRG))
- maxRG= wire->data + 1;
- }
- wire++;
- }
-
- if (maxRG>(int)xkbi->nRadioGroups) {
- int sz = maxRG*sizeof(XkbRadioGroupRec);
- if (xkbi->radioGroups)
- xkbi->radioGroups= realloc(xkbi->radioGroups,sz);
- else xkbi->radioGroups= calloc(1, sz);
- if (xkbi->radioGroups) {
- if (xkbi->nRadioGroups)
- memset(&xkbi->radioGroups[xkbi->nRadioGroups], 0,
- (maxRG-xkbi->nRadioGroups)*sizeof(XkbRadioGroupRec));
- xkbi->nRadioGroups= maxRG;
- }
- else xkbi->nRadioGroups= 0;
- /* should compute members here */
- }
- if (changes->map.changed&XkbKeyBehaviorsMask) {
- unsigned oldLast;
- oldLast= changes->map.first_key_behavior+
- changes->map.num_key_behaviors-1;
- if (changes->map.first_key_behavior<req->firstKeyBehavior)
- first= changes->map.first_key_behavior;
- if (oldLast>last)
- last= oldLast;
- }
- changes->map.changed|= XkbKeyBehaviorsMask;
- changes->map.first_key_behavior = first;
- changes->map.num_key_behaviors = (last-first+1);
- return (char *)wire;
-}
-
-static char *
-SetVirtualMods(XkbSrvInfoPtr xkbi,xkbSetMapReq *req,CARD8 *wire,
- XkbChangesPtr changes)
-{
-register int i,bit,nMods;
-XkbServerMapPtr srv = xkbi->desc->server;
-
- if (((req->present&XkbVirtualModsMask)==0)||(req->virtualMods==0))
- return (char *)wire;
- for (i=nMods=0,bit=1;i<XkbNumVirtualMods;i++,bit<<=1) {
- if (req->virtualMods&bit) {
- if (srv->vmods[i]!=wire[nMods]) {
- changes->map.changed|= XkbVirtualModsMask;
- changes->map.vmods|= bit;
- srv->vmods[i]= wire[nMods];
- }
- nMods++;
- }
- }
- return (char *)(wire+XkbPaddedSize(nMods));
-}
-
-static char *
-SetKeyExplicit(XkbSrvInfoPtr xkbi,xkbSetMapReq *req,CARD8 *wire,
- XkbChangesPtr changes)
-{
-register unsigned i,first,last;
-XkbServerMapPtr xkb = xkbi->desc->server;
-CARD8 * start;
-
- start= wire;
- first= req->firstKeyExplicit;
- last= req->firstKeyExplicit+req->nKeyExplicit-1;
- memset(&xkb->explicit[first], 0, req->nKeyExplicit);
- for (i=0;i<req->totalKeyExplicit;i++,wire+= 2) {
- xkb->explicit[wire[0]]= wire[1];
- }
- if (first>0) {
- if (changes->map.changed&XkbExplicitComponentsMask) {
- int oldLast;
- oldLast= changes->map.first_key_explicit+
- changes->map.num_key_explicit-1;
- if (changes->map.first_key_explicit<first)
- first= changes->map.first_key_explicit;
- if (oldLast>last)
- last= oldLast;
- }
- changes->map.first_key_explicit= first;
- changes->map.num_key_explicit= (last-first)+1;
- }
- wire+= XkbPaddedSize(wire-start)-(wire-start);
- return (char *)wire;
-}
-
-static char *
-SetModifierMap( XkbSrvInfoPtr xkbi,
- xkbSetMapReq * req,
- CARD8 * wire,
- XkbChangesPtr changes)
-{
-register unsigned i,first,last;
-XkbClientMapPtr xkb = xkbi->desc->map;
-CARD8 * start;
-
- start= wire;
- first= req->firstModMapKey;
- last= req->firstModMapKey+req->nModMapKeys-1;
- memset(&xkb->modmap[first], 0, req->nModMapKeys);
- for (i=0;i<req->totalModMapKeys;i++,wire+= 2) {
- xkb->modmap[wire[0]]= wire[1];
- }
- if (first>0) {
- if (changes->map.changed&XkbModifierMapMask) {
- int oldLast;
- oldLast= changes->map.first_modmap_key+
- changes->map.num_modmap_keys-1;
- if (changes->map.first_modmap_key<first)
- first= changes->map.first_modmap_key;
- if (oldLast>last)
- last= oldLast;
- }
- changes->map.first_modmap_key= first;
- changes->map.num_modmap_keys= (last-first)+1;
- }
- wire+= XkbPaddedSize(wire-start)-(wire-start);
- return (char *)wire;
-}
-
-static char *
-SetVirtualModMap( XkbSrvInfoPtr xkbi,
- xkbSetMapReq * req,
- xkbVModMapWireDesc * wire,
- XkbChangesPtr changes)
-{
-register unsigned i,first,last;
-XkbServerMapPtr srv = xkbi->desc->server;
-
- first= req->firstVModMapKey;
- last= req->firstVModMapKey+req->nVModMapKeys-1;
- memset(&srv->vmodmap[first], 0, req->nVModMapKeys*sizeof(unsigned short));
- for (i=0;i<req->totalVModMapKeys;i++,wire++) {
- srv->vmodmap[wire->key]= wire->vmods;
- }
- if (first>0) {
- if (changes->map.changed&XkbVirtualModMapMask) {
- int oldLast;
- oldLast= changes->map.first_vmodmap_key+
- changes->map.num_vmodmap_keys-1;
- if (changes->map.first_vmodmap_key<first)
- first= changes->map.first_vmodmap_key;
- if (oldLast>last)
- last= oldLast;
- }
- changes->map.first_vmodmap_key= first;
- changes->map.num_vmodmap_keys= (last-first)+1;
- }
- return (char *)wire;
-}
-
-/**
- * Check if the given request can be applied to the given device but don't
- * actually do anything..
- */
-static int
-_XkbSetMapChecks(ClientPtr client, DeviceIntPtr dev, xkbSetMapReq *req, char* values)
-{
- XkbSrvInfoPtr xkbi;
- XkbDescPtr xkb;
- int error;
- int nTypes = 0, nActions;
- CARD8 mapWidths[XkbMaxLegalKeyCode + 1] = {0};
- CARD16 symsPerKey[XkbMaxLegalKeyCode + 1] = {0};
- XkbSymMapPtr map;
- int i;
-
- xkbi= dev->key->xkbInfo;
- xkb = xkbi->desc;
-
- if ((xkb->min_key_code != req->minKeyCode)||
- (xkb->max_key_code != req->maxKeyCode)) {
- if (client->vMajor!=1) { /* pre 1.0 versions of Xlib have a bug */
- req->minKeyCode= xkb->min_key_code;
- req->maxKeyCode= xkb->max_key_code;
- }
- else {
- if (!XkbIsLegalKeycode(req->minKeyCode)) {
- client->errorValue = _XkbErrCode3(2, req->minKeyCode, req->maxKeyCode);
- return BadValue;
- }
- if (req->minKeyCode > req->maxKeyCode) {
- client->errorValue = _XkbErrCode3(3, req->minKeyCode, req->maxKeyCode);
- return BadMatch;
- }
- }
- }
-
- if ((req->present & XkbKeyTypesMask) &&
- (!CheckKeyTypes(client,xkb,req,(xkbKeyTypeWireDesc **)&values,
- &nTypes,mapWidths))) {
- client->errorValue = nTypes;
- return BadValue;
- }
-
- /* symsPerKey/mapWidths must be filled regardless of client-side flags */
- map = &xkb->map->key_sym_map[xkb->min_key_code];
- for (i=xkb->min_key_code;i<xkb->max_key_code;i++,map++) {
- register int g,ng,w;
- ng= XkbNumGroups(map->group_info);
- for (w=g=0;g<ng;g++) {
- if (map->kt_index[g]>=(unsigned)nTypes) {
- client->errorValue = _XkbErrCode4(0x13,i,g,map->kt_index[g]);
- return 0;
- }
- if (mapWidths[map->kt_index[g]]>w)
- w= mapWidths[map->kt_index[g]];
- }
- symsPerKey[i] = w*ng;
- }
-
- if ((req->present & XkbKeySymsMask) &&
- (!CheckKeySyms(client,xkb,req,nTypes,mapWidths,symsPerKey,
- (xkbSymMapWireDesc **)&values,&error))) {
- client->errorValue = error;
- return BadValue;
- }
-
- if ((req->present & XkbKeyActionsMask) &&
- (!CheckKeyActions(xkb,req,nTypes,mapWidths,symsPerKey,
- (CARD8 **)&values,&nActions))) {
- client->errorValue = nActions;
- return BadValue;
- }
-
- if ((req->present & XkbKeyBehaviorsMask) &&
- (!CheckKeyBehaviors(xkb,req,(xkbBehaviorWireDesc**)&values,&error))) {
- client->errorValue = error;
- return BadValue;
- }
-
- if ((req->present & XkbVirtualModsMask) &&
- (!CheckVirtualMods(xkb,req,(CARD8 **)&values,&error))) {
- client->errorValue= error;
- return BadValue;
- }
- if ((req->present&XkbExplicitComponentsMask) &&
- (!CheckKeyExplicit(xkb,req,(CARD8 **)&values,&error))) {
- client->errorValue= error;
- return BadValue;
- }
- if ((req->present&XkbModifierMapMask) &&
- (!CheckModifierMap(xkb,req,(CARD8 **)&values,&error))) {
- client->errorValue= error;
- return BadValue;
- }
- if ((req->present&XkbVirtualModMapMask) &&
- (!CheckVirtualModMap(xkb,req,(xkbVModMapWireDesc **)&values,&error))) {
- client->errorValue= error;
- return BadValue;
- }
-
- if (((values-((char *)req))/4)!= req->length) {
- ErrorF("[xkb] Internal error! Bad length in XkbSetMap (after check)\n");
- client->errorValue = values-((char *)&req[1]);
- return BadLength;
- }
-
- return Success;
-}
-
-/**
- * Apply the given request on the given device.
- */
-static int
-_XkbSetMap(ClientPtr client, DeviceIntPtr dev, xkbSetMapReq *req, char *values)
-{
- XkbEventCauseRec cause;
- XkbChangesRec change;
- Bool sentNKN;
- XkbSrvInfoPtr xkbi;
- XkbDescPtr xkb;
-
- xkbi= dev->key->xkbInfo;
- xkb = xkbi->desc;
-
- XkbSetCauseXkbReq(&cause,X_kbSetMap,client);
- memset(&change, 0, sizeof(change));
- sentNKN = FALSE;
- if ((xkb->min_key_code!=req->minKeyCode)||
- (xkb->max_key_code!=req->maxKeyCode)) {
- Status status;
- xkbNewKeyboardNotify nkn;
- nkn.deviceID = nkn.oldDeviceID = dev->id;
- nkn.oldMinKeyCode = xkb->min_key_code;
- nkn.oldMaxKeyCode = xkb->max_key_code;
- status= XkbChangeKeycodeRange(xkb, req->minKeyCode,
- req->maxKeyCode, &change);
- if (status != Success)
- return status; /* oh-oh. what about the other keyboards? */
- nkn.minKeyCode = xkb->min_key_code;
- nkn.maxKeyCode = xkb->max_key_code;
- nkn.requestMajor = XkbReqCode;
- nkn.requestMinor = X_kbSetMap;
- nkn.changed = XkbNKN_KeycodesMask;
- XkbSendNewKeyboardNotify(dev,&nkn);
- sentNKN = TRUE;
- }
-
- if (req->present&XkbKeyTypesMask) {
- values = SetKeyTypes(xkb,req,(xkbKeyTypeWireDesc *)values,&change);
- if (!values) goto allocFailure;
- }
- if (req->present&XkbKeySymsMask) {
- values = SetKeySyms(client,xkb,req,(xkbSymMapWireDesc *)values,&change,dev);
- if (!values) goto allocFailure;
- }
- if (req->present&XkbKeyActionsMask) {
- values = SetKeyActions(xkb,req,(CARD8 *)values,&change);
- if (!values) goto allocFailure;
- }
- if (req->present&XkbKeyBehaviorsMask) {
- values= SetKeyBehaviors(xkbi,req,(xkbBehaviorWireDesc *)values,&change);
- if (!values) goto allocFailure;
- }
- if (req->present&XkbVirtualModsMask)
- values= SetVirtualMods(xkbi,req,(CARD8 *)values,&change);
- if (req->present&XkbExplicitComponentsMask)
- values= SetKeyExplicit(xkbi,req,(CARD8 *)values,&change);
- if (req->present&XkbModifierMapMask)
- values= SetModifierMap(xkbi,req,(CARD8 *)values,&change);
- if (req->present&XkbVirtualModMapMask)
- values= SetVirtualModMap(xkbi,req,(xkbVModMapWireDesc *)values,&change);
- if (((values-((char *)req))/4)!=req->length) {
- ErrorF("[xkb] Internal error! Bad length in XkbSetMap (after set)\n");
- client->errorValue = values-((char *)&req[1]);
- return BadLength;
- }
- if (req->flags&XkbSetMapRecomputeActions) {
- KeyCode first,last,firstMM,lastMM;
- if (change.map.num_key_syms>0) {
- first= change.map.first_key_sym;
- last= first+change.map.num_key_syms-1;
- }
- else first= last= 0;
- if (change.map.num_modmap_keys>0) {
- firstMM= change.map.first_modmap_key;
- lastMM= first+change.map.num_modmap_keys-1;
- }
- else firstMM= lastMM= 0;
- if ((last>0) && (lastMM>0)) {
- if (firstMM<first)
- first= firstMM;
- if (lastMM>last)
- last= lastMM;
- }
- else if (lastMM>0) {
- first= firstMM;
- last= lastMM;
- }
- if (last>0) {
- unsigned check= 0;
- XkbUpdateActions(dev,first,(last-first+1),&change,&check,&cause);
- if (check)
- XkbCheckSecondaryEffects(xkbi,check,&change,&cause);
- }
- }
- if (!sentNKN)
- XkbSendNotification(dev,&change,&cause);
-
- return Success;
-allocFailure:
- return BadAlloc;
-}
-
-
-int
-ProcXkbSetMap(ClientPtr client)
-{
- DeviceIntPtr dev;
- char * tmp;
- int rc;
-
- REQUEST(xkbSetMapReq);
- REQUEST_AT_LEAST_SIZE(xkbSetMapReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixManageAccess);
- CHK_MASK_LEGAL(0x01,stuff->present,XkbAllMapComponentsMask);
-
- tmp = (char *)&stuff[1];
-
- /* Check if we can to the SetMap on the requested device. If this
- succeeds, do the same thing for all extension devices (if needed).
- If any of them fails, fail. */
- rc = _XkbSetMapChecks(client, dev, stuff, tmp);
-
- if (rc != Success)
- return rc;
-
- if (stuff->deviceSpec == XkbUseCoreKbd)
- {
- DeviceIntPtr other;
- for (other = inputInfo.devices; other; other = other->next)
- {
- if ((other != dev) && other->key && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev)
- {
- rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
- if (rc == Success)
- {
- rc = _XkbSetMapChecks(client, other, stuff, tmp);
- if (rc != Success)
- return rc;
- }
- }
- }
- }
-
- /* We know now that we will succed with the SetMap. In theory anyway. */
- rc = _XkbSetMap(client, dev, stuff, tmp);
- if (rc != Success)
- return rc;
-
- if (stuff->deviceSpec == XkbUseCoreKbd)
- {
- DeviceIntPtr other;
- for (other = inputInfo.devices; other; other = other->next)
- {
- if ((other != dev) && other->key && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev)
- {
- rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
- if (rc == Success)
- _XkbSetMap(client, other, stuff, tmp);
- /* ignore rc. if the SetMap failed although the check above
- reported true there isn't much we can do. we still need to
- set all other devices, hoping that at least they stay in
- sync. */
- }
- }
- }
-
- return Success;
-}
-
-/***====================================================================***/
-
-static Status
-XkbComputeGetCompatMapReplySize( XkbCompatMapPtr compat,
- xkbGetCompatMapReply * rep)
-{
-unsigned size,nGroups;
-
- nGroups= 0;
- if (rep->groups!=0) {
- register int i,bit;
- for (i=0,bit=1;i<XkbNumKbdGroups;i++,bit<<=1) {
- if (rep->groups&bit)
- nGroups++;
- }
- }
- size= nGroups*SIZEOF(xkbModsWireDesc);
- size+= (rep->nSI*SIZEOF(xkbSymInterpretWireDesc));
- rep->length= size/4;
- return Success;
-}
-
-static int
-XkbSendCompatMap( ClientPtr client,
- XkbCompatMapPtr compat,
- xkbGetCompatMapReply * rep)
-{
-char * data;
-int size;
-
- size= rep->length*4;
- if (size>0) {
- data = malloc(size);
- if (data) {
- register unsigned i,bit;
- xkbModsWireDesc * grp;
- XkbSymInterpretPtr sym= &compat->sym_interpret[rep->firstSI];
- xkbSymInterpretWireDesc *wire = (xkbSymInterpretWireDesc *)data;
- for (i=0;i<rep->nSI;i++,sym++,wire++) {
- wire->sym= sym->sym;
- wire->mods= sym->mods;
- wire->match= sym->match;
- wire->virtualMod= sym->virtual_mod;
- wire->flags= sym->flags;
- memcpy((char*)&wire->act,(char*)&sym->act,sz_xkbActionWireDesc);
- if (client->swapped) {
- register int n;
- swapl(&wire->sym,n);
- }
- }
- if (rep->groups) {
- grp = (xkbModsWireDesc *)wire;
- for (i=0,bit=1;i<XkbNumKbdGroups;i++,bit<<=1) {
- if (rep->groups&bit) {
- grp->mask= compat->groups[i].mask;
- grp->realMods= compat->groups[i].real_mods;
- grp->virtualMods= compat->groups[i].vmods;
- if (client->swapped) {
- register int n;
- swaps(&grp->virtualMods,n);
- }
- grp++;
- }
- }
- wire= (xkbSymInterpretWireDesc*)grp;
- }
- }
- else return BadAlloc;
- }
- else data= NULL;
-
- if (client->swapped) {
- register int n;
- swaps(&rep->sequenceNumber,n);
- swapl(&rep->length,n);
- swaps(&rep->firstSI,n);
- swaps(&rep->nSI,n);
- swaps(&rep->nTotalSI,n);
- }
-
- WriteToClient(client, SIZEOF(xkbGetCompatMapReply), (char *)rep);
- if (data) {
- WriteToClient(client, size, data);
- free((char *)data);
- }
- return Success;
-}
-
-int
-ProcXkbGetCompatMap(ClientPtr client)
-{
- xkbGetCompatMapReply rep;
- DeviceIntPtr dev;
- XkbDescPtr xkb;
- XkbCompatMapPtr compat;
-
- REQUEST(xkbGetCompatMapReq);
- REQUEST_SIZE_MATCH(xkbGetCompatMapReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
-
- xkb = dev->key->xkbInfo->desc;
- compat= xkb->compat;
-
- rep.type = X_Reply;
- rep.deviceID = dev->id;
- rep.sequenceNumber = client->sequence;
- rep.length = 0;
- rep.firstSI = stuff->firstSI;
- rep.nSI = stuff->nSI;
- if (stuff->getAllSI) {
- rep.firstSI = 0;
- rep.nSI = compat->num_si;
- }
- else if ((((unsigned)stuff->nSI)>0)&&
- ((unsigned)(stuff->firstSI+stuff->nSI-1)>=compat->num_si)) {
- client->errorValue = _XkbErrCode2(0x05,compat->num_si);
- return BadValue;
- }
- rep.nTotalSI = compat->num_si;
- rep.groups= stuff->groups;
- XkbComputeGetCompatMapReplySize(compat,&rep);
- return XkbSendCompatMap(client,compat,&rep);
-}
-
-/**
- * Apply the given request on the given device.
- * If dryRun is TRUE, then value checks are performed, but the device isn't
- * modified.
- */
-static int
-_XkbSetCompatMap(ClientPtr client, DeviceIntPtr dev,
- xkbSetCompatMapReq *req, char* data, BOOL dryRun)
-{
- XkbSrvInfoPtr xkbi;
- XkbDescPtr xkb;
- XkbCompatMapPtr compat;
- int nGroups;
- unsigned i,bit;
-
- xkbi = dev->key->xkbInfo;
- xkb = xkbi->desc;
- compat = xkb->compat;
-
- if ((req->nSI>0)||(req->truncateSI)) {
- xkbSymInterpretWireDesc *wire;
- if (req->firstSI>compat->num_si) {
- client->errorValue = _XkbErrCode2(0x02,compat->num_si);
- return BadValue;
- }
- wire= (xkbSymInterpretWireDesc *)data;
- wire+= req->nSI;
- data = (char *)wire;
- }
-
- nGroups= 0;
- if (req->groups!=0) {
- for (i=0,bit=1;i<XkbNumKbdGroups;i++,bit<<=1) {
- if ( req->groups&bit )
- nGroups++;
- }
- }
- data+= nGroups*SIZEOF(xkbModsWireDesc);
- if (((data-((char *)req))/4)!=req->length) {
- return BadLength;
- }
-
- /* Done all the checks we can do */
- if (dryRun)
- return Success;
-
- data = (char *)&req[1];
- if (req->nSI>0) {
- xkbSymInterpretWireDesc *wire = (xkbSymInterpretWireDesc *)data;
- XkbSymInterpretPtr sym;
- if ((unsigned)(req->firstSI+req->nSI)>compat->num_si) {
- compat->num_si= req->firstSI+req->nSI;
- compat->sym_interpret= realloc(compat->sym_interpret,
- compat->num_si * sizeof(XkbSymInterpretRec));
- if (!compat->sym_interpret) {
- compat->num_si= 0;
- return BadAlloc;
- }
- }
- else if (req->truncateSI) {
- compat->num_si = req->firstSI+req->nSI;
- }
- sym = &compat->sym_interpret[req->firstSI];
- for (i=0;i<req->nSI;i++,wire++,sym++) {
- if (client->swapped) {
- int n;
- swapl(&wire->sym,n);
- }
- sym->sym= wire->sym;
- sym->mods= wire->mods;
- sym->match= wire->match;
- sym->flags= wire->flags;
- sym->virtual_mod= wire->virtualMod;
- memcpy((char *)&sym->act,(char *)&wire->act,
- SIZEOF(xkbActionWireDesc));
- }
- data = (char *)wire;
- }
- else if (req->truncateSI) {
- compat->num_si = req->firstSI;
- }
-
- if (req->groups!=0) {
- unsigned i, bit;
- xkbModsWireDesc *wire = (xkbModsWireDesc *)data;
- for (i = 0, bit = 1; i < XkbNumKbdGroups; i++, bit <<= 1) {
- if (req->groups & bit) {
- if (client->swapped) {
- int n;
- swaps(&wire->virtualMods,n);
- }
- compat->groups[i].mask= wire->realMods;
- compat->groups[i].real_mods= wire->realMods;
- compat->groups[i].vmods= wire->virtualMods;
- if (wire->virtualMods!=0) {
- unsigned tmp;
- tmp= XkbMaskForVMask(xkb,wire->virtualMods);
- compat->groups[i].mask|= tmp;
- }
- data+= SIZEOF(xkbModsWireDesc);
- wire= (xkbModsWireDesc *)data;
- }
- }
- }
- i= XkbPaddedSize((data-((char *)req)));
- if ((i/4)!=req->length) {
- ErrorF("[xkb] Internal length error on read in _XkbSetCompatMap\n");
- return BadLength;
- }
-
- if (dev->xkb_interest) {
- xkbCompatMapNotify ev;
- ev.deviceID = dev->id;
- ev.changedGroups = req->groups;
- ev.firstSI = req->firstSI;
- ev.nSI = req->nSI;
- ev.nTotalSI = compat->num_si;
- XkbSendCompatMapNotify(dev,&ev);
- }
-
- if (req->recomputeActions) {
- XkbChangesRec change;
- unsigned check;
- XkbEventCauseRec cause;
-
- XkbSetCauseXkbReq(&cause,X_kbSetCompatMap,client);
- memset(&change, 0, sizeof(XkbChangesRec));
- XkbUpdateActions(dev,xkb->min_key_code,XkbNumKeys(xkb),&change,&check,
- &cause);
- if (check)
- XkbCheckSecondaryEffects(xkbi,check,&change,&cause);
- XkbSendNotification(dev,&change,&cause);
- }
- return Success;
-}
-
-int
-ProcXkbSetCompatMap(ClientPtr client)
-{
- DeviceIntPtr dev;
- char *data;
- int rc;
-
- REQUEST(xkbSetCompatMapReq);
- REQUEST_AT_LEAST_SIZE(xkbSetCompatMapReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixManageAccess);
-
- data = (char *)&stuff[1];
-
- /* check first using a dry-run */
- rc = _XkbSetCompatMap(client, dev, stuff, data, TRUE);
- if (rc != Success)
- return rc;
- if (stuff->deviceSpec == XkbUseCoreKbd)
- {
- DeviceIntPtr other;
- for (other = inputInfo.devices; other; other = other->next)
- {
- if ((other != dev) && other->key && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev)
- {
- rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
- if (rc == Success)
- {
- /* dry-run */
- rc = _XkbSetCompatMap(client, other, stuff, data, TRUE);
- if (rc != Success)
- return rc;
- }
- }
- }
- }
-
- /* Yay, the dry-runs succeed. Let's apply */
- rc = _XkbSetCompatMap(client, dev, stuff, data, FALSE);
- if (rc != Success)
- return rc;
- if (stuff->deviceSpec == XkbUseCoreKbd)
- {
- DeviceIntPtr other;
- for (other = inputInfo.devices; other; other = other->next)
- {
- if ((other != dev) && other->key && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev)
- {
- rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
- if (rc == Success)
- {
- rc = _XkbSetCompatMap(client, other, stuff, data, FALSE);
- if (rc != Success)
- return rc;
- }
- }
- }
- }
-
- return Success;
-}
-
-/***====================================================================***/
-
-int
-ProcXkbGetIndicatorState(ClientPtr client)
-{
- xkbGetIndicatorStateReply rep;
- XkbSrvLedInfoPtr sli;
- DeviceIntPtr dev;
- register int i;
-
- REQUEST(xkbGetIndicatorStateReq);
- REQUEST_SIZE_MATCH(xkbGetIndicatorStateReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixReadAccess);
-
- sli= XkbFindSrvLedInfo(dev,XkbDfltXIClass,XkbDfltXIId,
- XkbXI_IndicatorStateMask);
- if (!sli)
- return BadAlloc;
-
- rep.type = X_Reply;
- rep.sequenceNumber = client->sequence;
- rep.length = 0;
- rep.deviceID = dev->id;
- rep.state = sli->effectiveState;
-
- if (client->swapped) {
- swaps(&rep.sequenceNumber,i);
- swapl(&rep.state,i);
- }
- WriteToClient(client, SIZEOF(xkbGetIndicatorStateReply), (char *)&rep);
- return Success;
-}
-
-/***====================================================================***/
-
-static Status
-XkbComputeGetIndicatorMapReplySize(
- XkbIndicatorPtr indicators,
- xkbGetIndicatorMapReply *rep)
-{
-register int i,bit;
-int nIndicators;
-
- rep->realIndicators = indicators->phys_indicators;
- for (i=nIndicators=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
- if (rep->which&bit)
- nIndicators++;
- }
- rep->length = (nIndicators*SIZEOF(xkbIndicatorMapWireDesc))/4;
- return Success;
-}
-
-static int
-XkbSendIndicatorMap( ClientPtr client,
- XkbIndicatorPtr indicators,
- xkbGetIndicatorMapReply * rep)
-{
-int length;
-CARD8 * map;
-register int i;
-register unsigned bit;
-
- length = rep->length*4;
- if (length>0) {
- CARD8 *to;
- to= map= malloc(length);
- if (map) {
- xkbIndicatorMapWireDesc *wire = (xkbIndicatorMapWireDesc *)to;
- for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
- if (rep->which&bit) {
- wire->flags= indicators->maps[i].flags;
- wire->whichGroups= indicators->maps[i].which_groups;
- wire->groups= indicators->maps[i].groups;
- wire->whichMods= indicators->maps[i].which_mods;
- wire->mods= indicators->maps[i].mods.mask;
- wire->realMods= indicators->maps[i].mods.real_mods;
- wire->virtualMods= indicators->maps[i].mods.vmods;
- wire->ctrls= indicators->maps[i].ctrls;
- if (client->swapped) {
- register int n;
- swaps(&wire->virtualMods,n);
- swapl(&wire->ctrls,n);
- }
- wire++;
- }
- }
- to = (CARD8 *)wire;
- if ((to-map)!=length) {
- client->errorValue = _XkbErrCode2(0xff,length);
- free(map);
- return BadLength;
- }
- }
- else return BadAlloc;
- }
- else map = NULL;
- if (client->swapped) {
- swaps(&rep->sequenceNumber,i);
- swapl(&rep->length,i);
- swapl(&rep->which,i);
- swapl(&rep->realIndicators,i);
- }
- WriteToClient(client, SIZEOF(xkbGetIndicatorMapReply), (char *)rep);
- if (map) {
- WriteToClient(client, length, (char *)map);
- free((char *)map);
- }
- return Success;
-}
-
-int
-ProcXkbGetIndicatorMap(ClientPtr client)
-{
-xkbGetIndicatorMapReply rep;
-DeviceIntPtr dev;
-XkbDescPtr xkb;
-XkbIndicatorPtr leds;
-
- REQUEST(xkbGetIndicatorMapReq);
- REQUEST_SIZE_MATCH(xkbGetIndicatorMapReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
-
- xkb= dev->key->xkbInfo->desc;
- leds= xkb->indicators;
-
- rep.type = X_Reply;
- rep.sequenceNumber = client->sequence;
- rep.length = 0;
- rep.deviceID = dev->id;
- rep.which = stuff->which;
- XkbComputeGetIndicatorMapReplySize(leds,&rep);
- return XkbSendIndicatorMap(client,leds,&rep);
-}
-
-/**
- * Apply the given map to the given device. Which specifies which components
- * to apply.
- */
-static int
-_XkbSetIndicatorMap(ClientPtr client, DeviceIntPtr dev,
- int which, xkbIndicatorMapWireDesc *desc)
-{
- XkbSrvInfoPtr xkbi;
- XkbSrvLedInfoPtr sli;
- XkbEventCauseRec cause;
- int i, bit;
-
- xkbi = dev->key->xkbInfo;
-
- sli= XkbFindSrvLedInfo(dev, XkbDfltXIClass, XkbDfltXIId,
- XkbXI_IndicatorMapsMask);
- if (!sli)
- return BadAlloc;
-
- for (i = 0, bit = 1; i < XkbNumIndicators; i++, bit <<= 1) {
- if (which & bit) {
- sli->maps[i].flags = desc->flags;
- sli->maps[i].which_groups = desc->whichGroups;
- sli->maps[i].groups = desc->groups;
- sli->maps[i].which_mods = desc->whichMods;
- sli->maps[i].mods.mask = desc->mods;
- sli->maps[i].mods.real_mods = desc->mods;
- sli->maps[i].mods.vmods= desc->virtualMods;
- sli->maps[i].ctrls = desc->ctrls;
- if (desc->virtualMods!=0) {
- unsigned tmp;
- tmp= XkbMaskForVMask(xkbi->desc,desc->virtualMods);
- sli->maps[i].mods.mask= desc->mods|tmp;
- }
- desc++;
- }
- }
-
- XkbSetCauseXkbReq(&cause,X_kbSetIndicatorMap,client);
- XkbApplyLedMapChanges(dev,sli,which,NULL,NULL,&cause);
-
- return Success;
-}
-
-int
-ProcXkbSetIndicatorMap(ClientPtr client)
-{
- int i, bit;
- int nIndicators;
- DeviceIntPtr dev;
- xkbIndicatorMapWireDesc *from;
- int rc;
-
- REQUEST(xkbSetIndicatorMapReq);
- REQUEST_AT_LEAST_SIZE(xkbSetIndicatorMapReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixSetAttrAccess);
-
- if (stuff->which==0)
- return Success;
-
- for (nIndicators=i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
- if (stuff->which&bit)
- nIndicators++;
- }
- if (stuff->length!=((SIZEOF(xkbSetIndicatorMapReq)+
- (nIndicators*SIZEOF(xkbIndicatorMapWireDesc)))/4)) {
- return BadLength;
- }
-
- from = (xkbIndicatorMapWireDesc *)&stuff[1];
- for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
- if (stuff->which&bit) {
- if (client->swapped) {
- int n;
- swaps(&from->virtualMods,n);
- swapl(&from->ctrls,n);
- }
- CHK_MASK_LEGAL(i,from->whichGroups,XkbIM_UseAnyGroup);
- CHK_MASK_LEGAL(i,from->whichMods,XkbIM_UseAnyMods);
- from++;
- }
- }
-
- from = (xkbIndicatorMapWireDesc *)&stuff[1];
- rc = _XkbSetIndicatorMap(client, dev, stuff->which, from);
- if (rc != Success)
- return rc;
-
- if (stuff->deviceSpec == XkbUseCoreKbd)
- {
- DeviceIntPtr other;
- for (other = inputInfo.devices; other; other = other->next)
- {
- if ((other != dev) && other->key && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev)
- {
- rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess);
- if (rc == Success)
- _XkbSetIndicatorMap(client, other, stuff->which, from);
- }
- }
- }
-
- return Success;
-}
-
-/***====================================================================***/
-
-int
-ProcXkbGetNamedIndicator(ClientPtr client)
-{
- DeviceIntPtr dev;
- xkbGetNamedIndicatorReply rep;
- register int i = 0;
- XkbSrvLedInfoPtr sli;
- XkbIndicatorMapPtr map = NULL;
-
- REQUEST(xkbGetNamedIndicatorReq);
- REQUEST_SIZE_MATCH(xkbGetNamedIndicatorReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_LED_DEVICE(dev, stuff->deviceSpec, client, DixReadAccess);
- CHK_ATOM_ONLY(stuff->indicator);
-
- sli= XkbFindSrvLedInfo(dev,stuff->ledClass,stuff->ledID,0);
- if (!sli)
- return BadAlloc;
-
- i= 0;
- map= NULL;
- if ((sli->names)&&(sli->maps)) {
- for (i=0;i<XkbNumIndicators;i++) {
- if (stuff->indicator==sli->names[i]) {
- map= &sli->maps[i];
- break;
- }
- }
- }
-
- rep.type= X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- rep.deviceID = dev->id;
- rep.indicator= stuff->indicator;
- if (map!=NULL) {
- rep.found= TRUE;
- rep.on= ((sli->effectiveState&(1<<i))!=0);
- rep.realIndicator= ((sli->physIndicators&(1<<i))!=0);
- rep.ndx= i;
- rep.flags= map->flags;
- rep.whichGroups= map->which_groups;
- rep.groups= map->groups;
- rep.whichMods= map->which_mods;
- rep.mods= map->mods.mask;
- rep.realMods= map->mods.real_mods;
- rep.virtualMods= map->mods.vmods;
- rep.ctrls= map->ctrls;
- rep.supported= TRUE;
- }
- else {
- rep.found= FALSE;
- rep.on= FALSE;
- rep.realIndicator= FALSE;
- rep.ndx= XkbNoIndicator;
- rep.flags= 0;
- rep.whichGroups= 0;
- rep.groups= 0;
- rep.whichMods= 0;
- rep.mods= 0;
- rep.realMods= 0;
- rep.virtualMods= 0;
- rep.ctrls= 0;
- rep.supported= TRUE;
- }
- if ( client->swapped ) {
- register int n;
- swapl(&rep.length,n);
- swaps(&rep.sequenceNumber,n);
- swapl(&rep.indicator,n);
- swaps(&rep.virtualMods,n);
- swapl(&rep.ctrls,n);
- }
-
- WriteToClient(client,SIZEOF(xkbGetNamedIndicatorReply), (char *)&rep);
- return Success;
-}
-
-
-/**
- * Find the IM on the device.
- * Returns the map, or NULL if the map doesn't exist.
- * If the return value is NULL, led_return is undefined. Otherwise, led_return
- * is set to the led index of the map.
- */
-static XkbIndicatorMapPtr
-_XkbFindNamedIndicatorMap(XkbSrvLedInfoPtr sli, Atom indicator,
- int *led_return)
-{
- XkbIndicatorMapPtr map;
-
- /* search for the right indicator */
- map = NULL;
- if (sli->names && sli->maps) {
- int led;
-
- for (led = 0; (led < XkbNumIndicators) && (map == NULL); led++) {
- if (sli->names[led] == indicator) {
- map= &sli->maps[led];
- *led_return = led;
- break;
- }
- }
- }
-
- return map;
-}
-
-/**
- * Creates an indicator map on the device. If dryRun is TRUE, it only checks
- * if creation is possible, but doesn't actually create it.
- */
-static int
-_XkbCreateIndicatorMap(DeviceIntPtr dev, Atom indicator,
- int ledClass, int ledID,
- XkbIndicatorMapPtr *map_return, int *led_return,
- Bool dryRun)
-{
- XkbSrvLedInfoPtr sli;
- XkbIndicatorMapPtr map;
- int led;
-
- sli = XkbFindSrvLedInfo(dev, ledClass, ledID, XkbXI_IndicatorsMask);
- if (!sli)
- return BadAlloc;
-
- map = _XkbFindNamedIndicatorMap(sli, indicator, &led);
-
- if (!map)
- {
- /* find first unused indicator maps and assign the name to it */
- for (led = 0, map = NULL; (led < XkbNumIndicators) && (map == NULL); led++) {
- if ((sli->names) && (sli->maps) && (sli->names[led] == None) &&
- (!XkbIM_InUse(&sli->maps[led])))
- {
- map = &sli->maps[led];
- if (!dryRun)
- sli->names[led] = indicator;
- break;
- }
- }
- }
-
- if (!map)
- return BadAlloc;
-
- *led_return = led;
- *map_return = map;
- return Success;
-}
-
-static int
-_XkbSetNamedIndicator(ClientPtr client, DeviceIntPtr dev,
- xkbSetNamedIndicatorReq *stuff)
-{
- unsigned int extDevReason;
- unsigned int statec, namec, mapc;
- XkbSrvLedInfoPtr sli;
- int led = 0;
- XkbIndicatorMapPtr map;
- DeviceIntPtr kbd;
- XkbEventCauseRec cause;
- xkbExtensionDeviceNotify ed;
- XkbChangesRec changes;
- int rc;
-
- rc = _XkbCreateIndicatorMap(dev, stuff->indicator, stuff->ledClass,
- stuff->ledID, &map, &led, FALSE);
- if (rc != Success || !map) /* oh-oh */
- return rc;
-
- sli = XkbFindSrvLedInfo(dev, stuff->ledClass, stuff->ledID,
- XkbXI_IndicatorsMask);
- if (!sli)
- return BadAlloc;
-
- namec = mapc = statec = 0;
- extDevReason = 0;
-
- namec |= (1<<led);
- sli->namesPresent |= ((stuff->indicator != None) ? (1 << led) : 0);
- extDevReason |= XkbXI_IndicatorNamesMask;
-
- if (stuff->setMap) {
- map->flags = stuff->flags;
- map->which_groups = stuff->whichGroups;
- map->groups = stuff->groups;
- map->which_mods = stuff->whichMods;
- map->mods.mask = stuff->realMods;
- map->mods.real_mods = stuff->realMods;
- map->mods.vmods= stuff->virtualMods;
- map->ctrls = stuff->ctrls;
- mapc|= (1<<led);
- }
-
- if ((stuff->setState) && ((map->flags & XkbIM_NoExplicit) == 0))
- {
- if (stuff->on) sli->explicitState |= (1<<led);
- else sli->explicitState &= ~(1<<led);
- statec |= ((sli->effectiveState ^ sli->explicitState) & (1 << led));
- }
-
- memset((char *)&ed, 0, sizeof(xkbExtensionDeviceNotify));
- memset((char *)&changes, 0, sizeof(XkbChangesRec));
- XkbSetCauseXkbReq(&cause,X_kbSetNamedIndicator,client);
- if (namec)
- XkbApplyLedNameChanges(dev,sli,namec,&ed,&changes,&cause);
- if (mapc)
- XkbApplyLedMapChanges(dev,sli,mapc,&ed,&changes,&cause);
- if (statec)
- XkbApplyLedStateChanges(dev,sli,statec,&ed,&changes,&cause);
-
- kbd = dev;
- if ((sli->flags&XkbSLI_HasOwnState)==0)
- kbd = inputInfo.keyboard;
- XkbFlushLedEvents(dev, kbd, sli, &ed, &changes, &cause);
-
- return Success;
-}
-
-int
-ProcXkbSetNamedIndicator(ClientPtr client)
-{
- int rc;
- DeviceIntPtr dev;
- int led = 0;
- XkbIndicatorMapPtr map;
-
- REQUEST(xkbSetNamedIndicatorReq);
- REQUEST_SIZE_MATCH(xkbSetNamedIndicatorReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_LED_DEVICE(dev, stuff->deviceSpec, client, DixSetAttrAccess);
- CHK_ATOM_ONLY(stuff->indicator);
- CHK_MASK_LEGAL(0x10,stuff->whichGroups,XkbIM_UseAnyGroup);
- CHK_MASK_LEGAL(0x11,stuff->whichMods,XkbIM_UseAnyMods);
-
- /* Dry-run for checks */
- rc = _XkbCreateIndicatorMap(dev, stuff->indicator,
- stuff->ledClass, stuff->ledID,
- &map, &led, TRUE);
- if (rc != Success || !map) /* couldn't be created or didn't exist */
- return rc;
-
- if (stuff->deviceSpec == XkbUseCoreKbd ||
- stuff->deviceSpec == XkbUseCorePtr)
- {
- DeviceIntPtr other;
- for (other = inputInfo.devices; other; other = other->next)
- {
- if ((other != dev) && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev &&
- (other->kbdfeed || other->leds) &&
- (XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess) == Success))
- {
- rc = _XkbCreateIndicatorMap(other, stuff->indicator,
- stuff->ledClass, stuff->ledID,
- &map, &led, TRUE);
- if (rc != Success || !map)
- return rc;
- }
- }
- }
-
- /* All checks passed, let's do it */
- rc = _XkbSetNamedIndicator(client, dev, stuff);
- if (rc != Success)
- return rc;
-
- if (stuff->deviceSpec == XkbUseCoreKbd ||
- stuff->deviceSpec == XkbUseCorePtr)
- {
- DeviceIntPtr other;
- for (other = inputInfo.devices; other; other = other->next)
- {
- if ((other != dev) && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev &&
- (other->kbdfeed || other->leds) &&
- (XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess) == Success))
- {
- _XkbSetNamedIndicator(client, other, stuff);
- }
- }
- }
-
- return Success;
-}
-
-/***====================================================================***/
-
-static CARD32
-_XkbCountAtoms(Atom *atoms,int maxAtoms,int *count)
-{
-register unsigned int i,bit,nAtoms;
-register CARD32 atomsPresent;
-
- for (i=nAtoms=atomsPresent=0,bit=1;i<maxAtoms;i++,bit<<=1) {
- if (atoms[i]!=None) {
- atomsPresent|= bit;
- nAtoms++;
- }
- }
- if (count)
- *count= nAtoms;
- return atomsPresent;
-}
-
-static char *
-_XkbWriteAtoms(char *wire,Atom *atoms,int maxAtoms,int swap)
-{
-register unsigned int i;
-Atom *atm;
-
- atm = (Atom *)wire;
- for (i=0;i<maxAtoms;i++) {
- if (atoms[i]!=None) {
- *atm= atoms[i];
- if (swap) {
- register int n;
- swapl(atm,n);
- }
- atm++;
- }
- }
- return (char *)atm;
-}
-
-static Status
-XkbComputeGetNamesReplySize(XkbDescPtr xkb,xkbGetNamesReply *rep)
-{
-register unsigned which,length;
-register int i;
-
- rep->minKeyCode= xkb->min_key_code;
- rep->maxKeyCode= xkb->max_key_code;
- which= rep->which;
- length= 0;
- if (xkb->names!=NULL) {
- if (which&XkbKeycodesNameMask) length++;
- if (which&XkbGeometryNameMask) length++;
- if (which&XkbSymbolsNameMask) length++;
- if (which&XkbPhysSymbolsNameMask) length++;
- if (which&XkbTypesNameMask) length++;
- if (which&XkbCompatNameMask) length++;
- }
- else which&= ~XkbComponentNamesMask;
-
- if (xkb->map!=NULL) {
- if (which&XkbKeyTypeNamesMask)
- length+= xkb->map->num_types;
- rep->nTypes= xkb->map->num_types;
- if (which&XkbKTLevelNamesMask) {
- XkbKeyTypePtr pType = xkb->map->types;
- int nKTLevels = 0;
-
- length+= XkbPaddedSize(xkb->map->num_types)/4;
- for (i=0;i<xkb->map->num_types;i++,pType++) {
- if (pType->level_names!=NULL)
- nKTLevels+= pType->num_levels;
- }
- rep->nKTLevels= nKTLevels;
- length+= nKTLevels;
- }
- }
- else {
- rep->nTypes= 0;
- rep->nKTLevels= 0;
- which&= ~(XkbKeyTypeNamesMask|XkbKTLevelNamesMask);
- }
-
- rep->minKeyCode= xkb->min_key_code;
- rep->maxKeyCode= xkb->max_key_code;
- rep->indicators= 0;
- rep->virtualMods= 0;
- rep->groupNames= 0;
- if (xkb->names!=NULL) {
- if (which&XkbIndicatorNamesMask) {
- int nLeds;
- rep->indicators=
- _XkbCountAtoms(xkb->names->indicators,XkbNumIndicators,&nLeds);
- length+= nLeds;
- if (nLeds==0)
- which&= ~XkbIndicatorNamesMask;
- }
-
- if (which&XkbVirtualModNamesMask) {
- int nVMods;
- rep->virtualMods=
- _XkbCountAtoms(xkb->names->vmods,XkbNumVirtualMods,&nVMods);
- length+= nVMods;
- if (nVMods==0)
- which&= ~XkbVirtualModNamesMask;
- }
-
- if (which&XkbGroupNamesMask) {
- int nGroups;
- rep->groupNames=
- _XkbCountAtoms(xkb->names->groups,XkbNumKbdGroups,&nGroups);
- length+= nGroups;
- if (nGroups==0)
- which&= ~XkbGroupNamesMask;
- }
-
- if ((which&XkbKeyNamesMask)&&(xkb->names->keys))
- length+= rep->nKeys;
- else which&= ~XkbKeyNamesMask;
-
- if ((which&XkbKeyAliasesMask)&&
- (xkb->names->key_aliases)&&(xkb->names->num_key_aliases>0)) {
- rep->nKeyAliases= xkb->names->num_key_aliases;
- length+= rep->nKeyAliases*2;
- }
- else {
- which&= ~XkbKeyAliasesMask;
- rep->nKeyAliases= 0;
- }
-
- if ((which&XkbRGNamesMask)&&(xkb->names->num_rg>0))
- length+= xkb->names->num_rg;
- else which&= ~XkbRGNamesMask;
- }
- else {
- which&= ~(XkbIndicatorNamesMask|XkbVirtualModNamesMask);
- which&= ~(XkbGroupNamesMask|XkbKeyNamesMask|XkbKeyAliasesMask);
- which&= ~XkbRGNamesMask;
- }
-
- rep->length= length;
- rep->which= which;
- return Success;
-}
-
-static int
-XkbSendNames(ClientPtr client,XkbDescPtr xkb,xkbGetNamesReply *rep)
-{
-register unsigned i,length,which;
-char * start;
-char * desc;
-register int n;
-
- length= rep->length*4;
- which= rep->which;
- if (client->swapped) {
- swaps(&rep->sequenceNumber,n);
- swapl(&rep->length,n);
- swapl(&rep->which,n);
- swaps(&rep->virtualMods,n);
- swapl(&rep->indicators,n);
- }
-
- start = desc = malloc(length);
- if ( !start )
- return BadAlloc;
- if (xkb->names) {
- if (which&XkbKeycodesNameMask) {
- *((CARD32 *)desc)= xkb->names->keycodes;
- if (client->swapped) {
- swapl(desc,n);
- }
- desc+= 4;
- }
- if (which&XkbGeometryNameMask) {
- *((CARD32 *)desc)= xkb->names->geometry;
- if (client->swapped) {
- swapl(desc,n);
- }
- desc+= 4;
- }
- if (which&XkbSymbolsNameMask) {
- *((CARD32 *)desc)= xkb->names->symbols;
- if (client->swapped) {
- swapl(desc,n);
- }
- desc+= 4;
- }
- if (which&XkbPhysSymbolsNameMask) {
- register CARD32 *atm= (CARD32 *)desc;
- atm[0]= (CARD32)xkb->names->phys_symbols;
- if (client->swapped) {
- swapl(&atm[0],n);
- }
- desc+= 4;
- }
- if (which&XkbTypesNameMask) {
- *((CARD32 *)desc)= (CARD32)xkb->names->types;
- if (client->swapped) {
- swapl(desc,n);
- }
- desc+= 4;
- }
- if (which&XkbCompatNameMask) {
- *((CARD32 *)desc)= (CARD32)xkb->names->compat;
- if (client->swapped) {
- swapl(desc,n);
- }
- desc+= 4;
- }
- if (which&XkbKeyTypeNamesMask) {
- register CARD32 *atm= (CARD32 *)desc;
- register XkbKeyTypePtr type= xkb->map->types;
-
- for (i=0;i<xkb->map->num_types;i++,atm++,type++) {
- *atm= (CARD32)type->name;
- if (client->swapped) {
- swapl(atm,n);
- }
- }
- desc= (char *)atm;
- }
- if (which&XkbKTLevelNamesMask && xkb->map) {
- XkbKeyTypePtr type = xkb->map->types;
- register CARD32 *atm;
- for (i=0;i<rep->nTypes;i++,type++) {
- *desc++ = type->num_levels;
- }
- desc+= XkbPaddedSize(rep->nTypes)-rep->nTypes;
-
- atm= (CARD32 *)desc;
- type = xkb->map->types;
- for (i=0;i<xkb->map->num_types;i++,type++) {
- register unsigned l;
- if (type->level_names) {
- for (l=0;l<type->num_levels;l++,atm++) {
- *atm= type->level_names[l];
- if (client->swapped) {
- swapl(atm,n);
- }
- }
- desc+= type->num_levels*4;
- }
- }
- }
- if (which&XkbIndicatorNamesMask) {
- desc= _XkbWriteAtoms(desc,xkb->names->indicators,XkbNumIndicators,
- client->swapped);
- }
- if (which&XkbVirtualModNamesMask) {
- desc= _XkbWriteAtoms(desc,xkb->names->vmods,XkbNumVirtualMods,
- client->swapped);
- }
- if (which&XkbGroupNamesMask) {
- desc= _XkbWriteAtoms(desc,xkb->names->groups,XkbNumKbdGroups,
- client->swapped);
- }
- if (which&XkbKeyNamesMask) {
- for (i=0;i<rep->nKeys;i++,desc+= sizeof(XkbKeyNameRec)) {
- *((XkbKeyNamePtr)desc)= xkb->names->keys[i+rep->firstKey];
- }
- }
- if (which&XkbKeyAliasesMask) {
- XkbKeyAliasPtr pAl;
- pAl= xkb->names->key_aliases;
- for (i=0;i<rep->nKeyAliases;i++,pAl++,desc+=2*XkbKeyNameLength) {
- *((XkbKeyAliasPtr)desc)= *pAl;
- }
- }
- if ((which&XkbRGNamesMask)&&(rep->nRadioGroups>0)) {
- register CARD32 *atm= (CARD32 *)desc;
- for (i=0;i<rep->nRadioGroups;i++,atm++) {
- *atm= (CARD32)xkb->names->radio_groups[i];
- if (client->swapped) {
- swapl(atm,n);
- }
- }
- desc+= rep->nRadioGroups*4;
- }
- }
-
- if ((desc-start)!=(length)) {
- ErrorF("[xkb] BOGUS LENGTH in write names, expected %d, got %ld\n",
- length, (unsigned long)(desc-start));
- }
- WriteToClient(client, SIZEOF(xkbGetNamesReply), (char *)rep);
- WriteToClient(client, length, start);
- free((char *)start);
- return Success;
-}
-
-int
-ProcXkbGetNames(ClientPtr client)
-{
- DeviceIntPtr dev;
- XkbDescPtr xkb;
- xkbGetNamesReply rep;
-
- REQUEST(xkbGetNamesReq);
- REQUEST_SIZE_MATCH(xkbGetNamesReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
- CHK_MASK_LEGAL(0x01,stuff->which,XkbAllNamesMask);
-
- xkb = dev->key->xkbInfo->desc;
- memset(&rep, 0, sizeof(xkbGetNamesReply));
- rep.type= X_Reply;
- rep.sequenceNumber= client->sequence;
- rep.length = 0;
- rep.deviceID = dev->id;
- rep.which = stuff->which;
- rep.nTypes = xkb->map->num_types;
- rep.firstKey = xkb->min_key_code;
- rep.nKeys = XkbNumKeys(xkb);
- if (xkb->names!=NULL) {
- rep.nKeyAliases= xkb->names->num_key_aliases;
- rep.nRadioGroups = xkb->names->num_rg;
- }
- else {
- rep.nKeyAliases= rep.nRadioGroups= 0;
- }
- XkbComputeGetNamesReplySize(xkb,&rep);
- return XkbSendNames(client,xkb,&rep);
-}
-
-/***====================================================================***/
-
-static CARD32 *
-_XkbCheckAtoms(CARD32 *wire,int nAtoms,int swapped,Atom *pError)
-{
-register int i;
-
- for (i=0;i<nAtoms;i++,wire++) {
- if (swapped) {
- register int n;
- swapl(wire,n);
- }
- if ((((Atom)*wire)!=None)&&(!ValidAtom((Atom)*wire))) {
- *pError= ((Atom)*wire);
- return NULL;
- }
- }
- return wire;
-}
-
-static CARD32 *
-_XkbCheckMaskedAtoms(CARD32 *wire,int nAtoms,CARD32 present,int swapped,
- Atom *pError)
-{
-register unsigned i,bit;
-
- for (i=0,bit=1;(i<nAtoms)&&(present);i++,bit<<=1) {
- if ((present&bit)==0)
- continue;
- if (swapped) {
- register int n;
- swapl(wire,n);
- }
- if ((((Atom)*wire)!=None)&&(!ValidAtom(((Atom)*wire)))) {
- *pError= (Atom)*wire;
- return NULL;
- }
- wire++;
- }
- return wire;
-}
-
-static Atom *
-_XkbCopyMaskedAtoms( Atom *wire,
- Atom *dest,
- int nAtoms,
- CARD32 present)
-{
-register int i,bit;
-
- for (i=0,bit=1;(i<nAtoms)&&(present);i++,bit<<=1) {
- if ((present&bit)==0)
- continue;
- dest[i]= *wire++;
- }
- return wire;
-}
-
-static Bool
-_XkbCheckTypeName(Atom name,int typeNdx)
-{
-const char * str;
-
- str= NameForAtom(name);
- if ((strcmp(str,"ONE_LEVEL")==0)||(strcmp(str,"TWO_LEVEL")==0)||
- (strcmp(str,"ALPHABETIC")==0)||(strcmp(str,"KEYPAD")==0))
- return FALSE;
- return TRUE;
-}
-
-/**
- * Check the device-dependent data in the request against the device. Returns
- * Success, or the appropriate error code.
- */
-static int
-_XkbSetNamesCheck(ClientPtr client, DeviceIntPtr dev,
- xkbSetNamesReq *stuff, CARD32 *data)
-{
- XkbDescRec *xkb;
- XkbNamesRec *names;
- CARD32 *tmp;
- Atom bad;
-
- tmp = data;
- xkb = dev->key->xkbInfo->desc;
- names = xkb->names;
-
-
- if (stuff->which & XkbKeyTypeNamesMask) {
- int i;
- CARD32 *old;
- if ( stuff->nTypes<1 ) {
- client->errorValue = _XkbErrCode2(0x02,stuff->nTypes);
- return BadValue;
- }
- if ((unsigned)(stuff->firstType+stuff->nTypes-1)>=xkb->map->num_types) {
- client->errorValue = _XkbErrCode4(0x03,stuff->firstType,
- stuff->nTypes,
- xkb->map->num_types);
- return BadValue;
- }
- if (((unsigned)stuff->firstType)<=XkbLastRequiredType) {
- client->errorValue = _XkbErrCode2(0x04,stuff->firstType);
- return BadAccess;
- }
- old= tmp;
- tmp= _XkbCheckAtoms(tmp,stuff->nTypes,client->swapped,&bad);
- if (!tmp) {
- client->errorValue= bad;
- return BadAtom;
- }
- for (i=0;i<stuff->nTypes;i++,old++) {
- if (!_XkbCheckTypeName((Atom)*old,stuff->firstType+i))
- client->errorValue= _XkbErrCode2(0x05,i);
- }
- }
- if (stuff->which&XkbKTLevelNamesMask) {
- unsigned i;
- XkbKeyTypePtr type;
- CARD8 * width;
- if ( stuff->nKTLevels<1 ) {
- client->errorValue = _XkbErrCode2(0x05,stuff->nKTLevels);
- return BadValue;
- }
- if ((unsigned)(stuff->firstKTLevel+stuff->nKTLevels-1)>=
- xkb->map->num_types) {
- client->errorValue = _XkbErrCode4(0x06,stuff->firstKTLevel,
- stuff->nKTLevels,xkb->map->num_types);
- return BadValue;
- }
- width = (CARD8 *)tmp;
- tmp= (CARD32 *)(((char *)tmp)+XkbPaddedSize(stuff->nKTLevels));
- type = &xkb->map->types[stuff->firstKTLevel];
- for (i=0;i<stuff->nKTLevels;i++,type++) {
- if (width[i]==0)
- continue;
- else if (width[i]!=type->num_levels) {
- client->errorValue= _XkbErrCode4(0x07,i+stuff->firstKTLevel,
- type->num_levels,width[i]);
- return BadMatch;
- }
- tmp= _XkbCheckAtoms(tmp,width[i],client->swapped,&bad);
- if (!tmp) {
- client->errorValue= bad;
- return BadAtom;
- }
- }
- }
- if (stuff->which&XkbIndicatorNamesMask) {
- if (stuff->indicators==0) {
- client->errorValue= 0x08;
- return BadMatch;
- }
- tmp= _XkbCheckMaskedAtoms(tmp,XkbNumIndicators,stuff->indicators,
- client->swapped,&bad);
- if (!tmp) {
- client->errorValue= bad;
- return BadAtom;
- }
- }
- if (stuff->which&XkbVirtualModNamesMask) {
- if (stuff->virtualMods==0) {
- client->errorValue= 0x09;
- return BadMatch;
- }
- tmp= _XkbCheckMaskedAtoms(tmp,XkbNumVirtualMods,
- (CARD32)stuff->virtualMods,
- client->swapped,&bad);
- if (!tmp) {
- client->errorValue = bad;
- return BadAtom;
- }
- }
- if (stuff->which&XkbGroupNamesMask) {
- if (stuff->groupNames==0) {
- client->errorValue= 0x0a;
- return BadMatch;
- }
- tmp= _XkbCheckMaskedAtoms(tmp,XkbNumKbdGroups,
- (CARD32)stuff->groupNames,
- client->swapped,&bad);
- if (!tmp) {
- client->errorValue = bad;
- return BadAtom;
- }
- }
- if (stuff->which&XkbKeyNamesMask) {
- if (stuff->firstKey<(unsigned)xkb->min_key_code) {
- client->errorValue= _XkbErrCode3(0x0b,xkb->min_key_code,
- stuff->firstKey);
- return BadValue;
- }
- if (((unsigned)(stuff->firstKey+stuff->nKeys-1)>xkb->max_key_code)||
- (stuff->nKeys<1)) {
- client->errorValue= _XkbErrCode4(0x0c,xkb->max_key_code,
- stuff->firstKey,stuff->nKeys);
- return BadValue;
- }
- tmp+= stuff->nKeys;
- }
- if ((stuff->which&XkbKeyAliasesMask)&&(stuff->nKeyAliases>0)) {
- tmp+= stuff->nKeyAliases*2;
- }
- if (stuff->which&XkbRGNamesMask) {
- if ( stuff->nRadioGroups<1 ) {
- client->errorValue= _XkbErrCode2(0x0d,stuff->nRadioGroups);
- return BadValue;
- }
- tmp= _XkbCheckAtoms(tmp,stuff->nRadioGroups,client->swapped,&bad);
- if (!tmp) {
- client->errorValue= bad;
- return BadAtom;
- }
- }
- if ((tmp-((CARD32 *)stuff))!=stuff->length) {
- client->errorValue = stuff->length;
- return BadLength;
- }
-
-
-
- return Success;
-}
-
-static int
-_XkbSetNames(ClientPtr client, DeviceIntPtr dev, xkbSetNamesReq *stuff)
-{
- XkbDescRec *xkb;
- XkbNamesRec *names;
- CARD32 *tmp;
- xkbNamesNotify nn;
-
- tmp = (CARD32 *)&stuff[1];
- xkb = dev->key->xkbInfo->desc;
- names = xkb->names;
-
- if (XkbAllocNames(xkb,stuff->which,stuff->nRadioGroups,
- stuff->nKeyAliases)!=Success) {
- return BadAlloc;
- }
-
- memset(&nn, 0, sizeof(xkbNamesNotify));
- nn.changed= stuff->which;
- tmp = (CARD32 *)&stuff[1];
- if (stuff->which&XkbKeycodesNameMask)
- names->keycodes= *tmp++;
- if (stuff->which&XkbGeometryNameMask)
- names->geometry= *tmp++;
- if (stuff->which&XkbSymbolsNameMask)
- names->symbols= *tmp++;
- if (stuff->which&XkbPhysSymbolsNameMask)
- names->phys_symbols= *tmp++;
- if (stuff->which&XkbTypesNameMask)
- names->types= *tmp++;
- if (stuff->which&XkbCompatNameMask)
- names->compat= *tmp++;
- if ((stuff->which&XkbKeyTypeNamesMask)&&(stuff->nTypes>0)) {
- register unsigned i;
- register XkbKeyTypePtr type;
-
- type= &xkb->map->types[stuff->firstType];
- for (i=0;i<stuff->nTypes;i++,type++) {
- type->name= *tmp++;
- }
- nn.firstType= stuff->firstType;
- nn.nTypes= stuff->nTypes;
- }
- if (stuff->which&XkbKTLevelNamesMask) {
- register XkbKeyTypePtr type;
- register unsigned i;
- CARD8 *width;
-
- width = (CARD8 *)tmp;
- tmp= (CARD32 *)(((char *)tmp)+XkbPaddedSize(stuff->nKTLevels));
- type= &xkb->map->types[stuff->firstKTLevel];
- for (i=0;i<stuff->nKTLevels;i++,type++) {
- if (width[i]>0) {
- if (type->level_names) {
- register unsigned n;
- for (n=0;n<width[i];n++) {
- type->level_names[n]= tmp[n];
- }
- }
- tmp+= width[i];
- }
- }
- nn.firstLevelName= 0;
- nn.nLevelNames= stuff->nTypes;
- }
- if (stuff->which&XkbIndicatorNamesMask) {
- tmp= _XkbCopyMaskedAtoms(tmp,names->indicators,XkbNumIndicators,
- stuff->indicators);
- nn.changedIndicators= stuff->indicators;
- }
- if (stuff->which&XkbVirtualModNamesMask) {
- tmp= _XkbCopyMaskedAtoms(tmp,names->vmods,XkbNumVirtualMods,
- stuff->virtualMods);
- nn.changedVirtualMods= stuff->virtualMods;
- }
- if (stuff->which&XkbGroupNamesMask) {
- tmp= _XkbCopyMaskedAtoms(tmp,names->groups,XkbNumKbdGroups,
- stuff->groupNames);
- nn.changedVirtualMods= stuff->groupNames;
- }
- if (stuff->which&XkbKeyNamesMask) {
- memcpy((char*)&names->keys[stuff->firstKey],(char *)tmp,
- stuff->nKeys*XkbKeyNameLength);
- tmp+= stuff->nKeys;
- nn.firstKey= stuff->firstKey;
- nn.nKeys= stuff->nKeys;
- }
- if (stuff->which&XkbKeyAliasesMask) {
- if (stuff->nKeyAliases>0) {
- register int na= stuff->nKeyAliases;
- if (XkbAllocNames(xkb,XkbKeyAliasesMask,0,na)!=Success)
- return BadAlloc;
- memcpy((char *)names->key_aliases,(char *)tmp,
- stuff->nKeyAliases*sizeof(XkbKeyAliasRec));
- tmp+= stuff->nKeyAliases*2;
- }
- else if (names->key_aliases!=NULL) {
- free(names->key_aliases);
- names->key_aliases= NULL;
- names->num_key_aliases= 0;
- }
- nn.nAliases= names->num_key_aliases;
- }
- if (stuff->which&XkbRGNamesMask) {
- if (stuff->nRadioGroups>0) {
- register unsigned i,nrg;
- nrg= stuff->nRadioGroups;
- if (XkbAllocNames(xkb,XkbRGNamesMask,nrg,0)!=Success)
- return BadAlloc;
-
- for (i=0;i<stuff->nRadioGroups;i++) {
- names->radio_groups[i]= tmp[i];
- }
- tmp+= stuff->nRadioGroups;
- }
- else if (names->radio_groups) {
- free(names->radio_groups);
- names->radio_groups= NULL;
- names->num_rg= 0;
- }
- nn.nRadioGroups= names->num_rg;
- }
- if (nn.changed) {
- Bool needExtEvent;
- needExtEvent= (nn.changed&XkbIndicatorNamesMask)!=0;
- XkbSendNamesNotify(dev,&nn);
- if (needExtEvent) {
- XkbSrvLedInfoPtr sli;
- xkbExtensionDeviceNotify edev;
- register int i;
- register unsigned bit;
-
- sli= XkbFindSrvLedInfo(dev,XkbDfltXIClass,XkbDfltXIId,
- XkbXI_IndicatorsMask);
- sli->namesPresent= 0;
- for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
- if (names->indicators[i]!=None)
- sli->namesPresent|= bit;
- }
- memset(&edev, 0, sizeof(xkbExtensionDeviceNotify));
- edev.reason= XkbXI_IndicatorNamesMask;
- edev.ledClass= KbdFeedbackClass;
- edev.ledID= dev->kbdfeed->ctrl.id;
- edev.ledsDefined= sli->namesPresent|sli->mapsPresent;
- edev.ledState= sli->effectiveState;
- edev.firstBtn= 0;
- edev.nBtns= 0;
- edev.supported= XkbXI_AllFeaturesMask;
- edev.unsupported= 0;
- XkbSendExtensionDeviceNotify(dev,client,&edev);
- }
- }
- return Success;
-}
-
-int
-ProcXkbSetNames(ClientPtr client)
-{
- DeviceIntPtr dev;
- CARD32 *tmp;
- Atom bad;
- int rc;
-
- REQUEST(xkbSetNamesReq);
- REQUEST_AT_LEAST_SIZE(xkbSetNamesReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixManageAccess);
- CHK_MASK_LEGAL(0x01,stuff->which,XkbAllNamesMask);
-
- /* check device-independent stuff */
- tmp = (CARD32 *)&stuff[1];
-
- if (stuff->which&XkbKeycodesNameMask) {
- tmp= _XkbCheckAtoms(tmp,1,client->swapped,&bad);
- if (!tmp) {
- client->errorValue = bad;
- return BadAtom;
- }
- }
- if (stuff->which&XkbGeometryNameMask) {
- tmp= _XkbCheckAtoms(tmp,1,client->swapped,&bad);
- if (!tmp) {
- client->errorValue = bad;
- return BadAtom;
- }
- }
- if (stuff->which&XkbSymbolsNameMask) {
- tmp= _XkbCheckAtoms(tmp,1,client->swapped,&bad);
- if (!tmp) {
- client->errorValue = bad;
- return BadAtom;
- }
- }
- if (stuff->which&XkbPhysSymbolsNameMask) {
- tmp= _XkbCheckAtoms(tmp,1,client->swapped,&bad);
- if (!tmp) {
- client->errorValue= bad;
- return BadAtom;
- }
- }
- if (stuff->which&XkbTypesNameMask) {
- tmp= _XkbCheckAtoms(tmp,1,client->swapped,&bad);
- if (!tmp) {
- client->errorValue = bad;
- return BadAtom;
- }
- }
- if (stuff->which&XkbCompatNameMask) {
- tmp= _XkbCheckAtoms(tmp,1,client->swapped,&bad);
- if (!tmp) {
- client->errorValue = bad;
- return BadAtom;
- }
- }
-
- /* start of device-dependent tests */
- rc = _XkbSetNamesCheck(client, dev, stuff, tmp);
- if (rc != Success)
- return rc;
-
- if (stuff->deviceSpec == XkbUseCoreKbd)
- {
- DeviceIntPtr other;
- for (other = inputInfo.devices; other; other = other->next)
- {
- if ((other != dev) && other->key && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev)
- {
-
- rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
- if (rc == Success)
- {
- rc = _XkbSetNamesCheck(client, other, stuff, tmp);
- if (rc != Success)
- return rc;
- }
- }
- }
- }
-
- /* everything is okay -- update names */
-
- rc = _XkbSetNames(client, dev, stuff);
- if (rc != Success)
- return rc;
-
- if (stuff->deviceSpec == XkbUseCoreKbd)
- {
- DeviceIntPtr other;
- for (other = inputInfo.devices; other; other = other->next)
- {
- if ((other != dev) && other->key && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev)
- {
-
- rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
- if (rc == Success)
- _XkbSetNames(client, other, stuff);
- }
- }
- }
-
- /* everything is okay -- update names */
-
- return Success;
-}
-
-/***====================================================================***/
-
-#include "xkbgeom.h"
-
-#define XkbSizeCountedString(s) ((s)?((((2+strlen(s))+3)/4)*4):4)
-
-static char *
-XkbWriteCountedString(char *wire,char *str,Bool swap)
-{
- CARD16 len,*pLen;
-
- if (!str)
- return wire;
-
- len= strlen(str);
- pLen= (CARD16 *)wire;
- *pLen= len;
- if (swap) {
- register int n;
- swaps(pLen,n);
- }
- memcpy(&wire[2],str,len);
- wire+= ((2+len+3)/4)*4;
- return wire;
-}
-
-static int
-XkbSizeGeomProperties(XkbGeometryPtr geom)
-{
-register int i,size;
-XkbPropertyPtr prop;
-
- for (size=i=0,prop=geom->properties;i<geom->num_properties;i++,prop++) {
- size+= XkbSizeCountedString(prop->name);
- size+= XkbSizeCountedString(prop->value);
- }
- return size;
-}
-
-static char *
-XkbWriteGeomProperties(char *wire,XkbGeometryPtr geom,Bool swap)
-{
-register int i;
-register XkbPropertyPtr prop;
-
- for (i=0,prop=geom->properties;i<geom->num_properties;i++,prop++) {
- wire= XkbWriteCountedString(wire,prop->name,swap);
- wire= XkbWriteCountedString(wire,prop->value,swap);
- }
- return wire;
-}
-
-static int
-XkbSizeGeomKeyAliases(XkbGeometryPtr geom)
-{
- return geom->num_key_aliases*(2*XkbKeyNameLength);
-}
-
-static char *
-XkbWriteGeomKeyAliases(char *wire,XkbGeometryPtr geom,Bool swap)
-{
-register int sz;
-
- sz= geom->num_key_aliases*(XkbKeyNameLength*2);
- if (sz>0) {
- memcpy(wire,(char *)geom->key_aliases,sz);
- wire+= sz;
- }
- return wire;
-}
-
-static int
-XkbSizeGeomColors(XkbGeometryPtr geom)
-{
-register int i,size;
-register XkbColorPtr color;
-
- for (i=size=0,color=geom->colors;i<geom->num_colors;i++,color++) {
- size+= XkbSizeCountedString(color->spec);
- }
- return size;
-}
-
-static char *
-XkbWriteGeomColors(char *wire,XkbGeometryPtr geom,Bool swap)
-{
-register int i;
-register XkbColorPtr color;
-
- for (i=0,color=geom->colors;i<geom->num_colors;i++,color++) {
- wire= XkbWriteCountedString(wire,color->spec,swap);
- }
- return wire;
-}
-
-static int
-XkbSizeGeomShapes(XkbGeometryPtr geom)
-{
-register int i,size;
-register XkbShapePtr shape;
-
- for (i=size=0,shape=geom->shapes;i<geom->num_shapes;i++,shape++) {
- register int n;
- register XkbOutlinePtr ol;
- size+= SIZEOF(xkbShapeWireDesc);
- for (n=0,ol=shape->outlines;n<shape->num_outlines;n++,ol++) {
- size+= SIZEOF(xkbOutlineWireDesc);
- size+= ol->num_points*SIZEOF(xkbPointWireDesc);
- }
- }
- return size;
-}
-
-static char *
-XkbWriteGeomShapes(char *wire,XkbGeometryPtr geom,Bool swap)
-{
-int i;
-XkbShapePtr shape;
-xkbShapeWireDesc * shapeWire;
-
- for (i=0,shape=geom->shapes;i<geom->num_shapes;i++,shape++) {
- register int o;
- XkbOutlinePtr ol;
- xkbOutlineWireDesc * olWire;
- shapeWire= (xkbShapeWireDesc *)wire;
- shapeWire->name= shape->name;
- shapeWire->nOutlines= shape->num_outlines;
- if (shape->primary!=NULL)
- shapeWire->primaryNdx= XkbOutlineIndex(shape,shape->primary);
- else shapeWire->primaryNdx= XkbNoShape;
- if (shape->approx!=NULL)
- shapeWire->approxNdx= XkbOutlineIndex(shape,shape->approx);
- else shapeWire->approxNdx= XkbNoShape;
- if (swap) {
- register int n;
- swapl(&shapeWire->name,n);
- }
- wire= (char *)&shapeWire[1];
- for (o=0,ol=shape->outlines;o<shape->num_outlines;o++,ol++) {
- register int p;
- XkbPointPtr pt;
- xkbPointWireDesc * ptWire;
- olWire= (xkbOutlineWireDesc *)wire;
- olWire->nPoints= ol->num_points;
- olWire->cornerRadius= ol->corner_radius;
- wire= (char *)&olWire[1];
- ptWire= (xkbPointWireDesc *)wire;
- for (p=0,pt=ol->points;p<ol->num_points;p++,pt++) {
- ptWire[p].x= pt->x;
- ptWire[p].y= pt->y;
- if (swap) {
- register int n;
- swaps(&ptWire[p].x,n);
- swaps(&ptWire[p].y,n);
- }
- }
- wire= (char *)&ptWire[ol->num_points];
- }
- }
- return wire;
-}
-
-static int
-XkbSizeGeomDoodads(int num_doodads,XkbDoodadPtr doodad)
-{
-register int i,size;
-
- for (i=size=0;i<num_doodads;i++,doodad++) {
- size+= SIZEOF(xkbAnyDoodadWireDesc);
- if (doodad->any.type==XkbTextDoodad) {
- size+= XkbSizeCountedString(doodad->text.text);
- size+= XkbSizeCountedString(doodad->text.font);
- }
- else if (doodad->any.type==XkbLogoDoodad) {
- size+= XkbSizeCountedString(doodad->logo.logo_name);
- }
- }
- return size;
-}
-
-static char *
-XkbWriteGeomDoodads(char *wire,int num_doodads,XkbDoodadPtr doodad,Bool swap)
-{
-register int i;
-xkbDoodadWireDesc * doodadWire;
-
- for (i=0;i<num_doodads;i++,doodad++) {
- doodadWire= (xkbDoodadWireDesc *)wire;
- wire= (char *)&doodadWire[1];
- memset(doodadWire, 0, SIZEOF(xkbDoodadWireDesc));
- doodadWire->any.name= doodad->any.name;
- doodadWire->any.type= doodad->any.type;
- doodadWire->any.priority= doodad->any.priority;
- doodadWire->any.top= doodad->any.top;
- doodadWire->any.left= doodad->any.left;
- if (swap) {
- register int n;
- swapl(&doodadWire->any.name,n);
- swaps(&doodadWire->any.top,n);
- swaps(&doodadWire->any.left,n);
- }
- switch (doodad->any.type) {
- case XkbOutlineDoodad:
- case XkbSolidDoodad:
- doodadWire->shape.angle= doodad->shape.angle;
- doodadWire->shape.colorNdx= doodad->shape.color_ndx;
- doodadWire->shape.shapeNdx= doodad->shape.shape_ndx;
- if (swap) {
- register int n;
- swaps(&doodadWire->shape.angle,n);
- }
- break;
- case XkbTextDoodad:
- doodadWire->text.angle= doodad->text.angle;
- doodadWire->text.width= doodad->text.width;
- doodadWire->text.height= doodad->text.height;
- doodadWire->text.colorNdx= doodad->text.color_ndx;
- if (swap) {
- register int n;
- swaps(&doodadWire->text.angle,n);
- swaps(&doodadWire->text.width,n);
- swaps(&doodadWire->text.height,n);
- }
- wire= XkbWriteCountedString(wire,doodad->text.text,swap);
- wire= XkbWriteCountedString(wire,doodad->text.font,swap);
- break;
- case XkbIndicatorDoodad:
- doodadWire->indicator.shapeNdx= doodad->indicator.shape_ndx;
- doodadWire->indicator.onColorNdx=doodad->indicator.on_color_ndx;
- doodadWire->indicator.offColorNdx=
- doodad->indicator.off_color_ndx;
- break;
- case XkbLogoDoodad:
- doodadWire->logo.angle= doodad->logo.angle;
- doodadWire->logo.colorNdx= doodad->logo.color_ndx;
- doodadWire->logo.shapeNdx= doodad->logo.shape_ndx;
- wire= XkbWriteCountedString(wire,doodad->logo.logo_name,swap);
- break;
- default:
- ErrorF("[xkb] Unknown doodad type %d in XkbWriteGeomDoodads\n",
- doodad->any.type);
- ErrorF("[xkb] Ignored\n");
- break;
- }
- }
- return wire;
-}
-
-static char *
-XkbWriteGeomOverlay(char *wire,XkbOverlayPtr ol,Bool swap)
-{
-register int r;
-XkbOverlayRowPtr row;
-xkbOverlayWireDesc * olWire;
-
- olWire= (xkbOverlayWireDesc *)wire;
- olWire->name= ol->name;
- olWire->nRows= ol->num_rows;
- if (swap) {
- register int n;
- swapl(&olWire->name,n);
- }
- wire= (char *)&olWire[1];
- for (r=0,row=ol->rows;r<ol->num_rows;r++,row++) {
- unsigned int k;
- XkbOverlayKeyPtr key;
- xkbOverlayRowWireDesc * rowWire;
- rowWire= (xkbOverlayRowWireDesc *)wire;
- rowWire->rowUnder= row->row_under;
- rowWire->nKeys= row->num_keys;
- wire= (char *)&rowWire[1];
- for (k=0,key=row->keys;k<row->num_keys;k++,key++) {
- xkbOverlayKeyWireDesc * keyWire;
- keyWire= (xkbOverlayKeyWireDesc *)wire;
- memcpy(keyWire->over,key->over.name,XkbKeyNameLength);
- memcpy(keyWire->under,key->under.name,XkbKeyNameLength);
- wire= (char *)&keyWire[1];
- }
- }
- return wire;
-}
-
-static int
-XkbSizeGeomSections(XkbGeometryPtr geom)
-{
-register int i,size;
-XkbSectionPtr section;
-
- for (i=size=0,section=geom->sections;i<geom->num_sections;i++,section++) {
- size+= SIZEOF(xkbSectionWireDesc);
- if (section->rows) {
- int r;
- XkbRowPtr row;
- for (r=0,row=section->rows;r<section->num_rows;row++,r++) {
- size+= SIZEOF(xkbRowWireDesc);
- size+= row->num_keys*SIZEOF(xkbKeyWireDesc);
- }
- }
- if (section->doodads)
- size+= XkbSizeGeomDoodads(section->num_doodads,section->doodads);
- if (section->overlays) {
- int o;
- XkbOverlayPtr ol;
- for (o=0,ol=section->overlays;o<section->num_overlays;o++,ol++) {
- int r;
- XkbOverlayRowPtr row;
- size+= SIZEOF(xkbOverlayWireDesc);
- for (r=0,row=ol->rows;r<ol->num_rows;r++,row++) {
- size+= SIZEOF(xkbOverlayRowWireDesc);
- size+= row->num_keys*SIZEOF(xkbOverlayKeyWireDesc);
- }
- }
- }
- }
- return size;
-}
-
-static char *
-XkbWriteGeomSections(char *wire,XkbGeometryPtr geom,Bool swap)
-{
-register int i;
-XkbSectionPtr section;
-xkbSectionWireDesc * sectionWire;
-
- for (i=0,section=geom->sections;i<geom->num_sections;i++,section++) {
- sectionWire= (xkbSectionWireDesc *)wire;
- sectionWire->name= section->name;
- sectionWire->top= section->top;
- sectionWire->left= section->left;
- sectionWire->width= section->width;
- sectionWire->height= section->height;
- sectionWire->angle= section->angle;
- sectionWire->priority= section->priority;
- sectionWire->nRows= section->num_rows;
- sectionWire->nDoodads= section->num_doodads;
- sectionWire->nOverlays= section->num_overlays;
- sectionWire->pad= 0;
- if (swap) {
- register int n;
- swapl(&sectionWire->name,n);
- swaps(&sectionWire->top,n);
- swaps(&sectionWire->left,n);
- swaps(&sectionWire->width,n);
- swaps(&sectionWire->height,n);
- swaps(&sectionWire->angle,n);
- }
- wire= (char *)&sectionWire[1];
- if (section->rows) {
- int r;
- XkbRowPtr row;
- xkbRowWireDesc * rowWire;
- for (r=0,row=section->rows;r<section->num_rows;r++,row++) {
- rowWire= (xkbRowWireDesc *)wire;
- rowWire->top= row->top;
- rowWire->left= row->left;
- rowWire->nKeys= row->num_keys;
- rowWire->vertical= row->vertical;
- rowWire->pad= 0;
- if (swap) {
- register int n;
- swaps(&rowWire->top,n);
- swaps(&rowWire->left,n);
- }
- wire= (char *)&rowWire[1];
- if (row->keys) {
- int k;
- XkbKeyPtr key;
- xkbKeyWireDesc * keyWire;
- keyWire= (xkbKeyWireDesc *)wire;
- for (k=0,key=row->keys;k<row->num_keys;k++,key++) {
- memcpy(keyWire[k].name,key->name.name,XkbKeyNameLength);
- keyWire[k].gap= key->gap;
- keyWire[k].shapeNdx= key->shape_ndx;
- keyWire[k].colorNdx= key->color_ndx;
- if (swap) {
- register int n;
- swaps(&keyWire[k].gap,n);
- }
- }
- wire= (char *)&keyWire[row->num_keys];
- }
- }
- }
- if (section->doodads) {
- wire= XkbWriteGeomDoodads(wire,
- section->num_doodads,section->doodads,
- swap);
- }
- if (section->overlays) {
- register int o;
- for (o=0;o<section->num_overlays;o++) {
- wire= XkbWriteGeomOverlay(wire,&section->overlays[o],swap);
- }
- }
- }
- return wire;
-}
-
-static Status
-XkbComputeGetGeometryReplySize( XkbGeometryPtr geom,
- xkbGetGeometryReply * rep,
- Atom name)
-{
-int len;
-
- if (geom!=NULL) {
- len= XkbSizeCountedString(geom->label_font);
- len+= XkbSizeGeomProperties(geom);
- len+= XkbSizeGeomColors(geom);
- len+= XkbSizeGeomShapes(geom);
- len+= XkbSizeGeomSections(geom);
- len+= XkbSizeGeomDoodads(geom->num_doodads,geom->doodads);
- len+= XkbSizeGeomKeyAliases(geom);
- rep->length= len/4;
- rep->found= TRUE;
- rep->name= geom->name;
- rep->widthMM= geom->width_mm;
- rep->heightMM= geom->height_mm;
- rep->nProperties= geom->num_properties;
- rep->nColors= geom->num_colors;
- rep->nShapes= geom->num_shapes;
- rep->nSections= geom->num_sections;
- rep->nDoodads= geom->num_doodads;
- rep->nKeyAliases= geom->num_key_aliases;
- rep->baseColorNdx= XkbGeomColorIndex(geom,geom->base_color);
- rep->labelColorNdx= XkbGeomColorIndex(geom,geom->label_color);
- }
- else {
- rep->length= 0;
- rep->found= FALSE;
- rep->name= name;
- rep->widthMM= rep->heightMM= 0;
- rep->nProperties= rep->nColors= rep->nShapes= 0;
- rep->nSections= rep->nDoodads= 0;
- rep->nKeyAliases= 0;
- rep->labelColorNdx= rep->baseColorNdx= 0;
- }
- return Success;
-}
-
-static int
-XkbSendGeometry( ClientPtr client,
- XkbGeometryPtr geom,
- xkbGetGeometryReply * rep,
- Bool freeGeom)
-{
- char *desc,*start;
- int len;
-
- if (geom!=NULL) {
- len= rep->length*4;
- start= desc= malloc(len);
- if (!start)
- return BadAlloc;
- desc= XkbWriteCountedString(desc,geom->label_font,client->swapped);
- if ( rep->nProperties>0 )
- desc = XkbWriteGeomProperties(desc,geom,client->swapped);
- if ( rep->nColors>0 )
- desc = XkbWriteGeomColors(desc,geom,client->swapped);
- if ( rep->nShapes>0 )
- desc = XkbWriteGeomShapes(desc,geom,client->swapped);
- if ( rep->nSections>0 )
- desc = XkbWriteGeomSections(desc,geom,client->swapped);
- if ( rep->nDoodads>0 )
- desc = XkbWriteGeomDoodads(desc,geom->num_doodads,geom->doodads,
- client->swapped);
- if ( rep->nKeyAliases>0 )
- desc = XkbWriteGeomKeyAliases(desc,geom,client->swapped);
- if ((desc-start)!=(len)) {
- ErrorF("[xkb] BOGUS LENGTH in XkbSendGeometry, expected %d, got %ld\n",
- len, (unsigned long)(desc-start));
- }
- }
- else {
- len= 0;
- start= NULL;
- }
- if (client->swapped) {
- register int n;
- swaps(&rep->sequenceNumber,n);
- swapl(&rep->length,n);
- swapl(&rep->name,n);
- swaps(&rep->widthMM,n);
- swaps(&rep->heightMM,n);
- swaps(&rep->nProperties,n);
- swaps(&rep->nColors,n);
- swaps(&rep->nShapes,n);
- swaps(&rep->nSections,n);
- swaps(&rep->nDoodads,n);
- swaps(&rep->nKeyAliases,n);
- }
- WriteToClient(client, SIZEOF(xkbGetGeometryReply), (char *)rep);
- if (len>0)
- WriteToClient(client, len, start);
- if (start!=NULL)
- free((char *)start);
- if (freeGeom)
- XkbFreeGeometry(geom,XkbGeomAllMask,TRUE);
- return Success;
-}
-
-int
-ProcXkbGetGeometry(ClientPtr client)
-{
- DeviceIntPtr dev;
- xkbGetGeometryReply rep;
- XkbGeometryPtr geom;
- Bool shouldFree;
- Status status;
-
- REQUEST(xkbGetGeometryReq);
- REQUEST_SIZE_MATCH(xkbGetGeometryReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
- CHK_ATOM_OR_NONE(stuff->name);
-
- geom= XkbLookupNamedGeometry(dev,stuff->name,&shouldFree);
- rep.type= X_Reply;
- rep.deviceID= dev->id;
- rep.sequenceNumber= client->sequence;
- rep.length= 0;
- status= XkbComputeGetGeometryReplySize(geom,&rep,stuff->name);
- if (status!=Success)
- return status;
- else return XkbSendGeometry(client,geom,&rep,shouldFree);
-}
-
-/***====================================================================***/
-
-static char *
-_GetCountedString(char **wire_inout,Bool swap)
-{
-char * wire,*str;
-CARD16 len,*plen;
-
- wire= *wire_inout;
- plen= (CARD16 *)wire;
- if (swap) {
- register int n;
- swaps(plen,n);
- }
- len= *plen;
- str= malloc(len+1);
- if (str) {
- memcpy(str,&wire[2],len);
- str[len]= '\0';
- }
- wire+= XkbPaddedSize(len+2);
- *wire_inout= wire;
- return str;
-}
-
-static Status
-_CheckSetDoodad( char ** wire_inout,
- XkbGeometryPtr geom,
- XkbSectionPtr section,
- ClientPtr client)
-{
-char * wire;
-xkbDoodadWireDesc * dWire;
-XkbDoodadPtr doodad;
-
- dWire= (xkbDoodadWireDesc *)(*wire_inout);
- wire= (char *)&dWire[1];
- if (client->swapped) {
- register int n;
- swapl(&dWire->any.name,n);
- swaps(&dWire->any.top,n);
- swaps(&dWire->any.left,n);
- swaps(&dWire->any.angle,n);
- }
- CHK_ATOM_ONLY(dWire->any.name);
- doodad= XkbAddGeomDoodad(geom,section,dWire->any.name);
- if (!doodad)
- return BadAlloc;
- doodad->any.type= dWire->any.type;
- doodad->any.priority= dWire->any.priority;
- doodad->any.top= dWire->any.top;
- doodad->any.left= dWire->any.left;
- doodad->any.angle= dWire->any.angle;
- switch (doodad->any.type) {
- case XkbOutlineDoodad:
- case XkbSolidDoodad:
- if (dWire->shape.colorNdx>=geom->num_colors) {
- client->errorValue= _XkbErrCode3(0x40,geom->num_colors,
- dWire->shape.colorNdx);
- return BadMatch;
- }
- if (dWire->shape.shapeNdx>=geom->num_shapes) {
- client->errorValue= _XkbErrCode3(0x41,geom->num_shapes,
- dWire->shape.shapeNdx);
- return BadMatch;
- }
- doodad->shape.color_ndx= dWire->shape.colorNdx;
- doodad->shape.shape_ndx= dWire->shape.shapeNdx;
- break;
- case XkbTextDoodad:
- if (dWire->text.colorNdx>=geom->num_colors) {
- client->errorValue= _XkbErrCode3(0x42,geom->num_colors,
- dWire->text.colorNdx);
- return BadMatch;
- }
- if (client->swapped) {
- register int n;
- swaps(&dWire->text.width,n);
- swaps(&dWire->text.height,n);
- }
- doodad->text.width= dWire->text.width;
- doodad->text.height= dWire->text.height;
- doodad->text.color_ndx= dWire->text.colorNdx;
- doodad->text.text= _GetCountedString(&wire,client->swapped);
- doodad->text.font= _GetCountedString(&wire,client->swapped);
- break;
- case XkbIndicatorDoodad:
- if (dWire->indicator.onColorNdx>=geom->num_colors) {
- client->errorValue= _XkbErrCode3(0x43,geom->num_colors,
- dWire->indicator.onColorNdx);
- return BadMatch;
- }
- if (dWire->indicator.offColorNdx>=geom->num_colors) {
- client->errorValue= _XkbErrCode3(0x44,geom->num_colors,
- dWire->indicator.offColorNdx);
- return BadMatch;
- }
- if (dWire->indicator.shapeNdx>=geom->num_shapes) {
- client->errorValue= _XkbErrCode3(0x45,geom->num_shapes,
- dWire->indicator.shapeNdx);
- return BadMatch;
- }
- doodad->indicator.shape_ndx= dWire->indicator.shapeNdx;
- doodad->indicator.on_color_ndx= dWire->indicator.onColorNdx;
- doodad->indicator.off_color_ndx= dWire->indicator.offColorNdx;
- break;
- case XkbLogoDoodad:
- if (dWire->logo.colorNdx>=geom->num_colors) {
- client->errorValue= _XkbErrCode3(0x46,geom->num_colors,
- dWire->logo.colorNdx);
- return BadMatch;
- }
- if (dWire->logo.shapeNdx>=geom->num_shapes) {
- client->errorValue= _XkbErrCode3(0x47,geom->num_shapes,
- dWire->logo.shapeNdx);
- return BadMatch;
- }
- doodad->logo.color_ndx= dWire->logo.colorNdx;
- doodad->logo.shape_ndx= dWire->logo.shapeNdx;
- doodad->logo.logo_name= _GetCountedString(&wire,client->swapped);
- break;
- default:
- client->errorValue= _XkbErrCode2(0x4F,dWire->any.type);
- return BadValue;
- }
- *wire_inout= wire;
- return Success;
-}
-
-static Status
-_CheckSetOverlay( char ** wire_inout,
- XkbGeometryPtr geom,
- XkbSectionPtr section,
- ClientPtr client)
-{
-register int r;
-char * wire;
-XkbOverlayPtr ol;
-xkbOverlayWireDesc * olWire;
-xkbOverlayRowWireDesc * rWire;
-
- wire= *wire_inout;
- olWire= (xkbOverlayWireDesc *)wire;
- if (client->swapped) {
- register int n;
- swapl(&olWire->name,n);
- }
- CHK_ATOM_ONLY(olWire->name);
- ol= XkbAddGeomOverlay(section,olWire->name,olWire->nRows);
- rWire= (xkbOverlayRowWireDesc *)&olWire[1];
- for (r=0;r<olWire->nRows;r++) {
- register int k;
- xkbOverlayKeyWireDesc * kWire;
- XkbOverlayRowPtr row;
-
- if (rWire->rowUnder>section->num_rows) {
- client->errorValue= _XkbErrCode4(0x20,r,section->num_rows,
- rWire->rowUnder);
- return BadMatch;
- }
- row= XkbAddGeomOverlayRow(ol,rWire->rowUnder,rWire->nKeys);
- kWire= (xkbOverlayKeyWireDesc *)&rWire[1];
- for (k=0;k<rWire->nKeys;k++,kWire++) {
- if (XkbAddGeomOverlayKey(ol,row,
- (char *)kWire->over,(char *)kWire->under)==NULL) {
- client->errorValue= _XkbErrCode3(0x21,r,k);
- return BadMatch;
- }
- }
- rWire= (xkbOverlayRowWireDesc *)kWire;
- }
- olWire= (xkbOverlayWireDesc *)rWire;
- wire= (char *)olWire;
- *wire_inout= wire;
- return Success;
-}
-
-static Status
-_CheckSetSections( XkbGeometryPtr geom,
- xkbSetGeometryReq * req,
- char ** wire_inout,
- ClientPtr client)
-{
-Status status;
-register int s;
-char * wire;
-xkbSectionWireDesc * sWire;
-XkbSectionPtr section;
-
- wire= *wire_inout;
- if (req->nSections<1)
- return Success;
- sWire= (xkbSectionWireDesc *)wire;
- for (s=0;s<req->nSections;s++) {
- register int r;
- xkbRowWireDesc * rWire;
- if (client->swapped) {
- register int n;
- swapl(&sWire->name,n);
- swaps(&sWire->top,n);
- swaps(&sWire->left,n);
- swaps(&sWire->width,n);
- swaps(&sWire->height,n);
- swaps(&sWire->angle,n);
- }
- CHK_ATOM_ONLY(sWire->name);
- section= XkbAddGeomSection(geom,sWire->name,sWire->nRows,
- sWire->nDoodads,sWire->nOverlays);
- if (!section)
- return BadAlloc;
- section->priority= sWire->priority;
- section->top= sWire->top;
- section->left= sWire->left;
- section->width= sWire->width;
- section->height= sWire->height;
- section->angle= sWire->angle;
- rWire= (xkbRowWireDesc *)&sWire[1];
- for (r=0;r<sWire->nRows;r++) {
- register int k;
- XkbRowPtr row;
- xkbKeyWireDesc * kWire;
- if (client->swapped) {
- register int n;
- swaps(&rWire->top,n);
- swaps(&rWire->left,n);
- }
- row= XkbAddGeomRow(section,rWire->nKeys);
- if (!row)
- return BadAlloc;
- row->top= rWire->top;
- row->left= rWire->left;
- row->vertical= rWire->vertical;
- kWire= (xkbKeyWireDesc *)&rWire[1];
- for (k=0;k<rWire->nKeys;k++) {
- XkbKeyPtr key;
- key= XkbAddGeomKey(row);
- if (!key)
- return BadAlloc;
- memcpy(key->name.name,kWire[k].name,XkbKeyNameLength);
- key->gap= kWire[k].gap;
- key->shape_ndx= kWire[k].shapeNdx;
- key->color_ndx= kWire[k].colorNdx;
- if (key->shape_ndx>=geom->num_shapes) {
- client->errorValue= _XkbErrCode3(0x10,key->shape_ndx,
- geom->num_shapes);
- return BadMatch;
- }
- if (key->color_ndx>=geom->num_colors) {
- client->errorValue= _XkbErrCode3(0x11,key->color_ndx,
- geom->num_colors);
- return BadMatch;
- }
- }
- rWire= (xkbRowWireDesc *)&kWire[rWire->nKeys];
- }
- wire= (char *)rWire;
- if (sWire->nDoodads>0) {
- register int d;
- for (d=0;d<sWire->nDoodads;d++) {
- status=_CheckSetDoodad(&wire,geom,section,client);
- if (status!=Success)
- return status;
- }
- }
- if (sWire->nOverlays>0) {
- register int o;
- for (o=0;o<sWire->nOverlays;o++) {
- status= _CheckSetOverlay(&wire,geom,section,client);
- if (status!=Success)
- return status;
- }
- }
- sWire= (xkbSectionWireDesc *)wire;
- }
- wire= (char *)sWire;
- *wire_inout= wire;
- return Success;
-}
-
-static Status
-_CheckSetShapes( XkbGeometryPtr geom,
- xkbSetGeometryReq * req,
- char ** wire_inout,
- ClientPtr client)
-{
-register int i;
-char * wire;
-
- wire= *wire_inout;
- if (req->nShapes<1) {
- client->errorValue= _XkbErrCode2(0x06,req->nShapes);
- return BadValue;
- }
- else {
- xkbShapeWireDesc * shapeWire;
- XkbShapePtr shape;
- register int o;
- shapeWire= (xkbShapeWireDesc *)wire;
- for (i=0;i<req->nShapes;i++) {
- xkbOutlineWireDesc * olWire;
- XkbOutlinePtr ol;
- shape= XkbAddGeomShape(geom,shapeWire->name,shapeWire->nOutlines);
- if (!shape)
- return BadAlloc;
- olWire= (xkbOutlineWireDesc *)(&shapeWire[1]);
- for (o=0;o<shapeWire->nOutlines;o++) {
- register int p;
- XkbPointPtr pt;
- xkbPointWireDesc * ptWire;
-
- ol= XkbAddGeomOutline(shape,olWire->nPoints);
- if (!ol)
- return BadAlloc;
- ol->corner_radius= olWire->cornerRadius;
- ptWire= (xkbPointWireDesc *)&olWire[1];
- for (p=0,pt=ol->points;p<olWire->nPoints;p++,pt++) {
- pt->x= ptWire[p].x;
- pt->y= ptWire[p].y;
- if (client->swapped) {
- register int n;
- swaps(&pt->x,n);
- swaps(&pt->y,n);
- }
- }
- ol->num_points= olWire->nPoints;
- olWire= (xkbOutlineWireDesc *)(&ptWire[olWire->nPoints]);
- }
- if (shapeWire->primaryNdx!=XkbNoShape)
- shape->primary= &shape->outlines[shapeWire->primaryNdx];
- if (shapeWire->approxNdx!=XkbNoShape)
- shape->approx= &shape->outlines[shapeWire->approxNdx];
- shapeWire= (xkbShapeWireDesc *)olWire;
- }
- wire= (char *)shapeWire;
- }
- if (geom->num_shapes!=req->nShapes) {
- client->errorValue= _XkbErrCode3(0x07,geom->num_shapes,req->nShapes);
- return BadMatch;
- }
-
- *wire_inout= wire;
- return Success;
-}
-
-static Status
-_CheckSetGeom( XkbGeometryPtr geom,
- xkbSetGeometryReq * req,
- ClientPtr client)
-{
-register int i;
-Status status;
-char * wire;
-
- wire= (char *)&req[1];
- geom->label_font= _GetCountedString(&wire,client->swapped);
-
- for (i=0;i<req->nProperties;i++) {
- char *name,*val;
- name= _GetCountedString(&wire,client->swapped);
- if (!name)
- return BadAlloc;
- val= _GetCountedString(&wire,client->swapped);
- if (!val) {
- free(name);
- return BadAlloc;
- }
- if (XkbAddGeomProperty(geom,name,val)==NULL) {
- free(name);
- free(val);
- return BadAlloc;
- }
- free(name);
- free(val);
- }
-
- if (req->nColors<2) {
- client->errorValue= _XkbErrCode3(0x01,2,req->nColors);
- return BadValue;
- }
- if (req->baseColorNdx>req->nColors) {
- client->errorValue=_XkbErrCode3(0x03,req->nColors,req->baseColorNdx);
- return BadMatch;
- }
- if (req->labelColorNdx>req->nColors) {
- client->errorValue= _XkbErrCode3(0x03,req->nColors,req->labelColorNdx);
- return BadMatch;
- }
- if (req->labelColorNdx==req->baseColorNdx) {
- client->errorValue= _XkbErrCode3(0x04,req->baseColorNdx,
- req->labelColorNdx);
- return BadMatch;
- }
-
- for (i=0;i<req->nColors;i++) {
- char *name;
- name= _GetCountedString(&wire,client->swapped);
- if (!name)
- return BadAlloc;
- if (!XkbAddGeomColor(geom,name,geom->num_colors)) {
- free(name);
- return BadAlloc;
- }
- free(name);
- }
- if (req->nColors!=geom->num_colors) {
- client->errorValue= _XkbErrCode3(0x05,req->nColors,geom->num_colors);
- return BadMatch;
- }
- geom->label_color= &geom->colors[req->labelColorNdx];
- geom->base_color= &geom->colors[req->baseColorNdx];
-
- if ((status=_CheckSetShapes(geom,req,&wire,client))!=Success)
- return status;
-
- if ((status=_CheckSetSections(geom,req,&wire,client))!=Success)
- return status;
-
- for (i=0;i<req->nDoodads;i++) {
- status=_CheckSetDoodad(&wire,geom,NULL,client);
- if (status!=Success)
- return status;
- }
-
- for (i=0;i<req->nKeyAliases;i++) {
- if (XkbAddGeomKeyAlias(geom,&wire[XkbKeyNameLength],wire)==NULL)
- return BadAlloc;
- wire+= 2*XkbKeyNameLength;
- }
- return Success;
-}
-
-static int
-_XkbSetGeometry(ClientPtr client, DeviceIntPtr dev, xkbSetGeometryReq *stuff)
-{
- XkbDescPtr xkb;
- Bool new_name;
- xkbNewKeyboardNotify nkn;
- XkbGeometryPtr geom,old;
- XkbGeometrySizesRec sizes;
- Status status;
-
- xkb= dev->key->xkbInfo->desc;
- old= xkb->geom;
- xkb->geom= NULL;
-
- sizes.which= XkbGeomAllMask;
- sizes.num_properties= stuff->nProperties;
- sizes.num_colors= stuff->nColors;
- sizes.num_shapes= stuff->nShapes;
- sizes.num_sections= stuff->nSections;
- sizes.num_doodads= stuff->nDoodads;
- sizes.num_key_aliases= stuff->nKeyAliases;
- if ((status= XkbAllocGeometry(xkb,&sizes))!=Success) {
- xkb->geom= old;
- return status;
- }
- geom= xkb->geom;
- geom->name= stuff->name;
- geom->width_mm= stuff->widthMM;
- geom->height_mm= stuff->heightMM;
- if ((status= _CheckSetGeom(geom,stuff,client))!=Success) {
- XkbFreeGeometry(geom,XkbGeomAllMask,TRUE);
- xkb->geom= old;
- return status;
- }
- new_name= (xkb->names->geometry!=geom->name);
- xkb->names->geometry= geom->name;
- if (old)
- XkbFreeGeometry(old,XkbGeomAllMask,TRUE);
- if (new_name) {
- xkbNamesNotify nn;
- memset(&nn, 0, sizeof(xkbNamesNotify));
- nn.changed= XkbGeometryNameMask;
- XkbSendNamesNotify(dev,&nn);
- }
- nkn.deviceID= nkn.oldDeviceID= dev->id;
- nkn.minKeyCode= nkn.oldMinKeyCode= xkb->min_key_code;
- nkn.maxKeyCode= nkn.oldMaxKeyCode= xkb->max_key_code;
- nkn.requestMajor= XkbReqCode;
- nkn.requestMinor= X_kbSetGeometry;
- nkn.changed= XkbNKN_GeometryMask;
- XkbSendNewKeyboardNotify(dev,&nkn);
- return Success;
-}
-
-int
-ProcXkbSetGeometry(ClientPtr client)
-{
- DeviceIntPtr dev;
- int rc;
-
- REQUEST(xkbSetGeometryReq);
- REQUEST_AT_LEAST_SIZE(xkbSetGeometryReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixManageAccess);
- CHK_ATOM_OR_NONE(stuff->name);
-
- rc = _XkbSetGeometry(client, dev, stuff);
- if (rc != Success)
- return rc;
-
- if (stuff->deviceSpec == XkbUseCoreKbd)
- {
- DeviceIntPtr other;
- for (other = inputInfo.devices; other; other = other->next)
- {
- if ((other != dev) && other->key && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev)
- {
- rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
- if (rc == Success)
- _XkbSetGeometry(client, other, stuff);
- }
- }
- }
-
- return Success;
-}
-
-/***====================================================================***/
-
-int
-ProcXkbPerClientFlags(ClientPtr client)
-{
- DeviceIntPtr dev;
- xkbPerClientFlagsReply rep;
- XkbInterestPtr interest;
- Mask access_mode = DixGetAttrAccess | DixSetAttrAccess;
-
- REQUEST(xkbPerClientFlagsReq);
- REQUEST_SIZE_MATCH(xkbPerClientFlagsReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, access_mode);
- CHK_MASK_LEGAL(0x01,stuff->change,XkbPCF_AllFlagsMask);
- CHK_MASK_MATCH(0x02,stuff->change,stuff->value);
-
- interest = XkbFindClientResource((DevicePtr)dev,client);
- memset(&rep, 0, sizeof(xkbPerClientFlagsReply));
- rep.type= X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- if (stuff->change) {
- client->xkbClientFlags&= ~stuff->change;
- client->xkbClientFlags|= stuff->value;
- }
- if (stuff->change&XkbPCF_AutoResetControlsMask) {
- Bool want;
- want= stuff->value&XkbPCF_AutoResetControlsMask;
- if (interest && !want) {
- interest->autoCtrls= interest->autoCtrlValues= 0;
- }
- else if (want && (!interest)) {
- XID id = FakeClientID(client->index);
- if (!AddResource(id,RT_XKBCLIENT,dev))
- return BadAlloc;
- interest= XkbAddClientResource((DevicePtr)dev,client,id);
- if (!interest)
- return BadAlloc;
- }
- if (interest && want ) {
- register unsigned affect;
- affect= stuff->ctrlsToChange;
-
- CHK_MASK_LEGAL(0x03,affect,XkbAllBooleanCtrlsMask);
- CHK_MASK_MATCH(0x04,affect,stuff->autoCtrls);
- CHK_MASK_MATCH(0x05,stuff->autoCtrls,stuff->autoCtrlValues);
-
- interest->autoCtrls&= ~affect;
- interest->autoCtrlValues&= ~affect;
- interest->autoCtrls|= stuff->autoCtrls&affect;
- interest->autoCtrlValues|= stuff->autoCtrlValues&affect;
- }
- }
- rep.supported = XkbPCF_AllFlagsMask;
- rep.value= client->xkbClientFlags&XkbPCF_AllFlagsMask;
- if (interest) {
- rep.autoCtrls= interest->autoCtrls;
- rep.autoCtrlValues= interest->autoCtrlValues;
- }
- else {
- rep.autoCtrls= rep.autoCtrlValues= 0;
- }
- if ( client->swapped ) {
- register int n;
- swaps(&rep.sequenceNumber, n);
- swapl(&rep.supported,n);
- swapl(&rep.value,n);
- swapl(&rep.autoCtrls,n);
- swapl(&rep.autoCtrlValues,n);
- }
- WriteToClient(client,SIZEOF(xkbPerClientFlagsReply), (char *)&rep);
- return Success;
-}
-
-/***====================================================================***/
-
-/* all latin-1 alphanumerics, plus parens, minus, underscore, slash */
-/* and wildcards */
-static unsigned char componentSpecLegal[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0xff, 0x87,
- 0xfe, 0xff, 0xff, 0x87, 0xfe, 0xff, 0xff, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff
-};
-
-/* same as above but accepts percent, plus and bar too */
-static unsigned char componentExprLegal[] = {
- 0x00, 0x00, 0x00, 0x00, 0x20, 0xaf, 0xff, 0x87,
- 0xfe, 0xff, 0xff, 0x87, 0xfe, 0xff, 0xff, 0x17,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff
-};
-
-static char *
-GetComponentSpec(unsigned char **pWire,Bool allowExpr,int *errRtrn)
-{
-int len;
-register int i;
-unsigned char *wire,*str,*tmp,*legal;
-
- if (allowExpr) legal= &componentExprLegal[0];
- else legal= &componentSpecLegal[0];
-
- wire= *pWire;
- len= (*(unsigned char *)wire++);
- if (len>0) {
- str= calloc(1, len+1);
- if (str) {
- tmp= str;
- for (i=0;i<len;i++) {
- if (legal[(*wire)/8]&(1<<((*wire)%8)))
- *tmp++= *wire++;
- else wire++;
- }
- if (tmp!=str)
- *tmp++= '\0';
- else {
- free(str);
- str= NULL;
- }
- }
- else {
- *errRtrn= BadAlloc;
- }
- }
- else {
- str= NULL;
- }
- *pWire= wire;
- return (char *)str;
-}
-
-/***====================================================================***/
-
-int
-ProcXkbListComponents(ClientPtr client)
-{
- DeviceIntPtr dev;
- xkbListComponentsReply rep;
- unsigned len;
- int status;
- unsigned char * str;
- XkbSrvListInfoRec list;
-
- REQUEST(xkbListComponentsReq);
- REQUEST_AT_LEAST_SIZE(xkbListComponentsReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
-
- status= Success;
- str= (unsigned char *)&stuff[1];
- memset(&list, 0, sizeof(XkbSrvListInfoRec));
- list.maxRtrn= stuff->maxNames;
- list.pattern[_XkbListKeycodes]= GetComponentSpec(&str,FALSE,&status);
- list.pattern[_XkbListTypes]= GetComponentSpec(&str,FALSE,&status);
- list.pattern[_XkbListCompat]= GetComponentSpec(&str,FALSE,&status);
- list.pattern[_XkbListSymbols]= GetComponentSpec(&str,FALSE,&status);
- list.pattern[_XkbListGeometry]= GetComponentSpec(&str,FALSE,&status);
- if (status!=Success)
- return status;
- len= str-((unsigned char *)stuff);
- if ((XkbPaddedSize(len)/4)!=stuff->length)
- return BadLength;
- if ((status=XkbDDXList(dev,&list,client))!=Success) {
- free(list.pool);
- list.pool = NULL;
- return status;
- }
- memset(&rep, 0, sizeof(xkbListComponentsReply));
- rep.type= X_Reply;
- rep.deviceID = dev->id;
- rep.sequenceNumber = client->sequence;
- rep.length = XkbPaddedSize(list.nPool)/4;
- rep.nKeymaps = 0;
- rep.nKeycodes = list.nFound[_XkbListKeycodes];
- rep.nTypes = list.nFound[_XkbListTypes];
- rep.nCompatMaps = list.nFound[_XkbListCompat];
- rep.nSymbols = list.nFound[_XkbListSymbols];
- rep.nGeometries = list.nFound[_XkbListGeometry];
- rep.extra= 0;
- if (list.nTotal>list.maxRtrn)
- rep.extra = (list.nTotal-list.maxRtrn);
- if (client->swapped) {
- register int n;
- swaps(&rep.sequenceNumber,n);
- swapl(&rep.length,n);
- swaps(&rep.nKeymaps,n);
- swaps(&rep.nKeycodes,n);
- swaps(&rep.nTypes,n);
- swaps(&rep.nCompatMaps,n);
- swaps(&rep.nSymbols,n);
- swaps(&rep.nGeometries,n);
- swaps(&rep.extra,n);
- }
- WriteToClient(client,SIZEOF(xkbListComponentsReply),(char *)&rep);
- if (list.nPool && list.pool) {
- WriteToClient(client,XkbPaddedSize(list.nPool), (char *)list.pool);
- free(list.pool);
- list.pool= NULL;
- }
- return Success;
-}
-
-/***====================================================================***/
-
-int
-ProcXkbGetKbdByName(ClientPtr client)
-{
- DeviceIntPtr dev;
- DeviceIntPtr tmpd;
- xkbGetKbdByNameReply rep;
- xkbGetMapReply mrep;
- xkbGetCompatMapReply crep;
- xkbGetIndicatorMapReply irep;
- xkbGetNamesReply nrep;
- xkbGetGeometryReply grep;
- XkbComponentNamesRec names;
- XkbDescPtr xkb, new;
- unsigned char * str;
- char mapFile[PATH_MAX];
- unsigned len;
- unsigned fwant,fneed,reported;
- int status;
- Bool geom_changed;
- XkbSrvLedInfoPtr old_sli;
- XkbSrvLedInfoPtr sli;
- Mask access_mode = DixGetAttrAccess | DixManageAccess;
-
- REQUEST(xkbGetKbdByNameReq);
- REQUEST_AT_LEAST_SIZE(xkbGetKbdByNameReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- memset(&mrep,0,sizeof(mrep)); //MH
-
- CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, access_mode);
-
- xkb = dev->key->xkbInfo->desc;
- status= Success;
- str= (unsigned char *)&stuff[1];
- if (GetComponentSpec(&str,TRUE,&status)) /* keymap, unsupported */
- return BadMatch;
- names.keycodes= GetComponentSpec(&str,TRUE,&status);
- names.types= GetComponentSpec(&str,TRUE,&status);
- names.compat= GetComponentSpec(&str,TRUE,&status);
- names.symbols= GetComponentSpec(&str,TRUE,&status);
- names.geometry= GetComponentSpec(&str,TRUE,&status);
- if (status!=Success)
- return status;
- len= str-((unsigned char *)stuff);
- if ((XkbPaddedSize(len)/4)!=stuff->length)
- return BadLength;
-
- CHK_MASK_LEGAL(0x01,stuff->want,XkbGBN_AllComponentsMask);
- CHK_MASK_LEGAL(0x02,stuff->need,XkbGBN_AllComponentsMask);
-
- if (stuff->load)
- fwant= XkbGBN_AllComponentsMask;
- else fwant= stuff->want|stuff->need;
- if ((!names.compat)&&
- (fwant&(XkbGBN_CompatMapMask|XkbGBN_IndicatorMapMask))) {
- names.compat= _XkbDupString("%");
- }
- if ((!names.types)&&(fwant&(XkbGBN_TypesMask))) {
- names.types= _XkbDupString("%");
- }
- if ((!names.symbols)&&(fwant&XkbGBN_SymbolsMask)) {
- names.symbols= _XkbDupString("%");
- }
- geom_changed= ((names.geometry!=NULL)&&(strcmp(names.geometry,"%")!=0));
- if ((!names.geometry)&&(fwant&XkbGBN_GeometryMask)) {
- names.geometry= _XkbDupString("%");
- geom_changed= FALSE;
- }
-
- memset(mapFile, 0, PATH_MAX);
- rep.type= X_Reply;
- rep.deviceID = dev->id;
- rep.sequenceNumber = client->sequence;
- rep.length = 0;
- rep.minKeyCode = xkb->min_key_code;
- rep.maxKeyCode = xkb->max_key_code;
- rep.loaded= FALSE;
- fwant= XkbConvertGetByNameComponents(TRUE,stuff->want)|XkmVirtualModsMask;
- fneed= XkbConvertGetByNameComponents(TRUE,stuff->need);
- rep.reported= XkbConvertGetByNameComponents(FALSE,fwant|fneed);
- if (stuff->load) {
- fneed|= XkmKeymapRequired;
- fwant|= XkmKeymapLegal;
- }
- if ((fwant|fneed)&XkmSymbolsMask) {
- fneed|= XkmKeyNamesIndex|XkmTypesIndex;
- fwant|= XkmIndicatorsIndex;
- }
-
- /* We pass dev in here so we can get the old names out if needed. */
- rep.found = XkbDDXLoadKeymapByNames(dev,&names,fwant,fneed,&new,
- mapFile,PATH_MAX);
- rep.newKeyboard= FALSE;
- rep.pad1= rep.pad2= rep.pad3= rep.pad4= 0;
-
- stuff->want|= stuff->need;
- if (new==NULL)
- rep.reported= 0;
- else {
- if (stuff->load)
- rep.loaded= TRUE;
- if (stuff->load ||
- ((rep.reported&XkbGBN_SymbolsMask) && (new->compat))) {
- XkbChangesRec changes;
- memset(&changes, 0, sizeof(changes));
- XkbUpdateDescActions(new,
- new->min_key_code,XkbNumKeys(new),
- &changes);
- }
-
- if (new->map==NULL)
- rep.reported&= ~(XkbGBN_SymbolsMask|XkbGBN_TypesMask);
- else if (rep.reported&(XkbGBN_SymbolsMask|XkbGBN_TypesMask)) {
- mrep.type= X_Reply;
- mrep.deviceID = dev->id;
- mrep.sequenceNumber= client->sequence;
- mrep.length = ((SIZEOF(xkbGetMapReply)-SIZEOF(xGenericReply))>>2);
- mrep.minKeyCode = new->min_key_code;
- mrep.maxKeyCode = new->max_key_code;
- mrep.present = 0;
- mrep.totalSyms = mrep.totalActs =
- mrep.totalKeyBehaviors= mrep.totalKeyExplicit=
- mrep.totalModMapKeys= mrep.totalVModMapKeys= 0;
- if (rep.reported&(XkbGBN_TypesMask|XkbGBN_ClientSymbolsMask)) {
- mrep.present|= XkbKeyTypesMask;
- mrep.firstType = 0;
- mrep.nTypes = mrep.totalTypes= new->map->num_types;
- }
- else {
- mrep.firstType = mrep.nTypes= 0;
- mrep.totalTypes= 0;
- }
- if (rep.reported&XkbGBN_ClientSymbolsMask) {
- mrep.present|= (XkbKeySymsMask|XkbModifierMapMask);
- mrep.firstKeySym = mrep.firstModMapKey= new->min_key_code;
- mrep.nKeySyms = mrep.nModMapKeys= XkbNumKeys(new);
- }
- else {
- mrep.firstKeySym= mrep.firstModMapKey= 0;
- mrep.nKeySyms= mrep.nModMapKeys= 0;
- }
- if (rep.reported&XkbGBN_ServerSymbolsMask) {
- mrep.present|= XkbAllServerInfoMask;
- mrep.virtualMods= ~0;
- mrep.firstKeyAct = mrep.firstKeyBehavior =
- mrep.firstKeyExplicit = new->min_key_code;
- mrep.nKeyActs = mrep.nKeyBehaviors =
- mrep.nKeyExplicit = XkbNumKeys(new);
- mrep.firstVModMapKey= new->min_key_code;
- mrep.nVModMapKeys= XkbNumKeys(new);
- }
- else {
- mrep.virtualMods= 0;
- mrep.firstKeyAct= mrep.firstKeyBehavior=
- mrep.firstKeyExplicit = 0;
- mrep.nKeyActs= mrep.nKeyBehaviors= mrep.nKeyExplicit= 0;
- }
- XkbComputeGetMapReplySize(new,&mrep);
- rep.length+= SIZEOF(xGenericReply)/4+mrep.length;
- }
- if (new->compat==NULL)
- rep.reported&= ~XkbGBN_CompatMapMask;
- else if (rep.reported&XkbGBN_CompatMapMask) {
- crep.type= X_Reply;
- crep.deviceID= dev->id;
- crep.sequenceNumber= client->sequence;
- crep.length= 0;
- crep.groups= XkbAllGroupsMask;
- crep.firstSI= 0;
- crep.nSI= crep.nTotalSI= new->compat->num_si;
- XkbComputeGetCompatMapReplySize(new->compat,&crep);
- rep.length+= SIZEOF(xGenericReply)/4+crep.length;
- }
- if (new->indicators==NULL)
- rep.reported&= ~XkbGBN_IndicatorMapMask;
- else if (rep.reported&XkbGBN_IndicatorMapMask) {
- irep.type= X_Reply;
- irep.deviceID= dev->id;
- irep.sequenceNumber= client->sequence;
- irep.length= 0;
- irep.which= XkbAllIndicatorsMask;
- XkbComputeGetIndicatorMapReplySize(new->indicators,&irep);
- rep.length+= SIZEOF(xGenericReply)/4+irep.length;
- }
- if (new->names==NULL)
- rep.reported&= ~(XkbGBN_OtherNamesMask|XkbGBN_KeyNamesMask);
- else if (rep.reported&(XkbGBN_OtherNamesMask|XkbGBN_KeyNamesMask)) {
- nrep.type= X_Reply;
- nrep.deviceID= dev->id;
- nrep.sequenceNumber= client->sequence;
- nrep.length= 0;
- nrep.minKeyCode= new->min_key_code;
- nrep.maxKeyCode= new->max_key_code;
- if (rep.reported&XkbGBN_OtherNamesMask) {
- nrep.which= XkbAllNamesMask;
- if (new->map!=NULL)
- nrep.nTypes= new->map->num_types;
- else nrep.nTypes= 0;
- nrep.nKTLevels= 0;
- nrep.groupNames= XkbAllGroupsMask;
- nrep.virtualMods= XkbAllVirtualModsMask;
- nrep.indicators= XkbAllIndicatorsMask;
- nrep.nRadioGroups= new->names->num_rg;
- }
- else {
- nrep.which= 0;
- nrep.nTypes= 0;
- nrep.nKTLevels= 0;
- nrep.groupNames= 0;
- nrep.virtualMods= 0;
- nrep.indicators= 0;
- nrep.nRadioGroups= 0;
- }
- if (rep.reported&XkbGBN_KeyNamesMask) {
- nrep.which|= XkbKeyNamesMask;
- nrep.firstKey= new->min_key_code;
- nrep.nKeys= XkbNumKeys(new);
- nrep.nKeyAliases= new->names->num_key_aliases;
- if (nrep.nKeyAliases)
- nrep.which|= XkbKeyAliasesMask;
- }
- else {
- nrep.which&= ~(XkbKeyNamesMask|XkbKeyAliasesMask);
- nrep.firstKey= nrep.nKeys= 0;
- nrep.nKeyAliases= 0;
- }
- XkbComputeGetNamesReplySize(new,&nrep);
- rep.length+= SIZEOF(xGenericReply)/4+nrep.length;
- }
- if (new->geom==NULL)
- rep.reported&= ~XkbGBN_GeometryMask;
- else if (rep.reported&XkbGBN_GeometryMask) {
- grep.type= X_Reply;
- grep.deviceID= dev->id;
- grep.sequenceNumber= client->sequence;
- grep.length= 0;
- grep.found= TRUE;
- grep.pad= 0;
- grep.widthMM= grep.heightMM= 0;
- grep.nProperties= grep.nColors= grep.nShapes= 0;
- grep.nSections= grep.nDoodads= 0;
- grep.baseColorNdx= grep.labelColorNdx= 0;
- XkbComputeGetGeometryReplySize(new->geom,&grep,None);
- rep.length+= SIZEOF(xGenericReply)/4+grep.length;
- }
- }
-
- reported= rep.reported;
- if ( client->swapped ) {
- register int n;
- swaps(&rep.sequenceNumber,n);
- swapl(&rep.length,n);
- swaps(&rep.found,n);
- swaps(&rep.reported,n);
- }
- WriteToClient(client,SIZEOF(xkbGetKbdByNameReply), (char *)&rep);
- if (reported&(XkbGBN_SymbolsMask|XkbGBN_TypesMask))
- XkbSendMap(client,new,&mrep);
- if (reported&XkbGBN_CompatMapMask)
- XkbSendCompatMap(client,new->compat,&crep);
- if (reported&XkbGBN_IndicatorMapMask)
- XkbSendIndicatorMap(client,new->indicators,&irep);
- if (reported&(XkbGBN_KeyNamesMask|XkbGBN_OtherNamesMask))
- XkbSendNames(client,new,&nrep);
- if (reported&XkbGBN_GeometryMask)
- XkbSendGeometry(client,new->geom,&grep,FALSE);
- if (rep.loaded) {
- XkbDescPtr old_xkb;
- xkbNewKeyboardNotify nkn;
- int i,nG,nTG;
- old_xkb= xkb;
- xkb= new;
- dev->key->xkbInfo->desc= xkb;
- new= old_xkb; /* so it'll get freed automatically */
-
- *xkb->ctrls= *old_xkb->ctrls;
- for (nG=nTG=0,i=xkb->min_key_code;i<=xkb->max_key_code;i++) {
- nG= XkbKeyNumGroups(xkb,i);
- if (nG>=XkbNumKbdGroups) {
- nTG= XkbNumKbdGroups;
- break;
- }
- if (nG>nTG) {
- nTG= nG;
- }
- }
- xkb->ctrls->num_groups= nTG;
-
- for (tmpd = inputInfo.devices; tmpd; tmpd = tmpd->next) {
- if ((tmpd == dev) || (!IsMaster(tmpd) && GetMaster(tmpd, MASTER_KEYBOARD) == dev)) {
- if (tmpd != dev)
- XkbCopyDeviceKeymap(tmpd, dev);
-
- if (tmpd->kbdfeed && tmpd->kbdfeed->xkb_sli) {
- old_sli = tmpd->kbdfeed->xkb_sli;
- tmpd->kbdfeed->xkb_sli = NULL;
- sli = XkbAllocSrvLedInfo(tmpd, tmpd->kbdfeed, NULL, 0);
- if (sli) {
- sli->explicitState = old_sli->explicitState;
- sli->effectiveState = old_sli->effectiveState;
- }
- tmpd->kbdfeed->xkb_sli = sli;
- XkbFreeSrvLedInfo(old_sli);
- }
- }
- }
-
- nkn.deviceID= nkn.oldDeviceID= dev->id;
- nkn.minKeyCode= new->min_key_code;
- nkn.maxKeyCode= new->max_key_code;
- nkn.oldMinKeyCode= xkb->min_key_code;
- nkn.oldMaxKeyCode= xkb->max_key_code;
- nkn.requestMajor= XkbReqCode;
- nkn.requestMinor= X_kbGetKbdByName;
- nkn.changed= XkbNKN_KeycodesMask;
- if (geom_changed)
- nkn.changed|= XkbNKN_GeometryMask;
- XkbSendNewKeyboardNotify(dev,&nkn);
-
- if (!IsMaster(dev) && dev->u.master)
- {
- DeviceIntPtr master = dev->u.master;
- if (master->u.lastSlave == dev)
- {
- XkbCopyDeviceKeymap(dev->u.master, dev);
- XkbSendNewKeyboardNotify(dev,&nkn);
- }
- }
- }
- if ((new!=NULL)&&(new!=xkb)) {
- XkbFreeKeyboard(new,XkbAllComponentsMask,TRUE);
- new= NULL;
- }
- free(names.keycodes);
- names.keycodes = NULL;
- free(names.types);
- names.types = NULL;
- free(names.compat);
- names.compat = NULL;
- free(names.symbols);
- names.symbols = NULL;
- free(names.geometry);
- names.geometry = NULL;
- return Success;
-}
-
-/***====================================================================***/
-
-static int
-ComputeDeviceLedInfoSize( DeviceIntPtr dev,
- unsigned int what,
- XkbSrvLedInfoPtr sli)
-{
-int nNames,nMaps;
-register unsigned n,bit;
-
- if (sli==NULL)
- return 0;
- nNames= nMaps= 0;
- if ((what&XkbXI_IndicatorNamesMask)==0)
- sli->namesPresent= 0;
- if ((what&XkbXI_IndicatorMapsMask)==0)
- sli->mapsPresent= 0;
-
- for (n=0,bit=1;n<XkbNumIndicators;n++,bit<<=1) {
- if (sli->names && sli->names[n]!=None) {
- sli->namesPresent|= bit;
- nNames++;
- }
- if (sli->maps && XkbIM_InUse(&sli->maps[n])) {
- sli->mapsPresent|= bit;
- nMaps++;
- }
- }
- return (nNames*4)+(nMaps*SIZEOF(xkbIndicatorMapWireDesc));
-}
-
-static int
-CheckDeviceLedFBs( DeviceIntPtr dev,
- int class,
- int id,
- xkbGetDeviceInfoReply * rep,
- ClientPtr client)
-{
-int nFBs= 0;
-int length= 0;
-Bool classOk;
-
- if (class==XkbDfltXIClass) {
- if (dev->kbdfeed) class= KbdFeedbackClass;
- else if (dev->leds) class= LedFeedbackClass;
- else {
- client->errorValue= _XkbErrCode2(XkbErr_BadClass,class);
- return XkbKeyboardErrorCode;
- }
- }
- classOk= FALSE;
- if ((dev->kbdfeed)&&((class==KbdFeedbackClass)||(class==XkbAllXIClasses))) {
- KbdFeedbackPtr kf;
- classOk= TRUE;
- for (kf= dev->kbdfeed;(kf);kf=kf->next) {
- if ((id!=XkbAllXIIds)&&(id!=XkbDfltXIId)&&(id!=kf->ctrl.id))
- continue;
- nFBs++;
- length+= SIZEOF(xkbDeviceLedsWireDesc);
- if (!kf->xkb_sli)
- kf->xkb_sli= XkbAllocSrvLedInfo(dev,kf,NULL,0);
- length+= ComputeDeviceLedInfoSize(dev,rep->present,kf->xkb_sli);
- if (id!=XkbAllXIIds)
- break;
- }
- }
- if ((dev->leds)&&((class==LedFeedbackClass)||(class==XkbAllXIClasses))) {
- LedFeedbackPtr lf;
- classOk= TRUE;
- for (lf= dev->leds;(lf);lf=lf->next) {
- if ((id!=XkbAllXIIds)&&(id!=XkbDfltXIId)&&(id!=lf->ctrl.id))
- continue;
- nFBs++;
- length+= SIZEOF(xkbDeviceLedsWireDesc);
- if (!lf->xkb_sli)
- lf->xkb_sli= XkbAllocSrvLedInfo(dev,NULL,lf,0);
- length+= ComputeDeviceLedInfoSize(dev,rep->present,lf->xkb_sli);
- if (id!=XkbAllXIIds)
- break;
- }
- }
- if (nFBs>0) {
- rep->nDeviceLedFBs= nFBs;
- rep->length+= (length/4);
- return Success;
- }
- if (classOk) client->errorValue= _XkbErrCode2(XkbErr_BadId,id);
- else client->errorValue= _XkbErrCode2(XkbErr_BadClass,class);
- return XkbKeyboardErrorCode;
-}
-
-static int
-SendDeviceLedInfo( XkbSrvLedInfoPtr sli,
- ClientPtr client)
-{
-xkbDeviceLedsWireDesc wire;
-int length;
-
- length= 0;
- wire.ledClass= sli->class;
- wire.ledID= sli->id;
- wire.namesPresent= sli->namesPresent;
- wire.mapsPresent= sli->mapsPresent;
- wire.physIndicators= sli->physIndicators;
- wire.state= sli->effectiveState;
- if (client->swapped) {
- register int n;
- swaps(&wire.ledClass,n);
- swaps(&wire.ledID,n);
- swapl(&wire.namesPresent,n);
- swapl(&wire.mapsPresent,n);
- swapl(&wire.physIndicators,n);
- swapl(&wire.state,n);
- }
- WriteToClient(client,SIZEOF(xkbDeviceLedsWireDesc),(char *)&wire);
- length+= SIZEOF(xkbDeviceLedsWireDesc);
- if (sli->namesPresent|sli->mapsPresent) {
- register unsigned i,bit;
- if (sli->namesPresent) {
- CARD32 awire;
- for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
- if (sli->namesPresent&bit) {
- awire= (CARD32)sli->names[i];
- if (client->swapped) {
- register int n;
- swapl(&awire,n);
- }
- WriteToClient(client,4,(char *)&awire);
- length+= 4;
- }
- }
- }
- if (sli->mapsPresent) {
- for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
- xkbIndicatorMapWireDesc iwire;
- if (sli->mapsPresent&bit) {
- iwire.flags= sli->maps[i].flags;
- iwire.whichGroups= sli->maps[i].which_groups;
- iwire.groups= sli->maps[i].groups;
- iwire.whichMods= sli->maps[i].which_mods;
- iwire.mods= sli->maps[i].mods.mask;
- iwire.realMods= sli->maps[i].mods.real_mods;
- iwire.virtualMods= sli->maps[i].mods.vmods;
- iwire.ctrls= sli->maps[i].ctrls;
- if (client->swapped) {
- register int n;
- swaps(&iwire.virtualMods,n);
- swapl(&iwire.ctrls,n);
- }
- WriteToClient(client,SIZEOF(xkbIndicatorMapWireDesc),
- (char *)&iwire);
- length+= SIZEOF(xkbIndicatorMapWireDesc);
- }
- }
- }
- }
- return length;
-}
-
-static int
-SendDeviceLedFBs( DeviceIntPtr dev,
- int class,
- int id,
- unsigned wantLength,
- ClientPtr client)
-{
-int length= 0;
-
- if (class==XkbDfltXIClass) {
- if (dev->kbdfeed) class= KbdFeedbackClass;
- else if (dev->leds) class= LedFeedbackClass;
- }
- if ((dev->kbdfeed)&&
- ((class==KbdFeedbackClass)||(class==XkbAllXIClasses))) {
- KbdFeedbackPtr kf;
- for (kf= dev->kbdfeed;(kf);kf=kf->next) {
- if ((id==XkbAllXIIds)||(id==XkbDfltXIId)||(id==kf->ctrl.id)) {
- length+= SendDeviceLedInfo(kf->xkb_sli,client);
- if (id!=XkbAllXIIds)
- break;
- }
- }
- }
- if ((dev->leds)&&
- ((class==LedFeedbackClass)||(class==XkbAllXIClasses))) {
- LedFeedbackPtr lf;
- for (lf= dev->leds;(lf);lf=lf->next) {
- if ((id==XkbAllXIIds)||(id==XkbDfltXIId)||(id==lf->ctrl.id)) {
- length+= SendDeviceLedInfo(lf->xkb_sli,client);
- if (id!=XkbAllXIIds)
- break;
- }
- }
- }
- if (length==wantLength)
- return Success;
- else return BadLength;
-}
-
-int
-ProcXkbGetDeviceInfo(ClientPtr client)
-{
-DeviceIntPtr dev;
-xkbGetDeviceInfoReply rep;
-int status,nDeviceLedFBs;
-unsigned length,nameLen;
-CARD16 ledClass,ledID;
-unsigned wanted;
-char * str;
-
- REQUEST(xkbGetDeviceInfoReq);
- REQUEST_SIZE_MATCH(xkbGetDeviceInfoReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- wanted= stuff->wanted;
-
- CHK_ANY_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
- CHK_MASK_LEGAL(0x01,wanted,XkbXI_AllDeviceFeaturesMask);
-
- if ((!dev->button)||((stuff->nBtns<1)&&(!stuff->allBtns)))
- wanted&= ~XkbXI_ButtonActionsMask;
- if ((!dev->kbdfeed)&&(!dev->leds))
- wanted&= ~XkbXI_IndicatorsMask;
-
- nameLen= XkbSizeCountedString(dev->name);
- memset((char *)&rep, 0, SIZEOF(xkbGetDeviceInfoReply));
- rep.type = X_Reply;
- rep.deviceID= dev->id;
- rep.sequenceNumber = client->sequence;
- rep.length = nameLen/4;
- rep.present = wanted;
- rep.supported = XkbXI_AllDeviceFeaturesMask;
- rep.unsupported = 0;
- rep.firstBtnWanted = rep.nBtnsWanted = 0;
- rep.firstBtnRtrn = rep.nBtnsRtrn = 0;
- if (dev->button)
- rep.totalBtns= dev->button->numButtons;
- else rep.totalBtns= 0;
- rep.devType= dev->xinput_type;
- rep.hasOwnState= (dev->key && dev->key->xkbInfo);
- rep.nDeviceLedFBs = 0;
- if (dev->kbdfeed) rep.dfltKbdFB= dev->kbdfeed->ctrl.id;
- else rep.dfltKbdFB= XkbXINone;
- if (dev->leds) rep.dfltLedFB= dev->leds->ctrl.id;
- else rep.dfltLedFB= XkbXINone;
-
- ledClass= stuff->ledClass;
- ledID= stuff->ledID;
-
- rep.firstBtnWanted= rep.nBtnsWanted= 0;
- rep.firstBtnRtrn= rep.nBtnsRtrn= 0;
- if (wanted&XkbXI_ButtonActionsMask) {
- if (stuff->allBtns) {
- stuff->firstBtn= 0;
- stuff->nBtns= dev->button->numButtons;
- }
-
- if ((stuff->firstBtn+stuff->nBtns)>dev->button->numButtons) {
- client->errorValue = _XkbErrCode4(0x02,dev->button->numButtons,
- stuff->firstBtn,
- stuff->nBtns);
- return BadValue;
- }
- else {
- rep.firstBtnWanted= stuff->firstBtn;
- rep.nBtnsWanted= stuff->nBtns;
- if (dev->button->xkb_acts!=NULL) {
- XkbAction *act;
- register int i;
-
- rep.firstBtnRtrn= stuff->firstBtn;
- rep.nBtnsRtrn= stuff->nBtns;
- act= &dev->button->xkb_acts[rep.firstBtnWanted];
- for (i=0;i<rep.nBtnsRtrn;i++,act++) {
- if (act->type!=XkbSA_NoAction)
- break;
- }
- rep.firstBtnRtrn+= i;
- rep.nBtnsRtrn-= i;
- act= &dev->button->xkb_acts[rep.firstBtnRtrn+rep.nBtnsRtrn-1];
- for (i=0;i<rep.nBtnsRtrn;i++,act--) {
- if (act->type!=XkbSA_NoAction)
- break;
- }
- rep.nBtnsRtrn-= i;
- }
- rep.length+= (rep.nBtnsRtrn*SIZEOF(xkbActionWireDesc))/4;
- }
- }
-
- if (wanted&XkbXI_IndicatorsMask) {
- status= CheckDeviceLedFBs(dev,ledClass,ledID,&rep,client);
- if (status!=Success)
- return status;
- }
- length= rep.length*4;
- nDeviceLedFBs = rep.nDeviceLedFBs;
- if (client->swapped) {
- register int n;
- swaps(&rep.sequenceNumber,n);
- swapl(&rep.length,n);
- swaps(&rep.present,n);
- swaps(&rep.supported,n);
- swaps(&rep.unsupported,n);
- swaps(&rep.nDeviceLedFBs,n);
- swapl(&rep.type,n);
- }
- WriteToClient(client,SIZEOF(xkbGetDeviceInfoReply), (char *)&rep);
-
- str= malloc(nameLen);
- if (!str)
- return BadAlloc;
- XkbWriteCountedString(str,dev->name,client->swapped);
- WriteToClient(client,nameLen,str);
- free(str);
- length-= nameLen;
-
- if (rep.nBtnsRtrn>0) {
- int sz;
- xkbActionWireDesc * awire;
- sz= rep.nBtnsRtrn*SIZEOF(xkbActionWireDesc);
- awire= (xkbActionWireDesc *)&dev->button->xkb_acts[rep.firstBtnRtrn];
- WriteToClient(client,sz,(char *)awire);
- length-= sz;
- }
- if (nDeviceLedFBs>0) {
- status= SendDeviceLedFBs(dev,ledClass,ledID,length,client);
- if (status!=Success)
- return status;
- }
- else if (length!=0) {
- ErrorF("[xkb] Internal Error! BadLength in ProcXkbGetDeviceInfo\n");
- ErrorF("[xkb] Wrote %d fewer bytes than expected\n",length);
- return BadLength;
- }
- return Success;
-}
-
-static char *
-CheckSetDeviceIndicators( char * wire,
- DeviceIntPtr dev,
- int num,
- int * status_rtrn,
- ClientPtr client)
-{
-xkbDeviceLedsWireDesc * ledWire;
-int i;
-XkbSrvLedInfoPtr sli;
-
- ledWire= (xkbDeviceLedsWireDesc *)wire;
- for (i=0;i<num;i++) {
- if (client->swapped) {
- register int n;
- swaps(&ledWire->ledClass,n);
- swaps(&ledWire->ledID,n);
- swapl(&ledWire->namesPresent,n);
- swapl(&ledWire->mapsPresent,n);
- swapl(&ledWire->physIndicators,n);
- }
-
- sli= XkbFindSrvLedInfo(dev,ledWire->ledClass,ledWire->ledID,
- XkbXI_IndicatorsMask);
- if (sli!=NULL) {
- register int n;
- register unsigned bit;
- int nMaps,nNames;
- CARD32 *atomWire;
- xkbIndicatorMapWireDesc *mapWire;
-
- nMaps= nNames= 0;
- for (n=0,bit=1;n<XkbNumIndicators;n++,bit<<=1) {
- if (ledWire->namesPresent&bit)
- nNames++;
- if (ledWire->mapsPresent&bit)
- nMaps++;
- }
- atomWire= (CARD32 *)&ledWire[1];
- if (nNames>0) {
- for (n=0;n<nNames;n++) {
- if (client->swapped) {
- register int t;
- swapl(atomWire,t);
- }
- CHK_ATOM_OR_NONE3(((Atom)(*atomWire)),client->errorValue,
- *status_rtrn,NULL);
- atomWire++;
- }
- }
- mapWire= (xkbIndicatorMapWireDesc *)atomWire;
- if (nMaps>0) {
- for (n=0;n<nMaps;n++) {
- if (client->swapped) {
- register int t;
- swaps(&mapWire->virtualMods,t);
- swapl(&mapWire->ctrls,t);
- }
- CHK_MASK_LEGAL3(0x21,mapWire->whichGroups,
- XkbIM_UseAnyGroup,
- client->errorValue,
- *status_rtrn,NULL);
- CHK_MASK_LEGAL3(0x22,mapWire->whichMods,XkbIM_UseAnyMods,
- client->errorValue,
- *status_rtrn,NULL);
- mapWire++;
- }
- }
- ledWire= (xkbDeviceLedsWireDesc *)mapWire;
- }
- else {
- /* SHOULD NEVER HAPPEN */
- return (char *)ledWire;
- }
- }
- return (char *)ledWire;
-}
-
-static char *
-SetDeviceIndicators( char * wire,
- DeviceIntPtr dev,
- unsigned changed,
- int num,
- int * status_rtrn,
- ClientPtr client,
- xkbExtensionDeviceNotify *ev)
-{
-xkbDeviceLedsWireDesc * ledWire;
-int i;
-XkbEventCauseRec cause;
-unsigned namec,mapc,statec;
-xkbExtensionDeviceNotify ed;
-XkbChangesRec changes;
-DeviceIntPtr kbd;
-
- memset((char *)&ed, 0, sizeof(xkbExtensionDeviceNotify));
- memset((char *)&changes, 0, sizeof(XkbChangesRec));
- XkbSetCauseXkbReq(&cause,X_kbSetDeviceInfo,client);
- ledWire= (xkbDeviceLedsWireDesc *)wire;
- for (i=0;i<num;i++) {
- register int n;
- register unsigned bit;
- CARD32 * atomWire;
- xkbIndicatorMapWireDesc * mapWire;
- XkbSrvLedInfoPtr sli;
-
- namec= mapc= statec= 0;
- sli= XkbFindSrvLedInfo(dev,ledWire->ledClass,ledWire->ledID,
- XkbXI_IndicatorMapsMask);
- if (!sli) {
- /* SHOULD NEVER HAPPEN!! */
- return (char *)ledWire;
- }
-
- atomWire= (CARD32 *)&ledWire[1];
- if (changed&XkbXI_IndicatorNamesMask) {
- namec= sli->namesPresent|ledWire->namesPresent;
- memset((char *)sli->names, 0, XkbNumIndicators*sizeof(Atom));
- }
- if (ledWire->namesPresent) {
- sli->namesPresent= ledWire->namesPresent;
- memset((char *)sli->names, 0, XkbNumIndicators*sizeof(Atom));
- for (n=0,bit=1;n<XkbNumIndicators;n++,bit<<=1) {
- if (ledWire->namesPresent&bit) {
- sli->names[n]= (Atom)*atomWire;
- if (sli->names[n]==None)
- ledWire->namesPresent&= ~bit;
- atomWire++;
- }
- }
- }
- mapWire= (xkbIndicatorMapWireDesc *)atomWire;
- if (changed&XkbXI_IndicatorMapsMask) {
- mapc= sli->mapsPresent|ledWire->mapsPresent;
- sli->mapsPresent= ledWire->mapsPresent;
- memset((char*)sli->maps, 0, XkbNumIndicators*sizeof(XkbIndicatorMapRec));
- }
- if (ledWire->mapsPresent) {
- for (n=0,bit=1;n<XkbNumIndicators;n++,bit<<=1) {
- if (ledWire->mapsPresent&bit) {
- sli->maps[n].flags= mapWire->flags;
- sli->maps[n].which_groups= mapWire->whichGroups;
- sli->maps[n].groups= mapWire->groups;
- sli->maps[n].which_mods= mapWire->whichMods;
- sli->maps[n].mods.mask= mapWire->mods;
- sli->maps[n].mods.real_mods=mapWire->realMods;
- sli->maps[n].mods.vmods= mapWire->virtualMods;
- sli->maps[n].ctrls= mapWire->ctrls;
- mapWire++;
- }
- }
- }
- if (changed&XkbXI_IndicatorStateMask) {
- statec= sli->effectiveState^ledWire->state;
- sli->explicitState&= ~statec;
- sli->explicitState|= (ledWire->state&statec);
- }
- if (namec)
- XkbApplyLedNameChanges(dev,sli,namec,&ed,&changes,&cause);
- if (mapc)
- XkbApplyLedMapChanges(dev,sli,mapc,&ed,&changes,&cause);
- if (statec)
- XkbApplyLedStateChanges(dev,sli,statec,&ed,&changes,&cause);
-
- kbd= dev;
- if ((sli->flags&XkbSLI_HasOwnState)==0)
- kbd = inputInfo.keyboard;
-
- XkbFlushLedEvents(dev,kbd,sli,&ed,&changes,&cause);
- ledWire= (xkbDeviceLedsWireDesc *)mapWire;
- }
- return (char *)ledWire;
-}
-
-
-static int
-_XkbSetDeviceInfo(ClientPtr client, DeviceIntPtr dev,
- xkbSetDeviceInfoReq *stuff)
-{
- char *wire;
-
- wire= (char *)&stuff[1];
- if (stuff->change&XkbXI_ButtonActionsMask) {
- if (!dev->button) {
- client->errorValue = _XkbErrCode2(XkbErr_BadClass,ButtonClass);
- return XkbKeyboardErrorCode;
- }
- if ((stuff->firstBtn+stuff->nBtns)>dev->button->numButtons) {
- client->errorValue= _XkbErrCode4(0x02,stuff->firstBtn,stuff->nBtns,
- dev->button->numButtons);
- return BadMatch;
- }
- wire+= (stuff->nBtns*SIZEOF(xkbActionWireDesc));
- }
- if (stuff->change&XkbXI_IndicatorsMask) {
- int status= Success;
- wire= CheckSetDeviceIndicators(wire,dev,stuff->nDeviceLedFBs,
- &status,client);
- if (status!=Success)
- return status;
- }
- if (((wire-((char *)stuff))/4)!=stuff->length)
- return BadLength;
-
- return Success;
-}
-
-static int
-_XkbSetDeviceInfoCheck(ClientPtr client, DeviceIntPtr dev,
- xkbSetDeviceInfoReq *stuff)
-{
- char *wire;
- xkbExtensionDeviceNotify ed;
-
- memset((char *)&ed, 0, SIZEOF(xkbExtensionDeviceNotify));
- ed.deviceID= dev->id;
- wire= (char *)&stuff[1];
- if (stuff->change&XkbXI_ButtonActionsMask) {
- int nBtns,sz,i;
- XkbAction * acts;
- DeviceIntPtr kbd;
-
- nBtns= dev->button->numButtons;
- acts= dev->button->xkb_acts;
- if (acts==NULL) {
- acts= calloc(nBtns, sizeof(XkbAction));
- if (!acts)
- return BadAlloc;
- dev->button->xkb_acts= acts;
- }
- sz= stuff->nBtns*SIZEOF(xkbActionWireDesc);
- memcpy((char *)&acts[stuff->firstBtn],(char *)wire,sz);
- wire+= sz;
- ed.reason|= XkbXI_ButtonActionsMask;
- ed.firstBtn= stuff->firstBtn;
- ed.nBtns= stuff->nBtns;
-
- if (dev->key) kbd= dev;
- else kbd= inputInfo.keyboard;
- acts= &dev->button->xkb_acts[stuff->firstBtn];
- for (i=0;i<stuff->nBtns;i++,acts++) {
- if (acts->type!=XkbSA_NoAction)
- XkbSetActionKeyMods(kbd->key->xkbInfo->desc,acts,0);
- }
- }
- if (stuff->change&XkbXI_IndicatorsMask) {
- int status= Success;
- wire= SetDeviceIndicators(wire,dev,stuff->change,
- stuff->nDeviceLedFBs, &status,client,&ed);
- if (status!=Success)
- return status;
- }
- if ((stuff->change)&&(ed.reason))
- XkbSendExtensionDeviceNotify(dev,client,&ed);
- return Success;
-}
-
-int
-ProcXkbSetDeviceInfo(ClientPtr client)
-{
- DeviceIntPtr dev;
- int rc;
-
- REQUEST(xkbSetDeviceInfoReq);
- REQUEST_AT_LEAST_SIZE(xkbSetDeviceInfoReq);
-
- if (!(client->xkbClientFlags&_XkbClientInitialized))
- return BadAccess;
-
- CHK_ANY_DEVICE(dev, stuff->deviceSpec, client, DixManageAccess);
- CHK_MASK_LEGAL(0x01,stuff->change,XkbXI_AllFeaturesMask);
-
- rc = _XkbSetDeviceInfoCheck(client, dev, stuff);
-
- if (rc != Success)
- return rc;
-
- if (stuff->deviceSpec == XkbUseCoreKbd || stuff->deviceSpec == XkbUseCorePtr)
- {
- DeviceIntPtr other;
- for (other = inputInfo.devices; other; other = other->next)
- {
- if (((other != dev) && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev) &&
- ((stuff->deviceSpec == XkbUseCoreKbd && other->key) ||
- (stuff->deviceSpec == XkbUseCorePtr && other->button)))
- {
- rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
- if (rc == Success)
- {
- rc = _XkbSetDeviceInfoCheck(client, other, stuff);
- if (rc != Success)
- return rc;
- }
- }
- }
- }
-
- /* checks done, apply */
- rc = _XkbSetDeviceInfo(client, dev, stuff);
- if (rc != Success)
- return rc;
-
- if (stuff->deviceSpec == XkbUseCoreKbd || stuff->deviceSpec == XkbUseCorePtr)
- {
- DeviceIntPtr other;
- for (other = inputInfo.devices; other; other = other->next)
- {
- if (((other != dev) && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev) &&
- ((stuff->deviceSpec == XkbUseCoreKbd && other->key) ||
- (stuff->deviceSpec == XkbUseCorePtr && other->button)))
- {
- rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
- if (rc == Success)
- {
- rc = _XkbSetDeviceInfo(client, other, stuff);
- if (rc != Success)
- return rc;
- }
- }
- }
- }
-
- return Success;
-}
-
-/***====================================================================***/
-
-int
-ProcXkbSetDebuggingFlags(ClientPtr client)
-{
-CARD32 newFlags,newCtrls,extraLength;
-xkbSetDebuggingFlagsReply rep;
-int rc;
-
- REQUEST(xkbSetDebuggingFlagsReq);
- REQUEST_AT_LEAST_SIZE(xkbSetDebuggingFlagsReq);
-
- rc = XaceHook(XACE_SERVER_ACCESS, client, DixDebugAccess);
- if (rc != Success)
- return rc;
-
- newFlags= xkbDebugFlags&(~stuff->affectFlags);
- newFlags|= (stuff->flags&stuff->affectFlags);
- newCtrls= xkbDebugCtrls&(~stuff->affectCtrls);
- newCtrls|= (stuff->ctrls&stuff->affectCtrls);
- if (xkbDebugFlags || newFlags || stuff->msgLength) {
- ErrorF("[xkb] XkbDebug: Setting debug flags to 0x%lx\n",(long)newFlags);
- if (newCtrls!=xkbDebugCtrls)
- ErrorF("[xkb] XkbDebug: Setting debug controls to 0x%lx\n",(long)newCtrls);
- }
- extraLength= (stuff->length<<2)-sz_xkbSetDebuggingFlagsReq;
- if (stuff->msgLength>0) {
- char *msg;
- if (extraLength<XkbPaddedSize(stuff->msgLength)) {
- ErrorF("[xkb] XkbDebug: msgLength= %d, length= %ld (should be %d)\n",
- stuff->msgLength,(long)extraLength,
- XkbPaddedSize(stuff->msgLength));
- return BadLength;
- }
- msg= (char *)&stuff[1];
- if (msg[stuff->msgLength-1]!='\0') {
- ErrorF("[xkb] XkbDebug: message not null-terminated\n");
- return BadValue;
- }
- ErrorF("[xkb] XkbDebug: %s\n",msg);
- }
- xkbDebugFlags = newFlags;
- xkbDebugCtrls = newCtrls;
-
- rep.type= X_Reply;
- rep.length = 0;
- rep.sequenceNumber = client->sequence;
- rep.currentFlags = newFlags;
- rep.currentCtrls = newCtrls;
- rep.supportedFlags = ~0;
- rep.supportedCtrls = ~0;
- if ( client->swapped ) {
- register int n;
- swaps(&rep.sequenceNumber, n);
- swapl(&rep.currentFlags, n);
- swapl(&rep.currentCtrls, n);
- swapl(&rep.supportedFlags, n);
- swapl(&rep.supportedCtrls, n);
- }
- WriteToClient(client,SIZEOF(xkbSetDebuggingFlagsReply), (char *)&rep);
- return Success;
-}
-
-/***====================================================================***/
-
-static int
-ProcXkbDispatch (ClientPtr client)
-{
- REQUEST(xReq);
- switch (stuff->data)
- {
- case X_kbUseExtension:
- return ProcXkbUseExtension(client);
- case X_kbSelectEvents:
- return ProcXkbSelectEvents(client);
- case X_kbBell:
- return ProcXkbBell(client);
- case X_kbGetState:
- return ProcXkbGetState(client);
- case X_kbLatchLockState:
- return ProcXkbLatchLockState(client);
- case X_kbGetControls:
- return ProcXkbGetControls(client);
- case X_kbSetControls:
- return ProcXkbSetControls(client);
- case X_kbGetMap:
- return ProcXkbGetMap(client);
- case X_kbSetMap:
- return ProcXkbSetMap(client);
- case X_kbGetCompatMap:
- return ProcXkbGetCompatMap(client);
- case X_kbSetCompatMap:
- return ProcXkbSetCompatMap(client);
- case X_kbGetIndicatorState:
- return ProcXkbGetIndicatorState(client);
- case X_kbGetIndicatorMap:
- return ProcXkbGetIndicatorMap(client);
- case X_kbSetIndicatorMap:
- return ProcXkbSetIndicatorMap(client);
- case X_kbGetNamedIndicator:
- return ProcXkbGetNamedIndicator(client);
- case X_kbSetNamedIndicator:
- return ProcXkbSetNamedIndicator(client);
- case X_kbGetNames:
- return ProcXkbGetNames(client);
- case X_kbSetNames:
- return ProcXkbSetNames(client);
- case X_kbGetGeometry:
- return ProcXkbGetGeometry(client);
- case X_kbSetGeometry:
- return ProcXkbSetGeometry(client);
- case X_kbPerClientFlags:
- return ProcXkbPerClientFlags(client);
- case X_kbListComponents:
- return ProcXkbListComponents(client);
- case X_kbGetKbdByName:
- return ProcXkbGetKbdByName(client);
- case X_kbGetDeviceInfo:
- return ProcXkbGetDeviceInfo(client);
- case X_kbSetDeviceInfo:
- return ProcXkbSetDeviceInfo(client);
- case X_kbSetDebuggingFlags:
- return ProcXkbSetDebuggingFlags(client);
- default:
- return BadRequest;
- }
-}
-
-static int
-XkbClientGone(pointer data,XID id)
-{
- DevicePtr pXDev = (DevicePtr)data;
-
- if (!XkbRemoveResourceClient(pXDev,id)) {
- ErrorF("[xkb] Internal Error! bad RemoveResourceClient in XkbClientGone\n");
- }
- return 1;
-}
-
-void
-XkbExtensionInit(void)
-{
- ExtensionEntry *extEntry;
-
- RT_XKBCLIENT = CreateNewResourceType(XkbClientGone, "XkbClient");
- if (!RT_XKBCLIENT)
- return;
-
- if (!XkbInitPrivates())
- return;
-
- if ((extEntry = AddExtension(XkbName, XkbNumberEvents, XkbNumberErrors,
- ProcXkbDispatch, SProcXkbDispatch,
- NULL, StandardMinorOpcode))) {
- XkbReqCode = (unsigned char)extEntry->base;
- XkbEventBase = (unsigned char)extEntry->eventBase;
- XkbErrorBase = (unsigned char)extEntry->errorBase;
- XkbKeyboardErrorCode = XkbErrorBase+XkbKeyboard;
- }
- return;
-}
-
-
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <stdio.h>
+#include <X11/X.h>
+#include <X11/Xproto.h>
+#include "misc.h"
+#include "inputstr.h"
+#define XKBSRV_NEED_FILE_FUNCS
+#include <xkbsrv.h>
+#include "extnsionst.h"
+#include "xace.h"
+#include "xkb.h"
+#include "protocol-versions.h"
+
+#include <X11/extensions/XI.h>
+#include <X11/extensions/XKMformat.h>
+
+int XkbEventBase;
+static int XkbErrorBase;
+int XkbReqCode;
+int XkbKeyboardErrorCode;
+CARD32 xkbDebugFlags = 0;
+static CARD32 xkbDebugCtrls = 0;
+
+static RESTYPE RT_XKBCLIENT;
+
+/***====================================================================***/
+
+#define CHK_DEVICE(dev, id, client, access_mode, lf) {\
+ int why;\
+ int rc = lf(&(dev), id, client, access_mode, &why);\
+ if (rc != Success) {\
+ client->errorValue = _XkbErrCode2(why, id);\
+ return rc;\
+ }\
+}
+
+#define CHK_KBD_DEVICE(dev, id, client, mode) \
+ CHK_DEVICE(dev, id, client, mode, _XkbLookupKeyboard)
+#define CHK_LED_DEVICE(dev, id, client, mode) \
+ CHK_DEVICE(dev, id, client, mode, _XkbLookupLedDevice)
+#define CHK_BELL_DEVICE(dev, id, client, mode) \
+ CHK_DEVICE(dev, id, client, mode, _XkbLookupBellDevice)
+#define CHK_ANY_DEVICE(dev, id, client, mode) \
+ CHK_DEVICE(dev, id, client, mode, _XkbLookupAnyDevice)
+
+#define CHK_ATOM_ONLY2(a,ev,er) {\
+ if (((a)==None)||(!ValidAtom((a)))) {\
+ (ev)= (XID)(a);\
+ return er;\
+ }\
+}
+#define CHK_ATOM_ONLY(a) \
+ CHK_ATOM_ONLY2(a,client->errorValue,BadAtom)
+
+#define CHK_ATOM_OR_NONE3(a,ev,er,ret) {\
+ if (((a)!=None)&&(!ValidAtom((a)))) {\
+ (ev)= (XID)(a);\
+ (er)= BadAtom;\
+ return ret;\
+ }\
+}
+#define CHK_ATOM_OR_NONE2(a,ev,er) {\
+ if (((a)!=None)&&(!ValidAtom((a)))) {\
+ (ev)= (XID)(a);\
+ return er;\
+ }\
+}
+#define CHK_ATOM_OR_NONE(a) \
+ CHK_ATOM_OR_NONE2(a,client->errorValue,BadAtom)
+
+#define CHK_MASK_LEGAL3(err,mask,legal,ev,er,ret) {\
+ if ((mask)&(~(legal))) { \
+ (ev)= _XkbErrCode2((err),((mask)&(~(legal))));\
+ (er)= BadValue;\
+ return ret;\
+ }\
+}
+#define CHK_MASK_LEGAL2(err,mask,legal,ev,er) {\
+ if ((mask)&(~(legal))) { \
+ (ev)= _XkbErrCode2((err),((mask)&(~(legal))));\
+ return er;\
+ }\
+}
+#define CHK_MASK_LEGAL(err,mask,legal) \
+ CHK_MASK_LEGAL2(err,mask,legal,client->errorValue,BadValue)
+
+#define CHK_MASK_MATCH(err,affect,value) {\
+ if ((value)&(~(affect))) { \
+ client->errorValue= _XkbErrCode2((err),((value)&(~(affect))));\
+ return BadMatch;\
+ }\
+}
+#define CHK_MASK_OVERLAP(err,m1,m2) {\
+ if ((m1)&(m2)) { \
+ client->errorValue= _XkbErrCode2((err),((m1)&(m2)));\
+ return BadMatch;\
+ }\
+}
+#define CHK_KEY_RANGE2(err,first,num,x,ev,er) {\
+ if (((unsigned)(first)+(num)-1)>(x)->max_key_code) {\
+ (ev)=_XkbErrCode4(err,(first),(num),(x)->max_key_code);\
+ return er;\
+ }\
+ else if ( (first)<(x)->min_key_code ) {\
+ (ev)=_XkbErrCode3(err+1,(first),xkb->min_key_code);\
+ return er;\
+ }\
+}
+#define CHK_KEY_RANGE(err,first,num,x) \
+ CHK_KEY_RANGE2(err,first,num,x,client->errorValue,BadValue)
+
+#define CHK_REQ_KEY_RANGE2(err,first,num,r,ev,er) {\
+ if (((unsigned)(first)+(num)-1)>(r)->maxKeyCode) {\
+ (ev)=_XkbErrCode4(err,(first),(num),(r)->maxKeyCode);\
+ return er;\
+ }\
+ else if ( (first)<(r)->minKeyCode ) {\
+ (ev)=_XkbErrCode3(err+1,(first),(r)->minKeyCode);\
+ return er;\
+ }\
+}
+#define CHK_REQ_KEY_RANGE(err,first,num,r) \
+ CHK_REQ_KEY_RANGE2(err,first,num,r,client->errorValue,BadValue)
+
+/***====================================================================***/
+
+int
+ProcXkbUseExtension(ClientPtr client)
+{
+ REQUEST(xkbUseExtensionReq);
+ xkbUseExtensionReply rep;
+ register int n;
+ int supported;
+
+ REQUEST_SIZE_MATCH(xkbUseExtensionReq);
+ if (stuff->wantedMajor != SERVER_XKB_MAJOR_VERSION) {
+ /* pre-release version 0.65 is compatible with 1.00 */
+ supported= ((SERVER_XKB_MAJOR_VERSION==1)&&
+ (stuff->wantedMajor==0)&&(stuff->wantedMinor==65));
+ }
+ else supported = 1;
+
+ if ((supported) && (!(client->xkbClientFlags&_XkbClientInitialized))) {
+ client->xkbClientFlags= _XkbClientInitialized;
+ client->vMajor= stuff->wantedMajor;
+ client->vMinor= stuff->wantedMinor;
+ }
+ else if (xkbDebugFlags&0x1) {
+ ErrorF("[xkb] Rejecting client %d (0x%lx) (wants %d.%02d, have %d.%02d)\n",
+ client->index,
+ (long)client->clientAsMask,
+ stuff->wantedMajor,stuff->wantedMinor,
+ SERVER_XKB_MAJOR_VERSION,SERVER_XKB_MINOR_VERSION);
+ }
+ memset(&rep, 0, sizeof(xkbUseExtensionReply));
+ rep.type = X_Reply;
+ rep.supported = supported;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ rep.serverMajor = SERVER_XKB_MAJOR_VERSION;
+ rep.serverMinor = SERVER_XKB_MINOR_VERSION;
+ if ( client->swapped ) {
+ swaps(&rep.sequenceNumber, n);
+ swaps(&rep.serverMajor, n);
+ swaps(&rep.serverMinor, n);
+ }
+ WriteToClient(client,SIZEOF(xkbUseExtensionReply), (char *)&rep);
+ return Success;
+}
+
+/***====================================================================***/
+
+int
+ProcXkbSelectEvents(ClientPtr client)
+{
+ unsigned legal;
+ DeviceIntPtr dev;
+ XkbInterestPtr masks;
+ REQUEST(xkbSelectEventsReq);
+
+ REQUEST_AT_LEAST_SIZE(xkbSelectEventsReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_ANY_DEVICE(dev, stuff->deviceSpec, client, DixUseAccess);
+
+ if (((stuff->affectWhich&XkbMapNotifyMask)!=0)&&(stuff->affectMap)) {
+ client->mapNotifyMask&= ~stuff->affectMap;
+ client->mapNotifyMask|= (stuff->affectMap&stuff->map);
+ }
+ if ((stuff->affectWhich&(~XkbMapNotifyMask))==0)
+ return Success;
+
+ masks = XkbFindClientResource((DevicePtr)dev,client);
+ if (!masks){
+ XID id = FakeClientID(client->index);
+ if (!AddResource(id,RT_XKBCLIENT,dev))
+ return BadAlloc;
+ masks= XkbAddClientResource((DevicePtr)dev,client,id);
+ }
+ if (masks) {
+ union {
+ CARD8 *c8;
+ CARD16 *c16;
+ CARD32 *c32;
+ } from,to;
+ register unsigned bit,ndx,maskLeft,dataLeft,size;
+
+ from.c8= (CARD8 *)&stuff[1];
+ dataLeft= (stuff->length*4)-SIZEOF(xkbSelectEventsReq);
+ maskLeft= (stuff->affectWhich&(~XkbMapNotifyMask));
+ for (ndx=0,bit=1; (maskLeft!=0); ndx++, bit<<=1) {
+ if ((bit&maskLeft)==0)
+ continue;
+ maskLeft&= ~bit;
+ switch (ndx) {
+ case XkbNewKeyboardNotify:
+ to.c16= &client->newKeyboardNotifyMask;
+ legal= XkbAllNewKeyboardEventsMask;
+ size= 2;
+ break;
+ case XkbStateNotify:
+ to.c16= &masks->stateNotifyMask;
+ legal= XkbAllStateEventsMask;
+ size= 2;
+ break;
+ case XkbControlsNotify:
+ to.c32= &masks->ctrlsNotifyMask;
+ legal= XkbAllControlEventsMask;
+ size= 4;
+ break;
+ case XkbIndicatorStateNotify:
+ to.c32= &masks->iStateNotifyMask;
+ legal= XkbAllIndicatorEventsMask;
+ size= 4;
+ break;
+ case XkbIndicatorMapNotify:
+ to.c32= &masks->iMapNotifyMask;
+ legal= XkbAllIndicatorEventsMask;
+ size= 4;
+ break;
+ case XkbNamesNotify:
+ to.c16= &masks->namesNotifyMask;
+ legal= XkbAllNameEventsMask;
+ size= 2;
+ break;
+ case XkbCompatMapNotify:
+ to.c8= &masks->compatNotifyMask;
+ legal= XkbAllCompatMapEventsMask;
+ size= 1;
+ break;
+ case XkbBellNotify:
+ to.c8= &masks->bellNotifyMask;
+ legal= XkbAllBellEventsMask;
+ size= 1;
+ break;
+ case XkbActionMessage:
+ to.c8= &masks->actionMessageMask;
+ legal= XkbAllActionMessagesMask;
+ size= 1;
+ break;
+ case XkbAccessXNotify:
+ to.c16= &masks->accessXNotifyMask;
+ legal= XkbAllAccessXEventsMask;
+ size= 2;
+ break;
+ case XkbExtensionDeviceNotify:
+ to.c16= &masks->extDevNotifyMask;
+ legal= XkbAllExtensionDeviceEventsMask;
+ size= 2;
+ break;
+ default:
+ client->errorValue = _XkbErrCode2(33,bit);
+ return BadValue;
+ }
+
+ if (stuff->clear&bit) {
+ if (size==2) to.c16[0]= 0;
+ else if (size==4) to.c32[0]= 0;
+ else to.c8[0]= 0;
+ }
+ else if (stuff->selectAll&bit) {
+ if (size==2) to.c16[0]= ~0;
+ else if (size==4) to.c32[0]= ~0;
+ else to.c8[0]= ~0;
+ }
+ else {
+ if (dataLeft<(size*2))
+ return BadLength;
+ if (size==2) {
+ CHK_MASK_MATCH(ndx,from.c16[0],from.c16[1]);
+ CHK_MASK_LEGAL(ndx,from.c16[0],legal);
+ to.c16[0]&= ~from.c16[0];
+ to.c16[0]|= (from.c16[0]&from.c16[1]);
+ }
+ else if (size==4) {
+ CHK_MASK_MATCH(ndx,from.c32[0],from.c32[1]);
+ CHK_MASK_LEGAL(ndx,from.c32[0],legal);
+ to.c32[0]&= ~from.c32[0];
+ to.c32[0]|= (from.c32[0]&from.c32[1]);
+ }
+ else {
+ CHK_MASK_MATCH(ndx,from.c8[0],from.c8[1]);
+ CHK_MASK_LEGAL(ndx,from.c8[0],legal);
+ to.c8[0]&= ~from.c8[0];
+ to.c8[0]|= (from.c8[0]&from.c8[1]);
+ size= 2;
+ }
+ from.c8+= (size*2);
+ dataLeft-= (size*2);
+ }
+ }
+ if (dataLeft>2) {
+ ErrorF("[xkb] Extra data (%d bytes) after SelectEvents\n",dataLeft);
+ return BadLength;
+ }
+ return Success;
+ }
+ return BadAlloc;
+}
+
+/***====================================================================***/
+/**
+ * Ring a bell on the given device for the given client.
+ */
+static int
+_XkbBell(ClientPtr client, DeviceIntPtr dev, WindowPtr pWin,
+ int bellClass, int bellID, int pitch, int duration,
+ int percent, int forceSound, int eventOnly, Atom name)
+{
+ int base;
+ pointer ctrl;
+ int oldPitch, oldDuration;
+ int newPercent;
+
+ if (bellClass == KbdFeedbackClass) {
+ KbdFeedbackPtr k;
+ if (bellID==XkbDfltXIId)
+ k= dev->kbdfeed;
+ else {
+ for (k=dev->kbdfeed; k; k=k->next) {
+ if (k->ctrl.id == bellID)
+ break;
+ }
+ }
+ if (!k) {
+ client->errorValue = _XkbErrCode2(0x5,bellID);
+ return BadValue;
+ }
+ base = k->ctrl.bell;
+ ctrl = (pointer) &(k->ctrl);
+ oldPitch= k->ctrl.bell_pitch;
+ oldDuration= k->ctrl.bell_duration;
+ if (pitch!=0) {
+ if (pitch==-1)
+ k->ctrl.bell_pitch= defaultKeyboardControl.bell_pitch;
+ else k->ctrl.bell_pitch= pitch;
+ }
+ if (duration!=0) {
+ if (duration==-1)
+ k->ctrl.bell_duration= defaultKeyboardControl.bell_duration;
+ else k->ctrl.bell_duration= duration;
+ }
+ }
+ else if (bellClass == BellFeedbackClass) {
+ BellFeedbackPtr b;
+ if (bellID==XkbDfltXIId)
+ b= dev->bell;
+ else {
+ for (b=dev->bell; b; b=b->next) {
+ if (b->ctrl.id == bellID)
+ break;
+ }
+ }
+ if (!b) {
+ client->errorValue = _XkbErrCode2(0x6,bellID);
+ return BadValue;
+ }
+ base = b->ctrl.percent;
+ ctrl = (pointer) &(b->ctrl);
+ oldPitch= b->ctrl.pitch;
+ oldDuration= b->ctrl.duration;
+ if (pitch!=0) {
+ if (pitch==-1)
+ b->ctrl.pitch= defaultKeyboardControl.bell_pitch;
+ else b->ctrl.pitch= pitch;
+ }
+ if (duration!=0) {
+ if (duration==-1)
+ b->ctrl.duration= defaultKeyboardControl.bell_duration;
+ else b->ctrl.duration= duration;
+ }
+ }
+ else {
+ client->errorValue = _XkbErrCode2(0x7, bellClass);
+ return BadValue;
+ }
+
+ newPercent = (base * percent)/100;
+ if (percent < 0)
+ newPercent = base + newPercent;
+ else newPercent = base - newPercent + percent;
+
+ XkbHandleBell(forceSound, eventOnly,
+ dev, newPercent, ctrl, bellClass,
+ name, pWin, client);
+ if ((pitch!=0)||(duration!=0)) {
+ if (bellClass == KbdFeedbackClass) {
+ KbdFeedbackPtr k;
+ k= (KbdFeedbackPtr)ctrl;
+ if (pitch!=0)
+ k->ctrl.bell_pitch= oldPitch;
+ if (duration!=0)
+ k->ctrl.bell_duration= oldDuration;
+ }
+ else {
+ BellFeedbackPtr b;
+ b= (BellFeedbackPtr)ctrl;
+ if (pitch!=0)
+ b->ctrl.pitch= oldPitch;
+ if (duration!=0)
+ b->ctrl.duration= oldDuration;
+ }
+ }
+
+ return Success;
+}
+
+int
+ProcXkbBell(ClientPtr client)
+{
+ REQUEST(xkbBellReq);
+ DeviceIntPtr dev;
+ WindowPtr pWin;
+ int rc;
+
+ REQUEST_SIZE_MATCH(xkbBellReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_BELL_DEVICE(dev, stuff->deviceSpec, client, DixBellAccess);
+ CHK_ATOM_OR_NONE(stuff->name);
+
+ /* device-independent checks request for sane values */
+ if ((stuff->forceSound)&&(stuff->eventOnly)) {
+ client->errorValue=_XkbErrCode3(0x1,stuff->forceSound,stuff->eventOnly);
+ return BadMatch;
+ }
+ if (stuff->percent < -100 || stuff->percent > 100) {
+ client->errorValue = _XkbErrCode2(0x2,stuff->percent);
+ return BadValue;
+ }
+ if (stuff->duration<-1) {
+ client->errorValue = _XkbErrCode2(0x3,stuff->duration);
+ return BadValue;
+ }
+ if (stuff->pitch<-1) {
+ client->errorValue = _XkbErrCode2(0x4,stuff->pitch);
+ return BadValue;
+ }
+
+ if (stuff->bellClass == XkbDfltXIClass) {
+ if (dev->kbdfeed!=NULL)
+ stuff->bellClass= KbdFeedbackClass;
+ else stuff->bellClass= BellFeedbackClass;
+ }
+
+ if (stuff->window!=None) {
+ rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
+ if (rc != Success) {
+ client->errorValue= stuff->window;
+ return rc;
+ }
+ }
+ else pWin= NULL;
+
+ /* Client wants to ring a bell on the core keyboard?
+ Ring the bell on the core keyboard (which does nothing, but if that
+ fails the client is screwed anyway), and then on all extension devices.
+ Fail if the core keyboard fails but not the extension devices. this
+ may cause some keyboards to ding and others to stay silent. Fix
+ your client to use explicit keyboards to avoid this.
+
+ dev is the device the client requested.
+ */
+ rc = _XkbBell(client, dev, pWin, stuff->bellClass, stuff->bellID,
+ stuff->pitch, stuff->duration, stuff->percent,
+ stuff->forceSound, stuff->eventOnly, stuff->name);
+
+ if ((rc == Success) && ((stuff->deviceSpec == XkbUseCoreKbd) ||
+ (stuff->deviceSpec == XkbUseCorePtr)))
+ {
+ DeviceIntPtr other;
+ for (other = inputInfo.devices; other; other = other->next)
+ {
+ if ((other != dev) && other->key && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev)
+ {
+ rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixBellAccess);
+ if (rc == Success)
+ _XkbBell(client, other, pWin, stuff->bellClass,
+ stuff->bellID, stuff->pitch, stuff->duration,
+ stuff->percent, stuff->forceSound,
+ stuff->eventOnly, stuff->name);
+ }
+ }
+ rc = Success; /* reset to success, that's what we got for the VCK */
+ }
+
+ return rc;
+}
+
+/***====================================================================***/
+
+int
+ProcXkbGetState(ClientPtr client)
+{
+ REQUEST(xkbGetStateReq);
+ DeviceIntPtr dev;
+ xkbGetStateReply rep;
+ XkbStateRec *xkb;
+
+ REQUEST_SIZE_MATCH(xkbGetStateReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
+
+ xkb= &dev->key->xkbInfo->state;
+ memset(&rep, 0, sizeof(xkbGetStateReply));
+ rep.type= X_Reply;
+ rep.sequenceNumber= client->sequence;
+ rep.length = 0;
+ rep.deviceID = dev->id;
+ rep.mods = XkbStateFieldFromRec(xkb) & 0xff;
+ rep.baseMods = xkb->base_mods;
+ rep.lockedMods = xkb->locked_mods;
+ rep.latchedMods = xkb->latched_mods;
+ rep.group = xkb->group;
+ rep.baseGroup = xkb->base_group;
+ rep.latchedGroup = xkb->latched_group;
+ rep.lockedGroup = xkb->locked_group;
+ rep.compatState = xkb->compat_state;
+ rep.ptrBtnState = xkb->ptr_buttons;
+ if (client->swapped) {
+ register int n;
+ swaps(&rep.sequenceNumber,n);
+ swaps(&rep.ptrBtnState,n);
+ }
+ WriteToClient(client, SIZEOF(xkbGetStateReply), (char *)&rep);
+ return Success;
+}
+
+/***====================================================================***/
+
+int
+ProcXkbLatchLockState(ClientPtr client)
+{
+ int status;
+ DeviceIntPtr dev, tmpd;
+ XkbStateRec oldState,*newState;
+ CARD16 changed;
+ xkbStateNotify sn;
+ XkbEventCauseRec cause;
+
+ REQUEST(xkbLatchLockStateReq);
+ REQUEST_SIZE_MATCH(xkbLatchLockStateReq);
+
+ if (!(client->xkbClientFlags & _XkbClientInitialized))
+ return BadAccess;
+
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixSetAttrAccess);
+ CHK_MASK_MATCH(0x01, stuff->affectModLocks, stuff->modLocks);
+ CHK_MASK_MATCH(0x01, stuff->affectModLatches, stuff->modLatches);
+
+ status = Success;
+
+ for (tmpd = inputInfo.devices; tmpd; tmpd = tmpd->next) {
+ if ((tmpd == dev) || (!IsMaster(tmpd) && GetMaster(tmpd, MASTER_KEYBOARD) == dev)) {
+ if (!tmpd->key || !tmpd->key->xkbInfo)
+ continue;
+
+ oldState = tmpd->key->xkbInfo->state;
+ newState = &tmpd->key->xkbInfo->state;
+ if (stuff->affectModLocks) {
+ newState->locked_mods &= ~stuff->affectModLocks;
+ newState->locked_mods |= (stuff->affectModLocks & stuff->modLocks);
+ }
+ if (status == Success && stuff->lockGroup)
+ newState->locked_group = stuff->groupLock;
+ if (status == Success && stuff->affectModLatches)
+ status = XkbLatchModifiers(tmpd, stuff->affectModLatches,
+ stuff->modLatches);
+ if (status == Success && stuff->latchGroup)
+ status = XkbLatchGroup(tmpd, stuff->groupLatch);
+
+ if (status != Success)
+ return status;
+
+ XkbComputeDerivedState(tmpd->key->xkbInfo);
+
+ changed = XkbStateChangedFlags(&oldState, newState);
+ if (changed) {
+ sn.keycode = 0;
+ sn.eventType = 0;
+ sn.requestMajor = XkbReqCode;
+ sn.requestMinor = X_kbLatchLockState;
+ sn.changed = changed;
+ XkbSendStateNotify(tmpd, &sn);
+ changed = XkbIndicatorsToUpdate(tmpd, changed, FALSE);
+ if (changed) {
+ XkbSetCauseXkbReq(&cause, X_kbLatchLockState, client);
+ XkbUpdateIndicators(tmpd, changed, TRUE, NULL, &cause);
+ }
+ }
+ }
+ }
+
+ return Success;
+}
+
+/***====================================================================***/
+
+int
+ProcXkbGetControls(ClientPtr client)
+{
+ xkbGetControlsReply rep;
+ XkbControlsPtr xkb;
+ DeviceIntPtr dev;
+ register int n;
+
+ REQUEST(xkbGetControlsReq);
+ REQUEST_SIZE_MATCH(xkbGetControlsReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
+
+ xkb = dev->key->xkbInfo->desc->ctrls;
+ rep.type = X_Reply;
+ rep.length = bytes_to_int32(SIZEOF(xkbGetControlsReply)-
+ SIZEOF(xGenericReply));
+ rep.sequenceNumber = client->sequence;
+ rep.deviceID = ((DeviceIntPtr)dev)->id;
+ rep.numGroups = xkb->num_groups;
+ rep.groupsWrap = xkb->groups_wrap;
+ rep.internalMods = xkb->internal.mask;
+ rep.ignoreLockMods = xkb->ignore_lock.mask;
+ rep.internalRealMods = xkb->internal.real_mods;
+ rep.ignoreLockRealMods = xkb->ignore_lock.real_mods;
+ rep.internalVMods = xkb->internal.vmods;
+ rep.ignoreLockVMods = xkb->ignore_lock.vmods;
+ rep.enabledCtrls = xkb->enabled_ctrls;
+ rep.repeatDelay = xkb->repeat_delay;
+ rep.repeatInterval = xkb->repeat_interval;
+ rep.slowKeysDelay = xkb->slow_keys_delay;
+ rep.debounceDelay = xkb->debounce_delay;
+ rep.mkDelay = xkb->mk_delay;
+ rep.mkInterval = xkb->mk_interval;
+ rep.mkTimeToMax = xkb->mk_time_to_max;
+ rep.mkMaxSpeed = xkb->mk_max_speed;
+ rep.mkCurve = xkb->mk_curve;
+ rep.mkDfltBtn = xkb->mk_dflt_btn;
+ rep.axTimeout = xkb->ax_timeout;
+ rep.axtCtrlsMask = xkb->axt_ctrls_mask;
+ rep.axtCtrlsValues = xkb->axt_ctrls_values;
+ rep.axtOptsMask = xkb->axt_opts_mask;
+ rep.axtOptsValues = xkb->axt_opts_values;
+ rep.axOptions = xkb->ax_options;
+ memcpy(rep.perKeyRepeat,xkb->per_key_repeat,XkbPerKeyBitArraySize);
+ if (client->swapped) {
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.length,n);
+ swaps(&rep.internalVMods, n);
+ swaps(&rep.ignoreLockVMods, n);
+ swapl(&rep.enabledCtrls, n);
+ swaps(&rep.repeatDelay, n);
+ swaps(&rep.repeatInterval, n);
+ swaps(&rep.slowKeysDelay, n);
+ swaps(&rep.debounceDelay, n);
+ swaps(&rep.mkDelay, n);
+ swaps(&rep.mkInterval, n);
+ swaps(&rep.mkTimeToMax, n);
+ swaps(&rep.mkMaxSpeed, n);
+ swaps(&rep.mkCurve, n);
+ swaps(&rep.axTimeout, n);
+ swapl(&rep.axtCtrlsMask, n);
+ swapl(&rep.axtCtrlsValues, n);
+ swaps(&rep.axtOptsMask, n);
+ swaps(&rep.axtOptsValues, n);
+ swaps(&rep.axOptions, n);
+ }
+ WriteToClient(client, SIZEOF(xkbGetControlsReply), (char *)&rep);
+ return Success;
+}
+
+int
+ProcXkbSetControls(ClientPtr client)
+{
+ DeviceIntPtr dev, tmpd;
+ XkbSrvInfoPtr xkbi;
+ XkbControlsPtr ctrl;
+ XkbControlsRec new,old;
+ xkbControlsNotify cn;
+ XkbEventCauseRec cause;
+ XkbSrvLedInfoPtr sli;
+
+ REQUEST(xkbSetControlsReq);
+ REQUEST_SIZE_MATCH(xkbSetControlsReq);
+
+ if (!(client->xkbClientFlags & _XkbClientInitialized))
+ return BadAccess;
+
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixManageAccess);
+ CHK_MASK_LEGAL(0x01, stuff->changeCtrls, XkbAllControlsMask);
+
+ for (tmpd = inputInfo.devices; tmpd; tmpd = tmpd->next) {
+ if (!tmpd->key || !tmpd->key->xkbInfo)
+ continue;
+ if ((tmpd == dev) || (!IsMaster(tmpd) && GetMaster(tmpd, MASTER_KEYBOARD) == dev)) {
+ xkbi = tmpd->key->xkbInfo;
+ ctrl = xkbi->desc->ctrls;
+ new = *ctrl;
+ XkbSetCauseXkbReq(&cause, X_kbSetControls, client);
+
+ if (stuff->changeCtrls & XkbInternalModsMask) {
+ CHK_MASK_MATCH(0x02, stuff->affectInternalMods,
+ stuff->internalMods);
+ CHK_MASK_MATCH(0x03, stuff->affectInternalVMods,
+ stuff->internalVMods);
+
+ new.internal.real_mods &= ~(stuff->affectInternalMods);
+ new.internal.real_mods |= (stuff->affectInternalMods &
+ stuff->internalMods);
+ new.internal.vmods &= ~(stuff->affectInternalVMods);
+ new.internal.vmods |= (stuff->affectInternalVMods &
+ stuff->internalVMods);
+ new.internal.mask = new.internal.real_mods |
+ XkbMaskForVMask(xkbi->desc,
+ new.internal.vmods);
+ }
+
+ if (stuff->changeCtrls & XkbIgnoreLockModsMask) {
+ CHK_MASK_MATCH(0x4, stuff->affectIgnoreLockMods,
+ stuff->ignoreLockMods);
+ CHK_MASK_MATCH(0x5, stuff->affectIgnoreLockVMods,
+ stuff->ignoreLockVMods);
+
+ new.ignore_lock.real_mods &= ~(stuff->affectIgnoreLockMods);
+ new.ignore_lock.real_mods |= (stuff->affectIgnoreLockMods &
+ stuff->ignoreLockMods);
+ new.ignore_lock.vmods &= ~(stuff->affectIgnoreLockVMods);
+ new.ignore_lock.vmods |= (stuff->affectIgnoreLockVMods &
+ stuff->ignoreLockVMods);
+ new.ignore_lock.mask = new.ignore_lock.real_mods |
+ XkbMaskForVMask(xkbi->desc,
+ new.ignore_lock.vmods);
+ }
+
+ CHK_MASK_MATCH(0x06, stuff->affectEnabledCtrls,
+ stuff->enabledCtrls);
+ if (stuff->affectEnabledCtrls) {
+ CHK_MASK_LEGAL(0x07, stuff->affectEnabledCtrls,
+ XkbAllBooleanCtrlsMask);
+
+ new.enabled_ctrls &= ~(stuff->affectEnabledCtrls);
+ new.enabled_ctrls |= (stuff->affectEnabledCtrls &
+ stuff->enabledCtrls);
+ }
+
+ if (stuff->changeCtrls & XkbRepeatKeysMask) {
+ if (stuff->repeatDelay < 1 || stuff->repeatInterval < 1) {
+ client->errorValue = _XkbErrCode3(0x08, stuff->repeatDelay,
+ stuff->repeatInterval);
+ return BadValue;
+ }
+
+ new.repeat_delay = stuff->repeatDelay;
+ new.repeat_interval = stuff->repeatInterval;
+ }
+
+ if (stuff->changeCtrls & XkbSlowKeysMask) {
+ if (stuff->slowKeysDelay < 1) {
+ client->errorValue = _XkbErrCode2(0x09,
+ stuff->slowKeysDelay);
+ return BadValue;
+ }
+
+ new.slow_keys_delay = stuff->slowKeysDelay;
+ }
+
+ if (stuff->changeCtrls & XkbBounceKeysMask) {
+ if (stuff->debounceDelay < 1) {
+ client->errorValue = _XkbErrCode2(0x0A,
+ stuff->debounceDelay);
+ return BadValue;
+ }
+
+ new.debounce_delay = stuff->debounceDelay;
+ }
+
+ if (stuff->changeCtrls & XkbMouseKeysMask) {
+ if (stuff->mkDfltBtn > XkbMaxMouseKeysBtn) {
+ client->errorValue = _XkbErrCode2(0x0B, stuff->mkDfltBtn);
+ return BadValue;
+ }
+
+ new.mk_dflt_btn = stuff->mkDfltBtn;
+ }
+
+ if (stuff->changeCtrls & XkbMouseKeysAccelMask) {
+ if (stuff->mkDelay < 1 || stuff->mkInterval < 1 ||
+ stuff->mkTimeToMax < 1 || stuff->mkMaxSpeed < 1 ||
+ stuff->mkCurve < -1000) {
+ client->errorValue = _XkbErrCode2(0x0C,0);
+ return BadValue;
+ }
+
+ new.mk_delay = stuff->mkDelay;
+ new.mk_interval = stuff->mkInterval;
+ new.mk_time_to_max = stuff->mkTimeToMax;
+ new.mk_max_speed = stuff->mkMaxSpeed;
+ new.mk_curve = stuff->mkCurve;
+ AccessXComputeCurveFactor(xkbi, &new);
+ }
+
+ if (stuff->changeCtrls & XkbGroupsWrapMask) {
+ unsigned act, num;
+
+ act = XkbOutOfRangeGroupAction(stuff->groupsWrap);
+ switch (act) {
+ case XkbRedirectIntoRange:
+ num = XkbOutOfRangeGroupNumber(stuff->groupsWrap);
+ if (num >= new.num_groups) {
+ client->errorValue = _XkbErrCode3(0x0D, new.num_groups,
+ num);
+ return BadValue;
+ }
+ case XkbWrapIntoRange:
+ case XkbClampIntoRange:
+ break;
+ default:
+ client->errorValue = _XkbErrCode2(0x0E, act);
+ return BadValue;
+ }
+
+ new.groups_wrap= stuff->groupsWrap;
+ }
+
+ CHK_MASK_LEGAL(0x0F, stuff->axOptions, XkbAX_AllOptionsMask);
+ if (stuff->changeCtrls & XkbAccessXKeysMask) {
+ new.ax_options = stuff->axOptions & XkbAX_AllOptionsMask;
+ }
+ else {
+ if (stuff->changeCtrls & XkbStickyKeysMask) {
+ new.ax_options &= ~(XkbAX_SKOptionsMask);
+ new.ax_options |= (stuff->axOptions & XkbAX_SKOptionsMask);
+ }
+
+ if (stuff->changeCtrls & XkbAccessXFeedbackMask) {
+ new.ax_options &= ~(XkbAX_FBOptionsMask);
+ new.ax_options |= (stuff->axOptions & XkbAX_FBOptionsMask);
+ }
+ }
+
+ if (stuff->changeCtrls & XkbAccessXTimeoutMask) {
+ if (stuff->axTimeout < 1) {
+ client->errorValue = _XkbErrCode2(0x10, stuff->axTimeout);
+ return BadValue;
+ }
+ CHK_MASK_MATCH(0x11, stuff->axtCtrlsMask,
+ stuff->axtCtrlsValues);
+ CHK_MASK_LEGAL(0x12, stuff->axtCtrlsMask,
+ XkbAllBooleanCtrlsMask);
+ CHK_MASK_MATCH(0x13, stuff->axtOptsMask, stuff->axtOptsValues);
+ CHK_MASK_LEGAL(0x14, stuff->axtOptsMask, XkbAX_AllOptionsMask);
+ new.ax_timeout = stuff->axTimeout;
+ new.axt_ctrls_mask = stuff->axtCtrlsMask;
+ new.axt_ctrls_values = (stuff->axtCtrlsValues &
+ stuff->axtCtrlsMask);
+ new.axt_opts_mask = stuff->axtOptsMask;
+ new.axt_opts_values = (stuff->axtOptsValues &
+ stuff->axtOptsMask);
+ }
+
+ if (stuff->changeCtrls & XkbPerKeyRepeatMask) {
+ memcpy(new.per_key_repeat, stuff->perKeyRepeat,
+ XkbPerKeyBitArraySize);
+ if (xkbi->repeatKey &&
+ !BitIsOn(new.per_key_repeat, xkbi->repeatKey)) {
+ AccessXCancelRepeatKey(xkbi, xkbi->repeatKey);
+ }
+ }
+
+ old= *ctrl;
+ *ctrl= new;
+ XkbDDXChangeControls(tmpd, &old, ctrl);
+
+ if (XkbComputeControlsNotify(tmpd, &old, ctrl, &cn, FALSE)) {
+ cn.keycode = 0;
+ cn.eventType = 0;
+ cn.requestMajor = XkbReqCode;
+ cn.requestMinor = X_kbSetControls;
+ XkbSendControlsNotify(tmpd, &cn);
+ }
+
+ sli = XkbFindSrvLedInfo(tmpd, XkbDfltXIClass, XkbDfltXIId, 0);
+ if (sli)
+ XkbUpdateIndicators(tmpd, sli->usesControls, TRUE, NULL,
+ &cause);
+
+ /* If sticky keys were disabled, clear all locks and latches */
+ if ((old.enabled_ctrls & XkbStickyKeysMask) &&
+ !(ctrl->enabled_ctrls & XkbStickyKeysMask))
+ XkbClearAllLatchesAndLocks(tmpd, xkbi, TRUE, &cause);
+ }
+ }
+
+ return Success;
+}
+
+/***====================================================================***/
+
+static int
+XkbSizeKeyTypes(XkbDescPtr xkb,xkbGetMapReply *rep)
+{
+ XkbKeyTypeRec *type;
+ unsigned i,len;
+
+ len= 0;
+ if (((rep->present&XkbKeyTypesMask)==0)||(rep->nTypes<1)||
+ (!xkb)||(!xkb->map)||(!xkb->map->types)) {
+ rep->present&= ~XkbKeyTypesMask;
+ rep->firstType= rep->nTypes= 0;
+ return 0;
+ }
+ type= &xkb->map->types[rep->firstType];
+ for (i=0;i<rep->nTypes;i++,type++){
+ len+= SIZEOF(xkbKeyTypeWireDesc);
+ if (type->map_count>0) {
+ len+= (type->map_count*SIZEOF(xkbKTMapEntryWireDesc));
+ if (type->preserve)
+ len+= (type->map_count*SIZEOF(xkbModsWireDesc));
+ }
+ }
+ return len;
+}
+
+static char *
+XkbWriteKeyTypes( XkbDescPtr xkb,
+ xkbGetMapReply * rep,
+ char * buf,
+ ClientPtr client)
+{
+ XkbKeyTypePtr type;
+ unsigned i;
+ xkbKeyTypeWireDesc *wire;
+
+ type= &xkb->map->types[rep->firstType];
+ for (i=0;i<rep->nTypes;i++,type++) {
+ register unsigned n;
+ wire= (xkbKeyTypeWireDesc *)buf;
+ wire->mask = type->mods.mask;
+ wire->realMods = type->mods.real_mods;
+ wire->virtualMods = type->mods.vmods;
+ wire->numLevels = type->num_levels;
+ wire->nMapEntries = type->map_count;
+ wire->preserve = (type->preserve!=NULL);
+ if (client->swapped) {
+ register int n;
+ swaps(&wire->virtualMods,n);
+ }
+
+ buf= (char *)&wire[1];
+ if (wire->nMapEntries>0) {
+ xkbKTMapEntryWireDesc * wire;
+ XkbKTMapEntryPtr entry;
+ wire= (xkbKTMapEntryWireDesc *)buf;
+ entry= type->map;
+ for (n=0;n<type->map_count;n++,wire++,entry++) {
+ wire->active= entry->active;
+ wire->mask= entry->mods.mask;
+ wire->level= entry->level;
+ wire->realMods= entry->mods.real_mods;
+ wire->virtualMods= entry->mods.vmods;
+ if (client->swapped) {
+ register int n;
+ swaps(&wire->virtualMods,n);
+ }
+ }
+ buf= (char *)wire;
+ if (type->preserve!=NULL) {
+ xkbModsWireDesc * pwire;
+ XkbModsPtr preserve;
+ pwire= (xkbModsWireDesc *)buf;
+ preserve= type->preserve;
+ for (n=0;n<type->map_count;n++,pwire++,preserve++) {
+ pwire->mask= preserve->mask;
+ pwire->realMods= preserve->real_mods;
+ pwire->virtualMods= preserve->vmods;
+ if (client->swapped) {
+ register int n;
+ swaps(&pwire->virtualMods,n);
+ }
+ }
+ buf= (char *)pwire;
+ }
+ }
+ }
+ return buf;
+}
+
+static int
+XkbSizeKeySyms(XkbDescPtr xkb,xkbGetMapReply *rep)
+{
+ XkbSymMapPtr symMap;
+ unsigned i,len;
+ unsigned nSyms,nSymsThisKey;
+
+ if (((rep->present&XkbKeySymsMask)==0)||(rep->nKeySyms<1)||
+ (!xkb)||(!xkb->map)||(!xkb->map->key_sym_map)) {
+ rep->present&= ~XkbKeySymsMask;
+ rep->firstKeySym= rep->nKeySyms= 0;
+ rep->totalSyms= 0;
+ return 0;
+ }
+ len= rep->nKeySyms*SIZEOF(xkbSymMapWireDesc);
+ symMap = &xkb->map->key_sym_map[rep->firstKeySym];
+ for (i=nSyms=0;i<rep->nKeySyms;i++,symMap++) {
+ if (symMap->offset!=0) {
+ nSymsThisKey= XkbNumGroups(symMap->group_info)*symMap->width;
+ nSyms+= nSymsThisKey;
+ }
+ }
+ len+= nSyms*4;
+ rep->totalSyms= nSyms;
+ return len;
+}
+
+static int
+XkbSizeVirtualMods(XkbDescPtr xkb,xkbGetMapReply *rep)
+{
+register unsigned i,nMods,bit;
+
+ if (((rep->present&XkbVirtualModsMask)==0)||(rep->virtualMods==0)||
+ (!xkb)||(!xkb->server)) {
+ rep->present&= ~XkbVirtualModsMask;
+ rep->virtualMods= 0;
+ return 0;
+ }
+ for (i=nMods=0,bit=1;i<XkbNumVirtualMods;i++,bit<<=1) {
+ if (rep->virtualMods&bit)
+ nMods++;
+ }
+ return XkbPaddedSize(nMods);
+}
+
+static char *
+XkbWriteKeySyms(XkbDescPtr xkb,xkbGetMapReply *rep,char *buf,ClientPtr client)
+{
+register KeySym * pSym;
+XkbSymMapPtr symMap;
+xkbSymMapWireDesc * outMap;
+register unsigned i;
+
+ symMap = &xkb->map->key_sym_map[rep->firstKeySym];
+ for (i=0;i<rep->nKeySyms;i++,symMap++) {
+ outMap = (xkbSymMapWireDesc *)buf;
+ outMap->ktIndex[0] = symMap->kt_index[0];
+ outMap->ktIndex[1] = symMap->kt_index[1];
+ outMap->ktIndex[2] = symMap->kt_index[2];
+ outMap->ktIndex[3] = symMap->kt_index[3];
+ outMap->groupInfo = symMap->group_info;
+ outMap->width= symMap->width;
+ outMap->nSyms = symMap->width*XkbNumGroups(symMap->group_info);
+ buf= (char *)&outMap[1];
+ if (outMap->nSyms==0)
+ continue;
+
+ pSym = &xkb->map->syms[symMap->offset];
+ memcpy((char *)buf,(char *)pSym,outMap->nSyms*4);
+ if (client->swapped) {
+ register int n,nSyms= outMap->nSyms;
+ swaps(&outMap->nSyms,n);
+ while (nSyms-->0) {
+ swapl(buf,n);
+ buf+= 4;
+ }
+ }
+ else buf+= outMap->nSyms*4;
+ }
+ return buf;
+}
+
+static int
+XkbSizeKeyActions(XkbDescPtr xkb,xkbGetMapReply *rep)
+{
+ unsigned i,len,nActs;
+ register KeyCode firstKey;
+
+ if (((rep->present&XkbKeyActionsMask)==0)||(rep->nKeyActs<1)||
+ (!xkb)||(!xkb->server)||(!xkb->server->key_acts)) {
+ rep->present&= ~XkbKeyActionsMask;
+ rep->firstKeyAct= rep->nKeyActs= 0;
+ rep->totalActs= 0;
+ return 0;
+ }
+ firstKey= rep->firstKeyAct;
+ for (nActs=i=0;i<rep->nKeyActs;i++) {
+ if (xkb->server->key_acts[i+firstKey]!=0)
+ nActs+= XkbKeyNumActions(xkb,i+firstKey);
+ }
+ len= XkbPaddedSize(rep->nKeyActs)+(nActs*SIZEOF(xkbActionWireDesc));
+ rep->totalActs= nActs;
+ return len;
+}
+
+static char *
+XkbWriteKeyActions(XkbDescPtr xkb,xkbGetMapReply *rep,char *buf,
+ ClientPtr client)
+{
+ unsigned i;
+ CARD8 * numDesc;
+ XkbAnyAction * actDesc;
+
+ numDesc = (CARD8 *)buf;
+ for (i=0;i<rep->nKeyActs;i++) {
+ if (xkb->server->key_acts[i+rep->firstKeyAct]==0)
+ numDesc[i] = 0;
+ else numDesc[i] = XkbKeyNumActions(xkb,(i+rep->firstKeyAct));
+ }
+ buf+= XkbPaddedSize(rep->nKeyActs);
+
+ actDesc = (XkbAnyAction *)buf;
+ for (i=0;i<rep->nKeyActs;i++) {
+ if (xkb->server->key_acts[i+rep->firstKeyAct]!=0) {
+ unsigned int num;
+ num = XkbKeyNumActions(xkb,(i+rep->firstKeyAct));
+ memcpy((char *)actDesc,
+ (char*)XkbKeyActionsPtr(xkb,(i+rep->firstKeyAct)),
+ num*SIZEOF(xkbActionWireDesc));
+ actDesc+= num;
+ }
+ }
+ buf = (char *)actDesc;
+ return buf;
+}
+
+static int
+XkbSizeKeyBehaviors(XkbDescPtr xkb,xkbGetMapReply *rep)
+{
+ unsigned i,len,nBhvr;
+ XkbBehavior * bhv;
+
+ if (((rep->present&XkbKeyBehaviorsMask)==0)||(rep->nKeyBehaviors<1)||
+ (!xkb)||(!xkb->server)||(!xkb->server->behaviors)) {
+ rep->present&= ~XkbKeyBehaviorsMask;
+ rep->firstKeyBehavior= rep->nKeyBehaviors= 0;
+ rep->totalKeyBehaviors= 0;
+ return 0;
+ }
+ bhv= &xkb->server->behaviors[rep->firstKeyBehavior];
+ for (nBhvr=i=0;i<rep->nKeyBehaviors;i++,bhv++) {
+ if (bhv->type!=XkbKB_Default)
+ nBhvr++;
+ }
+ len= nBhvr*SIZEOF(xkbBehaviorWireDesc);
+ rep->totalKeyBehaviors= nBhvr;
+ return len;
+}
+
+static char *
+XkbWriteKeyBehaviors(XkbDescPtr xkb,xkbGetMapReply *rep,char *buf,
+ ClientPtr client)
+{
+ unsigned i;
+ xkbBehaviorWireDesc *wire;
+ XkbBehavior *pBhvr;
+
+ wire = (xkbBehaviorWireDesc *)buf;
+ pBhvr= &xkb->server->behaviors[rep->firstKeyBehavior];
+ for (i=0;i<rep->nKeyBehaviors;i++,pBhvr++) {
+ if (pBhvr->type!=XkbKB_Default) {
+ wire->key= i+rep->firstKeyBehavior;
+ wire->type= pBhvr->type;
+ wire->data= pBhvr->data;
+ wire++;
+ }
+ }
+ buf = (char *)wire;
+ return buf;
+}
+
+static int
+XkbSizeExplicit(XkbDescPtr xkb,xkbGetMapReply *rep)
+{
+ unsigned i,len,nRtrn;
+
+ if (((rep->present&XkbExplicitComponentsMask)==0)||(rep->nKeyExplicit<1)||
+ (!xkb)||(!xkb->server)||(!xkb->server->explicit)) {
+ rep->present&= ~XkbExplicitComponentsMask;
+ rep->firstKeyExplicit= rep->nKeyExplicit= 0;
+ rep->totalKeyExplicit= 0;
+ return 0;
+ }
+ for (nRtrn=i=0;i<rep->nKeyExplicit;i++) {
+ if (xkb->server->explicit[i+rep->firstKeyExplicit]!=0)
+ nRtrn++;
+ }
+ rep->totalKeyExplicit= nRtrn;
+ len= XkbPaddedSize(nRtrn*2); /* two bytes per non-zero explicit component */
+ return len;
+}
+
+static char *
+XkbWriteExplicit(XkbDescPtr xkb,xkbGetMapReply *rep,char *buf,ClientPtr client)
+{
+unsigned i;
+char * start;
+unsigned char * pExp;
+
+ start= buf;
+ pExp= &xkb->server->explicit[rep->firstKeyExplicit];
+ for (i=0;i<rep->nKeyExplicit;i++,pExp++) {
+ if (*pExp!=0) {
+ *buf++= i+rep->firstKeyExplicit;
+ *buf++= *pExp;
+ }
+ }
+ i= XkbPaddedSize(buf-start)-(buf-start); /* pad to word boundary */
+ return buf+i;
+}
+
+static int
+XkbSizeModifierMap(XkbDescPtr xkb,xkbGetMapReply *rep)
+{
+ unsigned i,len,nRtrn;
+
+ if (((rep->present&XkbModifierMapMask)==0)||(rep->nModMapKeys<1)||
+ (!xkb)||(!xkb->map)||(!xkb->map->modmap)) {
+ rep->present&= ~XkbModifierMapMask;
+ rep->firstModMapKey= rep->nModMapKeys= 0;
+ rep->totalModMapKeys= 0;
+ return 0;
+ }
+ for (nRtrn=i=0;i<rep->nModMapKeys;i++) {
+ if (xkb->map->modmap[i+rep->firstModMapKey]!=0)
+ nRtrn++;
+ }
+ rep->totalModMapKeys= nRtrn;
+ len= XkbPaddedSize(nRtrn*2); /* two bytes per non-zero modmap component */
+ return len;
+}
+
+static char *
+XkbWriteModifierMap(XkbDescPtr xkb,xkbGetMapReply *rep,char *buf,
+ ClientPtr client)
+{
+unsigned i;
+char * start;
+unsigned char * pMap;
+
+ start= buf;
+ pMap= &xkb->map->modmap[rep->firstModMapKey];
+ for (i=0;i<rep->nModMapKeys;i++,pMap++) {
+ if (*pMap!=0) {
+ *buf++= i+rep->firstModMapKey;
+ *buf++= *pMap;
+ }
+ }
+ i= XkbPaddedSize(buf-start)-(buf-start); /* pad to word boundary */
+ return buf+i;
+}
+
+static int
+XkbSizeVirtualModMap(XkbDescPtr xkb,xkbGetMapReply *rep)
+{
+ unsigned i,len,nRtrn;
+
+ if (((rep->present&XkbVirtualModMapMask)==0)||(rep->nVModMapKeys<1)||
+ (!xkb)||(!xkb->server)||(!xkb->server->vmodmap)) {
+ rep->present&= ~XkbVirtualModMapMask;
+ rep->firstVModMapKey= rep->nVModMapKeys= 0;
+ rep->totalVModMapKeys= 0;
+ return 0;
+ }
+ for (nRtrn=i=0;i<rep->nVModMapKeys;i++) {
+ if (xkb->server->vmodmap[i+rep->firstVModMapKey]!=0)
+ nRtrn++;
+ }
+ rep->totalVModMapKeys= nRtrn;
+ len= nRtrn*SIZEOF(xkbVModMapWireDesc);
+ return len;
+}
+
+static char *
+XkbWriteVirtualModMap(XkbDescPtr xkb,xkbGetMapReply *rep,char *buf,
+ ClientPtr client)
+{
+unsigned i;
+xkbVModMapWireDesc * wire;
+unsigned short * pMap;
+
+ wire= (xkbVModMapWireDesc *)buf;
+ pMap= &xkb->server->vmodmap[rep->firstVModMapKey];
+ for (i=0;i<rep->nVModMapKeys;i++,pMap++) {
+ if (*pMap!=0) {
+ wire->key= i+rep->firstVModMapKey;
+ wire->vmods= *pMap;
+ wire++;
+ }
+ }
+ return (char *)wire;
+}
+
+static Status
+XkbComputeGetMapReplySize(XkbDescPtr xkb,xkbGetMapReply *rep)
+{
+int len;
+
+ rep->minKeyCode= xkb->min_key_code;
+ rep->maxKeyCode= xkb->max_key_code;
+ len= XkbSizeKeyTypes(xkb,rep);
+ len+= XkbSizeKeySyms(xkb,rep);
+ len+= XkbSizeKeyActions(xkb,rep);
+ len+= XkbSizeKeyBehaviors(xkb,rep);
+ len+= XkbSizeVirtualMods(xkb,rep);
+ len+= XkbSizeExplicit(xkb,rep);
+ len+= XkbSizeModifierMap(xkb,rep);
+ len+= XkbSizeVirtualModMap(xkb,rep);
+ rep->length+= (len/4);
+ return Success;
+}
+
+static int
+XkbSendMap(ClientPtr client,XkbDescPtr xkb,xkbGetMapReply *rep)
+{
+unsigned i,len;
+char *desc,*start;
+
+ len= (rep->length*4)-(SIZEOF(xkbGetMapReply)-SIZEOF(xGenericReply));
+ start= desc= calloc(1, len);
+ if (!start)
+ return BadAlloc;
+ if ( rep->nTypes>0 )
+ desc = XkbWriteKeyTypes(xkb,rep,desc,client);
+ if ( rep->nKeySyms>0 )
+ desc = XkbWriteKeySyms(xkb,rep,desc,client);
+ if ( rep->nKeyActs>0 )
+ desc = XkbWriteKeyActions(xkb,rep,desc,client);
+ if ( rep->totalKeyBehaviors>0 )
+ desc = XkbWriteKeyBehaviors(xkb,rep,desc,client);
+ if ( rep->virtualMods ) {
+ register int sz,bit;
+ for (i=sz=0,bit=1;i<XkbNumVirtualMods;i++,bit<<=1) {
+ if (rep->virtualMods&bit) {
+ desc[sz++]= xkb->server->vmods[i];
+ }
+ }
+ desc+= XkbPaddedSize(sz);
+ }
+ if ( rep->totalKeyExplicit>0 )
+ desc= XkbWriteExplicit(xkb,rep,desc,client);
+ if ( rep->totalModMapKeys>0 )
+ desc= XkbWriteModifierMap(xkb,rep,desc,client);
+ if ( rep->totalVModMapKeys>0 )
+ desc= XkbWriteVirtualModMap(xkb,rep,desc,client);
+ if ((desc-start)!=(len)) {
+ ErrorF("[xkb] BOGUS LENGTH in write keyboard desc, expected %d, got %ld\n",
+ len, (unsigned long)(desc-start));
+ }
+ if (client->swapped) {
+ register int n;
+ swaps(&rep->sequenceNumber,n);
+ swapl(&rep->length,n);
+ swaps(&rep->present,n);
+ swaps(&rep->totalSyms,n);
+ swaps(&rep->totalActs,n);
+ }
+ WriteToClient(client, (i=SIZEOF(xkbGetMapReply)), (char *)rep);
+ WriteToClient(client, len, start);
+ free((char *)start);
+ return Success;
+}
+
+int
+ProcXkbGetMap(ClientPtr client)
+{
+ DeviceIntPtr dev;
+ xkbGetMapReply rep;
+ XkbDescRec *xkb;
+ int n,status;
+
+ REQUEST(xkbGetMapReq);
+ REQUEST_SIZE_MATCH(xkbGetMapReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
+ CHK_MASK_OVERLAP(0x01,stuff->full,stuff->partial);
+ CHK_MASK_LEGAL(0x02,stuff->full,XkbAllMapComponentsMask);
+ CHK_MASK_LEGAL(0x03,stuff->partial,XkbAllMapComponentsMask);
+
+ xkb= dev->key->xkbInfo->desc;
+ memset(&rep, 0, sizeof(xkbGetMapReply));
+ rep.type= X_Reply;
+ rep.sequenceNumber= client->sequence;
+ rep.length = (SIZEOF(xkbGetMapReply)-SIZEOF(xGenericReply))>>2;
+ rep.deviceID = dev->id;
+ rep.present = stuff->partial|stuff->full;
+ rep.minKeyCode = xkb->min_key_code;
+ rep.maxKeyCode = xkb->max_key_code;
+ if ( stuff->full&XkbKeyTypesMask ) {
+ rep.firstType = 0;
+ rep.nTypes = xkb->map->num_types;
+ }
+ else if (stuff->partial&XkbKeyTypesMask) {
+ if (((unsigned)stuff->firstType+stuff->nTypes)>xkb->map->num_types) {
+ client->errorValue = _XkbErrCode4(0x04,xkb->map->num_types,
+ stuff->firstType,stuff->nTypes);
+ return BadValue;
+ }
+ rep.firstType = stuff->firstType;
+ rep.nTypes = stuff->nTypes;
+ }
+ else rep.nTypes = 0;
+ rep.totalTypes = xkb->map->num_types;
+
+ n= XkbNumKeys(xkb);
+ if ( stuff->full&XkbKeySymsMask ) {
+ rep.firstKeySym = xkb->min_key_code;
+ rep.nKeySyms = n;
+ }
+ else if (stuff->partial&XkbKeySymsMask) {
+ CHK_KEY_RANGE(0x05,stuff->firstKeySym,stuff->nKeySyms,xkb);
+ rep.firstKeySym = stuff->firstKeySym;
+ rep.nKeySyms = stuff->nKeySyms;
+ }
+ else rep.nKeySyms = 0;
+ rep.totalSyms= 0;
+
+ if ( stuff->full&XkbKeyActionsMask ) {
+ rep.firstKeyAct= xkb->min_key_code;
+ rep.nKeyActs= n;
+ }
+ else if (stuff->partial&XkbKeyActionsMask) {
+ CHK_KEY_RANGE(0x07,stuff->firstKeyAct,stuff->nKeyActs,xkb);
+ rep.firstKeyAct= stuff->firstKeyAct;
+ rep.nKeyActs= stuff->nKeyActs;
+ }
+ else rep.nKeyActs= 0;
+ rep.totalActs= 0;
+
+ if ( stuff->full&XkbKeyBehaviorsMask ) {
+ rep.firstKeyBehavior = xkb->min_key_code;
+ rep.nKeyBehaviors = n;
+ }
+ else if (stuff->partial&XkbKeyBehaviorsMask) {
+ CHK_KEY_RANGE(0x09,stuff->firstKeyBehavior,stuff->nKeyBehaviors,xkb);
+ rep.firstKeyBehavior= stuff->firstKeyBehavior;
+ rep.nKeyBehaviors= stuff->nKeyBehaviors;
+ }
+ else rep.nKeyBehaviors = 0;
+ rep.totalKeyBehaviors= 0;
+
+ if (stuff->full&XkbVirtualModsMask)
+ rep.virtualMods= ~0;
+ else if (stuff->partial&XkbVirtualModsMask)
+ rep.virtualMods= stuff->virtualMods;
+
+ if (stuff->full&XkbExplicitComponentsMask) {
+ rep.firstKeyExplicit= xkb->min_key_code;
+ rep.nKeyExplicit= n;
+ }
+ else if (stuff->partial&XkbExplicitComponentsMask) {
+ CHK_KEY_RANGE(0x0B,stuff->firstKeyExplicit,stuff->nKeyExplicit,xkb);
+ rep.firstKeyExplicit= stuff->firstKeyExplicit;
+ rep.nKeyExplicit= stuff->nKeyExplicit;
+ }
+ else rep.nKeyExplicit = 0;
+ rep.totalKeyExplicit= 0;
+
+ if (stuff->full&XkbModifierMapMask) {
+ rep.firstModMapKey= xkb->min_key_code;
+ rep.nModMapKeys= n;
+ }
+ else if (stuff->partial&XkbModifierMapMask) {
+ CHK_KEY_RANGE(0x0D,stuff->firstModMapKey,stuff->nModMapKeys,xkb);
+ rep.firstModMapKey= stuff->firstModMapKey;
+ rep.nModMapKeys= stuff->nModMapKeys;
+ }
+ else rep.nModMapKeys = 0;
+ rep.totalModMapKeys= 0;
+
+ if (stuff->full&XkbVirtualModMapMask) {
+ rep.firstVModMapKey= xkb->min_key_code;
+ rep.nVModMapKeys= n;
+ }
+ else if (stuff->partial&XkbVirtualModMapMask) {
+ CHK_KEY_RANGE(0x0F,stuff->firstVModMapKey,stuff->nVModMapKeys,xkb);
+ rep.firstVModMapKey= stuff->firstVModMapKey;
+ rep.nVModMapKeys= stuff->nVModMapKeys;
+ }
+ else rep.nVModMapKeys = 0;
+ rep.totalVModMapKeys= 0;
+
+ if ((status=XkbComputeGetMapReplySize(xkb,&rep))!=Success)
+ return status;
+ return XkbSendMap(client,xkb,&rep);
+}
+
+/***====================================================================***/
+
+static int
+CheckKeyTypes( ClientPtr client,
+ XkbDescPtr xkb,
+ xkbSetMapReq * req,
+ xkbKeyTypeWireDesc **wireRtrn,
+ int * nMapsRtrn,
+ CARD8 * mapWidthRtrn)
+{
+unsigned nMaps;
+register unsigned i,n;
+register CARD8 * map;
+register xkbKeyTypeWireDesc *wire = *wireRtrn;
+
+ if (req->firstType>((unsigned)xkb->map->num_types)) {
+ *nMapsRtrn = _XkbErrCode3(0x01,req->firstType,xkb->map->num_types);
+ return 0;
+ }
+ if (req->flags&XkbSetMapResizeTypes) {
+ nMaps = req->firstType+req->nTypes;
+ if (nMaps<XkbNumRequiredTypes) { /* canonical types must be there */
+ *nMapsRtrn= _XkbErrCode4(0x02,req->firstType,req->nTypes,4);
+ return 0;
+ }
+ }
+ else if (req->present&XkbKeyTypesMask) {
+ nMaps = xkb->map->num_types;
+ if ((req->firstType+req->nTypes)>nMaps) {
+ *nMapsRtrn = req->firstType+req->nTypes;
+ return 0;
+ }
+ }
+ else {
+ *nMapsRtrn = xkb->map->num_types;
+ for (i=0;i<xkb->map->num_types;i++) {
+ mapWidthRtrn[i] = xkb->map->types[i].num_levels;
+ }
+ return 1;
+ }
+
+ for (i=0;i<req->firstType;i++) {
+ mapWidthRtrn[i] = xkb->map->types[i].num_levels;
+ }
+ for (i=0;i<req->nTypes;i++) {
+ unsigned width;
+ if (client->swapped) {
+ register int s;
+ swaps(&wire->virtualMods,s);
+ }
+ n= i+req->firstType;
+ width= wire->numLevels;
+ if (width<1) {
+ *nMapsRtrn= _XkbErrCode3(0x04,n,width);
+ return 0;
+ }
+ else if ((n==XkbOneLevelIndex)&&(width!=1)) { /* must be width 1 */
+ *nMapsRtrn= _XkbErrCode3(0x05,n,width);
+ return 0;
+ }
+ else if ((width!=2)&&
+ ((n==XkbTwoLevelIndex)||(n==XkbKeypadIndex)||
+ (n==XkbAlphabeticIndex))) {
+ /* TWO_LEVEL, ALPHABETIC and KEYPAD must be width 2 */
+ *nMapsRtrn= _XkbErrCode3(0x05,n,width);
+ return 0;
+ }
+ if (wire->nMapEntries>0) {
+ xkbKTSetMapEntryWireDesc * mapWire;
+ xkbModsWireDesc * preWire;
+ mapWire= (xkbKTSetMapEntryWireDesc *)&wire[1];
+ preWire= (xkbModsWireDesc *)&mapWire[wire->nMapEntries];
+ for (n=0;n<wire->nMapEntries;n++) {
+ if (client->swapped) {
+ register int s;
+ swaps(&mapWire[n].virtualMods,s);
+ }
+ if (mapWire[n].realMods&(~wire->realMods)) {
+ *nMapsRtrn= _XkbErrCode4(0x06,n,mapWire[n].realMods,
+ wire->realMods);
+ return 0;
+ }
+ if (mapWire[n].virtualMods&(~wire->virtualMods)) {
+ *nMapsRtrn= _XkbErrCode3(0x07,n,mapWire[n].virtualMods);
+ return 0;
+ }
+ if (mapWire[n].level>=wire->numLevels) {
+ *nMapsRtrn= _XkbErrCode4(0x08,n,wire->numLevels,
+ mapWire[n].level);
+ return 0;
+ }
+ if (wire->preserve) {
+ if (client->swapped) {
+ register int s;
+ swaps(&preWire[n].virtualMods,s);
+ }
+ if (preWire[n].realMods&(~mapWire[n].realMods)) {
+ *nMapsRtrn= _XkbErrCode4(0x09,n,preWire[n].realMods,
+ mapWire[n].realMods);
+ return 0;
+ }
+ if (preWire[n].virtualMods&(~mapWire[n].virtualMods)) {
+ *nMapsRtrn=_XkbErrCode3(0x0a,n,preWire[n].virtualMods);
+ return 0;
+ }
+ }
+ }
+ if (wire->preserve)
+ map= (CARD8 *)&preWire[wire->nMapEntries];
+ else map= (CARD8 *)&mapWire[wire->nMapEntries];
+ }
+ else map= (CARD8 *)&wire[1];
+ mapWidthRtrn[i+req->firstType] = wire->numLevels;
+ wire= (xkbKeyTypeWireDesc *)map;
+ }
+ for (i=req->firstType+req->nTypes;i<nMaps;i++) {
+ mapWidthRtrn[i] = xkb->map->types[i].num_levels;
+ }
+ *nMapsRtrn = nMaps;
+ *wireRtrn = wire;
+ return 1;
+}
+
+static int
+CheckKeySyms( ClientPtr client,
+ XkbDescPtr xkb,
+ xkbSetMapReq * req,
+ int nTypes,
+ CARD8 * mapWidths,
+ CARD16 * symsPerKey,
+ xkbSymMapWireDesc ** wireRtrn,
+ int * errorRtrn)
+{
+register unsigned i;
+XkbSymMapPtr map;
+xkbSymMapWireDesc* wire = *wireRtrn;
+
+ if (!(XkbKeySymsMask&req->present))
+ return 1;
+ CHK_REQ_KEY_RANGE2(0x11,req->firstKeySym,req->nKeySyms,req,(*errorRtrn),0);
+ for (i=0;i<req->nKeySyms;i++) {
+ KeySym *pSyms;
+ register unsigned nG;
+ if (client->swapped) {
+ swaps(&wire->nSyms,nG);
+ }
+ nG = XkbNumGroups(wire->groupInfo);
+ if (nG>XkbNumKbdGroups) {
+ *errorRtrn = _XkbErrCode3(0x14,i+req->firstKeySym,nG);
+ return 0;
+ }
+ if (nG>0) {
+ register int g,w;
+ for (g=w=0;g<nG;g++) {
+ if (wire->ktIndex[g]>=(unsigned)nTypes) {
+ *errorRtrn= _XkbErrCode4(0x15,i+req->firstKeySym,g,
+ wire->ktIndex[g]);
+ return 0;
+ }
+ if (mapWidths[wire->ktIndex[g]]>w)
+ w= mapWidths[wire->ktIndex[g]];
+ }
+ if (wire->width!=w) {
+ *errorRtrn= _XkbErrCode3(0x16,i+req->firstKeySym,wire->width);
+ return 0;
+ }
+ w*= nG;
+ symsPerKey[i+req->firstKeySym] = w;
+ if (w!=wire->nSyms) {
+ *errorRtrn=_XkbErrCode4(0x16,i+req->firstKeySym,wire->nSyms,w);
+ return 0;
+ }
+ }
+ else if (wire->nSyms!=0) {
+ *errorRtrn = _XkbErrCode3(0x17,i+req->firstKeySym,wire->nSyms);
+ return 0;
+ }
+ pSyms = (KeySym *)&wire[1];
+ wire = (xkbSymMapWireDesc *)&pSyms[wire->nSyms];
+ }
+
+ map = &xkb->map->key_sym_map[i];
+ for (;i<=(unsigned)xkb->max_key_code;i++,map++) {
+ register int g,nG,w;
+ nG= XkbKeyNumGroups(xkb,i);
+ for (w=g=0;g<nG;g++) {
+ if (map->kt_index[g]>=(unsigned)nTypes) {
+ *errorRtrn = _XkbErrCode4(0x18,i,g,map->kt_index[g]);
+ return 0;
+ }
+ if (mapWidths[map->kt_index[g]]>w)
+ w= mapWidths[map->kt_index[g]];
+ }
+ symsPerKey[i] = w*nG;
+ }
+ *wireRtrn = wire;
+ return 1;
+}
+
+static int
+CheckKeyActions( XkbDescPtr xkb,
+ xkbSetMapReq * req,
+ int nTypes,
+ CARD8 * mapWidths,
+ CARD16 * symsPerKey,
+ CARD8 ** wireRtrn,
+ int * nActsRtrn)
+{
+int nActs;
+CARD8 * wire = *wireRtrn;
+register unsigned i;
+
+ if (!(XkbKeyActionsMask&req->present))
+ return 1;
+ CHK_REQ_KEY_RANGE2(0x21,req->firstKeyAct,req->nKeyActs,req,(*nActsRtrn),0);
+ for (nActs=i=0;i<req->nKeyActs;i++) {
+ if (wire[0]!=0) {
+ if (wire[0]==symsPerKey[i+req->firstKeyAct])
+ nActs+= wire[0];
+ else {
+ *nActsRtrn= _XkbErrCode3(0x23,i+req->firstKeyAct,wire[0]);
+ return 0;
+ }
+ }
+ wire++;
+ }
+ if (req->nKeyActs%4)
+ wire+= 4-(req->nKeyActs%4);
+ *wireRtrn = (CARD8 *)(((XkbAnyAction *)wire)+nActs);
+ *nActsRtrn = nActs;
+ return 1;
+}
+
+static int
+CheckKeyBehaviors( XkbDescPtr xkb,
+ xkbSetMapReq * req,
+ xkbBehaviorWireDesc ** wireRtrn,
+ int * errorRtrn)
+{
+register xkbBehaviorWireDesc * wire = *wireRtrn;
+register XkbServerMapPtr server = xkb->server;
+register unsigned i;
+unsigned first,last;
+
+ if (((req->present&XkbKeyBehaviorsMask)==0)||(req->nKeyBehaviors<1)) {
+ req->present&= ~XkbKeyBehaviorsMask;
+ req->nKeyBehaviors= 0;
+ return 1;
+ }
+ first= req->firstKeyBehavior;
+ last= req->firstKeyBehavior+req->nKeyBehaviors-1;
+ if (first<req->minKeyCode) {
+ *errorRtrn = _XkbErrCode3(0x31,first,req->minKeyCode);
+ return 0;
+ }
+ if (last>req->maxKeyCode) {
+ *errorRtrn = _XkbErrCode3(0x32,last,req->maxKeyCode);
+ return 0;
+ }
+
+ for (i=0;i<req->totalKeyBehaviors;i++,wire++) {
+ if ((wire->key<first)||(wire->key>last)) {
+ *errorRtrn = _XkbErrCode4(0x33,first,last,wire->key);
+ return 0;
+ }
+ if ((wire->type&XkbKB_Permanent)&&
+ ((server->behaviors[wire->key].type!=wire->type)||
+ (server->behaviors[wire->key].data!=wire->data))) {
+ *errorRtrn = _XkbErrCode3(0x33,wire->key,wire->type);
+ return 0;
+ }
+ if ((wire->type==XkbKB_RadioGroup)&&
+ ((wire->data&(~XkbKB_RGAllowNone))>XkbMaxRadioGroups)) {
+ *errorRtrn= _XkbErrCode4(0x34,wire->key,wire->data,
+ XkbMaxRadioGroups);
+ return 0;
+ }
+ if ((wire->type==XkbKB_Overlay1)||(wire->type==XkbKB_Overlay2)) {
+ CHK_KEY_RANGE2(0x35,wire->key,1,xkb,*errorRtrn,0);
+ }
+ }
+ *wireRtrn = wire;
+ return 1;
+}
+
+static int
+CheckVirtualMods( XkbDescRec * xkb,
+ xkbSetMapReq * req,
+ CARD8 ** wireRtrn,
+ int * errorRtrn)
+{
+register CARD8 *wire = *wireRtrn;
+register unsigned i,nMods,bit;
+
+ if (((req->present&XkbVirtualModsMask)==0)||(req->virtualMods==0))
+ return 1;
+ for (i=nMods=0,bit=1;i<XkbNumVirtualMods;i++,bit<<=1) {
+ if (req->virtualMods&bit)
+ nMods++;
+ }
+ *wireRtrn= (wire+XkbPaddedSize(nMods));
+ return 1;
+}
+
+static int
+CheckKeyExplicit( XkbDescPtr xkb,
+ xkbSetMapReq * req,
+ CARD8 ** wireRtrn,
+ int * errorRtrn)
+{
+register CARD8 * wire = *wireRtrn;
+CARD8 * start;
+register unsigned i;
+int first,last;
+
+ if (((req->present&XkbExplicitComponentsMask)==0)||(req->nKeyExplicit<1)) {
+ req->present&= ~XkbExplicitComponentsMask;
+ req->nKeyExplicit= 0;
+ return 1;
+ }
+ first= req->firstKeyExplicit;
+ last= first+req->nKeyExplicit-1;
+ if (first<req->minKeyCode) {
+ *errorRtrn = _XkbErrCode3(0x51,first,req->minKeyCode);
+ return 0;
+ }
+ if (last>req->maxKeyCode) {
+ *errorRtrn = _XkbErrCode3(0x52,last,req->maxKeyCode);
+ return 0;
+ }
+ start= wire;
+ for (i=0;i<req->totalKeyExplicit;i++,wire+=2) {
+ if ((wire[0]<first)||(wire[0]>last)) {
+ *errorRtrn = _XkbErrCode4(0x53,first,last,wire[0]);
+ return 0;
+ }
+ if (wire[1]&(~XkbAllExplicitMask)) {
+ *errorRtrn= _XkbErrCode3(0x52,~XkbAllExplicitMask,wire[1]);
+ return 0;
+ }
+ }
+ wire+= XkbPaddedSize(wire-start)-(wire-start);
+ *wireRtrn= wire;
+ return 1;
+}
+
+static int
+CheckModifierMap(XkbDescPtr xkb,xkbSetMapReq *req,CARD8 **wireRtrn,int *errRtrn)
+{
+register CARD8 * wire = *wireRtrn;
+CARD8 * start;
+register unsigned i;
+int first,last;
+
+ if (((req->present&XkbModifierMapMask)==0)||(req->nModMapKeys<1)) {
+ req->present&= ~XkbModifierMapMask;
+ req->nModMapKeys= 0;
+ return 1;
+ }
+ first= req->firstModMapKey;
+ last= first+req->nModMapKeys-1;
+ if (first<req->minKeyCode) {
+ *errRtrn = _XkbErrCode3(0x61,first,req->minKeyCode);
+ return 0;
+ }
+ if (last>req->maxKeyCode) {
+ *errRtrn = _XkbErrCode3(0x62,last,req->maxKeyCode);
+ return 0;
+ }
+ start= wire;
+ for (i=0;i<req->totalModMapKeys;i++,wire+=2) {
+ if ((wire[0]<first)||(wire[0]>last)) {
+ *errRtrn = _XkbErrCode4(0x63,first,last,wire[0]);
+ return 0;
+ }
+ }
+ wire+= XkbPaddedSize(wire-start)-(wire-start);
+ *wireRtrn= wire;
+ return 1;
+}
+
+static int
+CheckVirtualModMap( XkbDescPtr xkb,
+ xkbSetMapReq *req,
+ xkbVModMapWireDesc **wireRtrn,
+ int *errRtrn)
+{
+register xkbVModMapWireDesc * wire = *wireRtrn;
+register unsigned i;
+int first,last;
+
+ if (((req->present&XkbVirtualModMapMask)==0)||(req->nVModMapKeys<1)) {
+ req->present&= ~XkbVirtualModMapMask;
+ req->nVModMapKeys= 0;
+ return 1;
+ }
+ first= req->firstVModMapKey;
+ last= first+req->nVModMapKeys-1;
+ if (first<req->minKeyCode) {
+ *errRtrn = _XkbErrCode3(0x71,first,req->minKeyCode);
+ return 0;
+ }
+ if (last>req->maxKeyCode) {
+ *errRtrn = _XkbErrCode3(0x72,last,req->maxKeyCode);
+ return 0;
+ }
+ for (i=0;i<req->totalVModMapKeys;i++,wire++) {
+ if ((wire->key<first)||(wire->key>last)) {
+ *errRtrn = _XkbErrCode4(0x73,first,last,wire->key);
+ return 0;
+ }
+ }
+ *wireRtrn= wire;
+ return 1;
+}
+
+static char *
+SetKeyTypes( XkbDescPtr xkb,
+ xkbSetMapReq * req,
+ xkbKeyTypeWireDesc * wire,
+ XkbChangesPtr changes)
+{
+register unsigned i;
+unsigned first,last;
+CARD8 *map;
+
+ if ((unsigned)(req->firstType+req->nTypes)>xkb->map->size_types) {
+ i= req->firstType+req->nTypes;
+ if (XkbAllocClientMap(xkb,XkbKeyTypesMask,i)!=Success) {
+ return NULL;
+ }
+ }
+ if ((unsigned)(req->firstType+req->nTypes)>xkb->map->num_types)
+ xkb->map->num_types= req->firstType+req->nTypes;
+
+ for (i=0;i<req->nTypes;i++) {
+ XkbKeyTypePtr pOld;
+ register unsigned n;
+
+ if (XkbResizeKeyType(xkb,i+req->firstType,wire->nMapEntries,
+ wire->preserve,wire->numLevels)!=Success) {
+ return NULL;
+ }
+ pOld = &xkb->map->types[i+req->firstType];
+ map = (CARD8 *)&wire[1];
+
+ pOld->mods.real_mods = wire->realMods;
+ pOld->mods.vmods= wire->virtualMods;
+ pOld->num_levels = wire->numLevels;
+ pOld->map_count= wire->nMapEntries;
+
+ pOld->mods.mask= pOld->mods.real_mods|
+ XkbMaskForVMask(xkb,pOld->mods.vmods);
+
+ if (wire->nMapEntries) {
+ xkbKTSetMapEntryWireDesc *mapWire;
+ xkbModsWireDesc *preWire;
+ unsigned tmp;
+ mapWire= (xkbKTSetMapEntryWireDesc *)map;
+ preWire= (xkbModsWireDesc *)&mapWire[wire->nMapEntries];
+ for (n=0;n<wire->nMapEntries;n++) {
+ pOld->map[n].active= 1;
+ pOld->map[n].mods.mask= mapWire[n].realMods;
+ pOld->map[n].mods.real_mods= mapWire[n].realMods;
+ pOld->map[n].mods.vmods= mapWire[n].virtualMods;
+ pOld->map[n].level= mapWire[n].level;
+ if (mapWire[n].virtualMods!=0) {
+ tmp= XkbMaskForVMask(xkb,mapWire[n].virtualMods);
+ pOld->map[n].active= (tmp!=0);
+ pOld->map[n].mods.mask|= tmp;
+ }
+ if (wire->preserve) {
+ pOld->preserve[n].real_mods= preWire[n].realMods;
+ pOld->preserve[n].vmods= preWire[n].virtualMods;
+ tmp= XkbMaskForVMask(xkb,preWire[n].virtualMods);
+ pOld->preserve[n].mask= preWire[n].realMods|tmp;
+ }
+ }
+ if (wire->preserve)
+ map= (CARD8 *)&preWire[wire->nMapEntries];
+ else map= (CARD8 *)&mapWire[wire->nMapEntries];
+ }
+ else map= (CARD8 *)&wire[1];
+ wire = (xkbKeyTypeWireDesc *)map;
+ }
+ first= req->firstType;
+ last= first+req->nTypes-1; /* last changed type */
+ if (changes->map.changed&XkbKeyTypesMask) {
+ int oldLast;
+ oldLast= changes->map.first_type+changes->map.num_types-1;
+ if (changes->map.first_type<first)
+ first= changes->map.first_type;
+ if (oldLast>last)
+ last= oldLast;
+ }
+ changes->map.changed|= XkbKeyTypesMask;
+ changes->map.first_type = first;
+ changes->map.num_types = (last-first)+1;
+ return (char *)wire;
+}
+
+static char *
+SetKeySyms( ClientPtr client,
+ XkbDescPtr xkb,
+ xkbSetMapReq * req,
+ xkbSymMapWireDesc * wire,
+ XkbChangesPtr changes,
+ DeviceIntPtr dev)
+{
+register unsigned i,s;
+XkbSymMapPtr oldMap;
+KeySym * newSyms;
+KeySym * pSyms;
+unsigned first,last;
+
+ oldMap = &xkb->map->key_sym_map[req->firstKeySym];
+ for (i=0;i<req->nKeySyms;i++,oldMap++) {
+ pSyms = (KeySym *)&wire[1];
+ if (wire->nSyms>0) {
+ newSyms = XkbResizeKeySyms(xkb,i+req->firstKeySym,wire->nSyms);
+ for (s=0;s<wire->nSyms;s++) {
+ newSyms[s]= pSyms[s];
+ }
+ if (client->swapped) {
+ int n;
+ for (s=0;s<wire->nSyms;s++) {
+ swapl(&newSyms[s],n);
+ }
+ }
+ }
+ oldMap->kt_index[0] = wire->ktIndex[0];
+ oldMap->kt_index[1] = wire->ktIndex[1];
+ oldMap->kt_index[2] = wire->ktIndex[2];
+ oldMap->kt_index[3] = wire->ktIndex[3];
+ oldMap->group_info = wire->groupInfo;
+ oldMap->width = wire->width;
+ wire= (xkbSymMapWireDesc *)&pSyms[wire->nSyms];
+ }
+ first= req->firstKeySym;
+ last= first+req->nKeySyms-1;
+ if (changes->map.changed&XkbKeySymsMask) {
+ int oldLast= (changes->map.first_key_sym+changes->map.num_key_syms-1);
+ if (changes->map.first_key_sym<first)
+ first= changes->map.first_key_sym;
+ if (oldLast>last)
+ last= oldLast;
+ }
+ changes->map.changed|= XkbKeySymsMask;
+ changes->map.first_key_sym = first;
+ changes->map.num_key_syms = (last-first+1);
+
+ s= 0;
+ for (i=xkb->min_key_code;i<=xkb->max_key_code;i++) {
+ if (XkbKeyNumGroups(xkb,i)>s)
+ s= XkbKeyNumGroups(xkb,i);
+ }
+ if (s!=xkb->ctrls->num_groups) {
+ xkbControlsNotify cn;
+ XkbControlsRec old;
+ cn.keycode= 0;
+ cn.eventType= 0;
+ cn.requestMajor= XkbReqCode;
+ cn.requestMinor= X_kbSetMap;
+ old= *xkb->ctrls;
+ xkb->ctrls->num_groups= s;
+ if (XkbComputeControlsNotify(dev,&old,xkb->ctrls,&cn,FALSE))
+ XkbSendControlsNotify(dev,&cn);
+ }
+ return (char *)wire;
+}
+
+static char *
+SetKeyActions( XkbDescPtr xkb,
+ xkbSetMapReq * req,
+ CARD8 * wire,
+ XkbChangesPtr changes)
+{
+register unsigned i,first,last;
+CARD8 * nActs = wire;
+XkbAction * newActs;
+
+ wire+= XkbPaddedSize(req->nKeyActs);
+ for (i=0;i<req->nKeyActs;i++) {
+ if (nActs[i]==0)
+ xkb->server->key_acts[i+req->firstKeyAct]= 0;
+ else {
+ newActs= XkbResizeKeyActions(xkb,i+req->firstKeyAct,nActs[i]);
+ memcpy((char *)newActs,(char *)wire,
+ nActs[i]*SIZEOF(xkbActionWireDesc));
+ wire+= nActs[i]*SIZEOF(xkbActionWireDesc);
+ }
+ }
+ first= req->firstKeyAct;
+ last= (first+req->nKeyActs-1);
+ if (changes->map.changed&XkbKeyActionsMask) {
+ int oldLast;
+ oldLast= changes->map.first_key_act+changes->map.num_key_acts-1;
+ if (changes->map.first_key_act<first)
+ first= changes->map.first_key_act;
+ if (oldLast>last)
+ last= oldLast;
+ }
+ changes->map.changed|= XkbKeyActionsMask;
+ changes->map.first_key_act= first;
+ changes->map.num_key_acts= (last-first+1);
+ return (char *)wire;
+}
+
+static char *
+SetKeyBehaviors( XkbSrvInfoPtr xkbi,
+ xkbSetMapReq *req,
+ xkbBehaviorWireDesc *wire,
+ XkbChangesPtr changes)
+{
+register unsigned i;
+int maxRG = -1;
+XkbDescPtr xkb = xkbi->desc;
+XkbServerMapPtr server = xkb->server;
+unsigned first,last;
+
+ first= req->firstKeyBehavior;
+ last= req->firstKeyBehavior+req->nKeyBehaviors-1;
+ memset(&server->behaviors[first], 0, req->nKeyBehaviors*sizeof(XkbBehavior));
+ for (i=0;i<req->totalKeyBehaviors;i++) {
+ if ((server->behaviors[wire->key].type&XkbKB_Permanent)==0) {
+ server->behaviors[wire->key].type= wire->type;
+ server->behaviors[wire->key].data= wire->data;
+ if ((wire->type==XkbKB_RadioGroup)&&(((int)wire->data)>maxRG))
+ maxRG= wire->data + 1;
+ }
+ wire++;
+ }
+
+ if (maxRG>(int)xkbi->nRadioGroups) {
+ int sz = maxRG*sizeof(XkbRadioGroupRec);
+ if (xkbi->radioGroups)
+ xkbi->radioGroups= realloc(xkbi->radioGroups,sz);
+ else xkbi->radioGroups= calloc(1, sz);
+ if (xkbi->radioGroups) {
+ if (xkbi->nRadioGroups)
+ memset(&xkbi->radioGroups[xkbi->nRadioGroups], 0,
+ (maxRG-xkbi->nRadioGroups)*sizeof(XkbRadioGroupRec));
+ xkbi->nRadioGroups= maxRG;
+ }
+ else xkbi->nRadioGroups= 0;
+ /* should compute members here */
+ }
+ if (changes->map.changed&XkbKeyBehaviorsMask) {
+ unsigned oldLast;
+ oldLast= changes->map.first_key_behavior+
+ changes->map.num_key_behaviors-1;
+ if (changes->map.first_key_behavior<req->firstKeyBehavior)
+ first= changes->map.first_key_behavior;
+ if (oldLast>last)
+ last= oldLast;
+ }
+ changes->map.changed|= XkbKeyBehaviorsMask;
+ changes->map.first_key_behavior = first;
+ changes->map.num_key_behaviors = (last-first+1);
+ return (char *)wire;
+}
+
+static char *
+SetVirtualMods(XkbSrvInfoPtr xkbi,xkbSetMapReq *req,CARD8 *wire,
+ XkbChangesPtr changes)
+{
+register int i,bit,nMods;
+XkbServerMapPtr srv = xkbi->desc->server;
+
+ if (((req->present&XkbVirtualModsMask)==0)||(req->virtualMods==0))
+ return (char *)wire;
+ for (i=nMods=0,bit=1;i<XkbNumVirtualMods;i++,bit<<=1) {
+ if (req->virtualMods&bit) {
+ if (srv->vmods[i]!=wire[nMods]) {
+ changes->map.changed|= XkbVirtualModsMask;
+ changes->map.vmods|= bit;
+ srv->vmods[i]= wire[nMods];
+ }
+ nMods++;
+ }
+ }
+ return (char *)(wire+XkbPaddedSize(nMods));
+}
+
+static char *
+SetKeyExplicit(XkbSrvInfoPtr xkbi,xkbSetMapReq *req,CARD8 *wire,
+ XkbChangesPtr changes)
+{
+register unsigned i,first,last;
+XkbServerMapPtr xkb = xkbi->desc->server;
+CARD8 * start;
+
+ start= wire;
+ first= req->firstKeyExplicit;
+ last= req->firstKeyExplicit+req->nKeyExplicit-1;
+ memset(&xkb->explicit[first], 0, req->nKeyExplicit);
+ for (i=0;i<req->totalKeyExplicit;i++,wire+= 2) {
+ xkb->explicit[wire[0]]= wire[1];
+ }
+ if (first>0) {
+ if (changes->map.changed&XkbExplicitComponentsMask) {
+ int oldLast;
+ oldLast= changes->map.first_key_explicit+
+ changes->map.num_key_explicit-1;
+ if (changes->map.first_key_explicit<first)
+ first= changes->map.first_key_explicit;
+ if (oldLast>last)
+ last= oldLast;
+ }
+ changes->map.first_key_explicit= first;
+ changes->map.num_key_explicit= (last-first)+1;
+ }
+ wire+= XkbPaddedSize(wire-start)-(wire-start);
+ return (char *)wire;
+}
+
+static char *
+SetModifierMap( XkbSrvInfoPtr xkbi,
+ xkbSetMapReq * req,
+ CARD8 * wire,
+ XkbChangesPtr changes)
+{
+register unsigned i,first,last;
+XkbClientMapPtr xkb = xkbi->desc->map;
+CARD8 * start;
+
+ start= wire;
+ first= req->firstModMapKey;
+ last= req->firstModMapKey+req->nModMapKeys-1;
+ memset(&xkb->modmap[first], 0, req->nModMapKeys);
+ for (i=0;i<req->totalModMapKeys;i++,wire+= 2) {
+ xkb->modmap[wire[0]]= wire[1];
+ }
+ if (first>0) {
+ if (changes->map.changed&XkbModifierMapMask) {
+ int oldLast;
+ oldLast= changes->map.first_modmap_key+
+ changes->map.num_modmap_keys-1;
+ if (changes->map.first_modmap_key<first)
+ first= changes->map.first_modmap_key;
+ if (oldLast>last)
+ last= oldLast;
+ }
+ changes->map.first_modmap_key= first;
+ changes->map.num_modmap_keys= (last-first)+1;
+ }
+ wire+= XkbPaddedSize(wire-start)-(wire-start);
+ return (char *)wire;
+}
+
+static char *
+SetVirtualModMap( XkbSrvInfoPtr xkbi,
+ xkbSetMapReq * req,
+ xkbVModMapWireDesc * wire,
+ XkbChangesPtr changes)
+{
+register unsigned i,first,last;
+XkbServerMapPtr srv = xkbi->desc->server;
+
+ first= req->firstVModMapKey;
+ last= req->firstVModMapKey+req->nVModMapKeys-1;
+ memset(&srv->vmodmap[first], 0, req->nVModMapKeys*sizeof(unsigned short));
+ for (i=0;i<req->totalVModMapKeys;i++,wire++) {
+ srv->vmodmap[wire->key]= wire->vmods;
+ }
+ if (first>0) {
+ if (changes->map.changed&XkbVirtualModMapMask) {
+ int oldLast;
+ oldLast= changes->map.first_vmodmap_key+
+ changes->map.num_vmodmap_keys-1;
+ if (changes->map.first_vmodmap_key<first)
+ first= changes->map.first_vmodmap_key;
+ if (oldLast>last)
+ last= oldLast;
+ }
+ changes->map.first_vmodmap_key= first;
+ changes->map.num_vmodmap_keys= (last-first)+1;
+ }
+ return (char *)wire;
+}
+
+/**
+ * Check if the given request can be applied to the given device but don't
+ * actually do anything..
+ */
+static int
+_XkbSetMapChecks(ClientPtr client, DeviceIntPtr dev, xkbSetMapReq *req, char* values)
+{
+ XkbSrvInfoPtr xkbi;
+ XkbDescPtr xkb;
+ int error;
+ int nTypes = 0, nActions;
+ CARD8 mapWidths[XkbMaxLegalKeyCode + 1] = {0};
+ CARD16 symsPerKey[XkbMaxLegalKeyCode + 1] = {0};
+ XkbSymMapPtr map;
+ int i;
+
+ xkbi= dev->key->xkbInfo;
+ xkb = xkbi->desc;
+
+ if ((xkb->min_key_code != req->minKeyCode)||
+ (xkb->max_key_code != req->maxKeyCode)) {
+ if (client->vMajor!=1) { /* pre 1.0 versions of Xlib have a bug */
+ req->minKeyCode= xkb->min_key_code;
+ req->maxKeyCode= xkb->max_key_code;
+ }
+ else {
+ if (!XkbIsLegalKeycode(req->minKeyCode)) {
+ client->errorValue = _XkbErrCode3(2, req->minKeyCode, req->maxKeyCode);
+ return BadValue;
+ }
+ if (req->minKeyCode > req->maxKeyCode) {
+ client->errorValue = _XkbErrCode3(3, req->minKeyCode, req->maxKeyCode);
+ return BadMatch;
+ }
+ }
+ }
+
+ if ((req->present & XkbKeyTypesMask) &&
+ (!CheckKeyTypes(client,xkb,req,(xkbKeyTypeWireDesc **)&values,
+ &nTypes,mapWidths))) {
+ client->errorValue = nTypes;
+ return BadValue;
+ }
+
+ /* symsPerKey/mapWidths must be filled regardless of client-side flags */
+ map = &xkb->map->key_sym_map[xkb->min_key_code];
+ for (i=xkb->min_key_code;i<xkb->max_key_code;i++,map++) {
+ register int g,ng,w;
+ ng= XkbNumGroups(map->group_info);
+ for (w=g=0;g<ng;g++) {
+ if (map->kt_index[g]>=(unsigned)nTypes) {
+ client->errorValue = _XkbErrCode4(0x13,i,g,map->kt_index[g]);
+ return 0;
+ }
+ if (mapWidths[map->kt_index[g]]>w)
+ w= mapWidths[map->kt_index[g]];
+ }
+ symsPerKey[i] = w*ng;
+ }
+
+ if ((req->present & XkbKeySymsMask) &&
+ (!CheckKeySyms(client,xkb,req,nTypes,mapWidths,symsPerKey,
+ (xkbSymMapWireDesc **)&values,&error))) {
+ client->errorValue = error;
+ return BadValue;
+ }
+
+ if ((req->present & XkbKeyActionsMask) &&
+ (!CheckKeyActions(xkb,req,nTypes,mapWidths,symsPerKey,
+ (CARD8 **)&values,&nActions))) {
+ client->errorValue = nActions;
+ return BadValue;
+ }
+
+ if ((req->present & XkbKeyBehaviorsMask) &&
+ (!CheckKeyBehaviors(xkb,req,(xkbBehaviorWireDesc**)&values,&error))) {
+ client->errorValue = error;
+ return BadValue;
+ }
+
+ if ((req->present & XkbVirtualModsMask) &&
+ (!CheckVirtualMods(xkb,req,(CARD8 **)&values,&error))) {
+ client->errorValue= error;
+ return BadValue;
+ }
+ if ((req->present&XkbExplicitComponentsMask) &&
+ (!CheckKeyExplicit(xkb,req,(CARD8 **)&values,&error))) {
+ client->errorValue= error;
+ return BadValue;
+ }
+ if ((req->present&XkbModifierMapMask) &&
+ (!CheckModifierMap(xkb,req,(CARD8 **)&values,&error))) {
+ client->errorValue= error;
+ return BadValue;
+ }
+ if ((req->present&XkbVirtualModMapMask) &&
+ (!CheckVirtualModMap(xkb,req,(xkbVModMapWireDesc **)&values,&error))) {
+ client->errorValue= error;
+ return BadValue;
+ }
+
+ if (((values-((char *)req))/4)!= req->length) {
+ ErrorF("[xkb] Internal error! Bad length in XkbSetMap (after check)\n");
+ client->errorValue = values-((char *)&req[1]);
+ return BadLength;
+ }
+
+ return Success;
+}
+
+/**
+ * Apply the given request on the given device.
+ */
+static int
+_XkbSetMap(ClientPtr client, DeviceIntPtr dev, xkbSetMapReq *req, char *values)
+{
+ XkbEventCauseRec cause;
+ XkbChangesRec change;
+ Bool sentNKN;
+ XkbSrvInfoPtr xkbi;
+ XkbDescPtr xkb;
+
+ xkbi= dev->key->xkbInfo;
+ xkb = xkbi->desc;
+
+ XkbSetCauseXkbReq(&cause,X_kbSetMap,client);
+ memset(&change, 0, sizeof(change));
+ sentNKN = FALSE;
+ if ((xkb->min_key_code!=req->minKeyCode)||
+ (xkb->max_key_code!=req->maxKeyCode)) {
+ Status status;
+ xkbNewKeyboardNotify nkn;
+ nkn.deviceID = nkn.oldDeviceID = dev->id;
+ nkn.oldMinKeyCode = xkb->min_key_code;
+ nkn.oldMaxKeyCode = xkb->max_key_code;
+ status= XkbChangeKeycodeRange(xkb, req->minKeyCode,
+ req->maxKeyCode, &change);
+ if (status != Success)
+ return status; /* oh-oh. what about the other keyboards? */
+ nkn.minKeyCode = xkb->min_key_code;
+ nkn.maxKeyCode = xkb->max_key_code;
+ nkn.requestMajor = XkbReqCode;
+ nkn.requestMinor = X_kbSetMap;
+ nkn.changed = XkbNKN_KeycodesMask;
+ XkbSendNewKeyboardNotify(dev,&nkn);
+ sentNKN = TRUE;
+ }
+
+ if (req->present&XkbKeyTypesMask) {
+ values = SetKeyTypes(xkb,req,(xkbKeyTypeWireDesc *)values,&change);
+ if (!values) goto allocFailure;
+ }
+ if (req->present&XkbKeySymsMask) {
+ values = SetKeySyms(client,xkb,req,(xkbSymMapWireDesc *)values,&change,dev);
+ if (!values) goto allocFailure;
+ }
+ if (req->present&XkbKeyActionsMask) {
+ values = SetKeyActions(xkb,req,(CARD8 *)values,&change);
+ if (!values) goto allocFailure;
+ }
+ if (req->present&XkbKeyBehaviorsMask) {
+ values= SetKeyBehaviors(xkbi,req,(xkbBehaviorWireDesc *)values,&change);
+ if (!values) goto allocFailure;
+ }
+ if (req->present&XkbVirtualModsMask)
+ values= SetVirtualMods(xkbi,req,(CARD8 *)values,&change);
+ if (req->present&XkbExplicitComponentsMask)
+ values= SetKeyExplicit(xkbi,req,(CARD8 *)values,&change);
+ if (req->present&XkbModifierMapMask)
+ values= SetModifierMap(xkbi,req,(CARD8 *)values,&change);
+ if (req->present&XkbVirtualModMapMask)
+ values= SetVirtualModMap(xkbi,req,(xkbVModMapWireDesc *)values,&change);
+ if (((values-((char *)req))/4)!=req->length) {
+ ErrorF("[xkb] Internal error! Bad length in XkbSetMap (after set)\n");
+ client->errorValue = values-((char *)&req[1]);
+ return BadLength;
+ }
+ if (req->flags&XkbSetMapRecomputeActions) {
+ KeyCode first,last,firstMM,lastMM;
+ if (change.map.num_key_syms>0) {
+ first= change.map.first_key_sym;
+ last= first+change.map.num_key_syms-1;
+ }
+ else first= last= 0;
+ if (change.map.num_modmap_keys>0) {
+ firstMM= change.map.first_modmap_key;
+ lastMM= first+change.map.num_modmap_keys-1;
+ }
+ else firstMM= lastMM= 0;
+ if ((last>0) && (lastMM>0)) {
+ if (firstMM<first)
+ first= firstMM;
+ if (lastMM>last)
+ last= lastMM;
+ }
+ else if (lastMM>0) {
+ first= firstMM;
+ last= lastMM;
+ }
+ if (last>0) {
+ unsigned check= 0;
+ XkbUpdateActions(dev,first,(last-first+1),&change,&check,&cause);
+ if (check)
+ XkbCheckSecondaryEffects(xkbi,check,&change,&cause);
+ }
+ }
+ if (!sentNKN)
+ XkbSendNotification(dev,&change,&cause);
+
+ return Success;
+allocFailure:
+ return BadAlloc;
+}
+
+
+int
+ProcXkbSetMap(ClientPtr client)
+{
+ DeviceIntPtr dev;
+ char * tmp;
+ int rc;
+
+ REQUEST(xkbSetMapReq);
+ REQUEST_AT_LEAST_SIZE(xkbSetMapReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixManageAccess);
+ CHK_MASK_LEGAL(0x01,stuff->present,XkbAllMapComponentsMask);
+
+ tmp = (char *)&stuff[1];
+
+ /* Check if we can to the SetMap on the requested device. If this
+ succeeds, do the same thing for all extension devices (if needed).
+ If any of them fails, fail. */
+ rc = _XkbSetMapChecks(client, dev, stuff, tmp);
+
+ if (rc != Success)
+ return rc;
+
+ if (stuff->deviceSpec == XkbUseCoreKbd)
+ {
+ DeviceIntPtr other;
+ for (other = inputInfo.devices; other; other = other->next)
+ {
+ if ((other != dev) && other->key && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev)
+ {
+ rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
+ if (rc == Success)
+ {
+ rc = _XkbSetMapChecks(client, other, stuff, tmp);
+ if (rc != Success)
+ return rc;
+ }
+ }
+ }
+ }
+
+ /* We know now that we will succed with the SetMap. In theory anyway. */
+ rc = _XkbSetMap(client, dev, stuff, tmp);
+ if (rc != Success)
+ return rc;
+
+ if (stuff->deviceSpec == XkbUseCoreKbd)
+ {
+ DeviceIntPtr other;
+ for (other = inputInfo.devices; other; other = other->next)
+ {
+ if ((other != dev) && other->key && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev)
+ {
+ rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
+ if (rc == Success)
+ _XkbSetMap(client, other, stuff, tmp);
+ /* ignore rc. if the SetMap failed although the check above
+ reported true there isn't much we can do. we still need to
+ set all other devices, hoping that at least they stay in
+ sync. */
+ }
+ }
+ }
+
+ return Success;
+}
+
+/***====================================================================***/
+
+static Status
+XkbComputeGetCompatMapReplySize( XkbCompatMapPtr compat,
+ xkbGetCompatMapReply * rep)
+{
+unsigned size,nGroups;
+
+ nGroups= 0;
+ if (rep->groups!=0) {
+ register int i,bit;
+ for (i=0,bit=1;i<XkbNumKbdGroups;i++,bit<<=1) {
+ if (rep->groups&bit)
+ nGroups++;
+ }
+ }
+ size= nGroups*SIZEOF(xkbModsWireDesc);
+ size+= (rep->nSI*SIZEOF(xkbSymInterpretWireDesc));
+ rep->length= size/4;
+ return Success;
+}
+
+static int
+XkbSendCompatMap( ClientPtr client,
+ XkbCompatMapPtr compat,
+ xkbGetCompatMapReply * rep)
+{
+char * data;
+int size;
+
+ size= rep->length*4;
+ if (size>0) {
+ data = malloc(size);
+ if (data) {
+ register unsigned i,bit;
+ xkbModsWireDesc * grp;
+ XkbSymInterpretPtr sym= &compat->sym_interpret[rep->firstSI];
+ xkbSymInterpretWireDesc *wire = (xkbSymInterpretWireDesc *)data;
+ for (i=0;i<rep->nSI;i++,sym++,wire++) {
+ wire->sym= sym->sym;
+ wire->mods= sym->mods;
+ wire->match= sym->match;
+ wire->virtualMod= sym->virtual_mod;
+ wire->flags= sym->flags;
+ memcpy((char*)&wire->act,(char*)&sym->act,sz_xkbActionWireDesc);
+ if (client->swapped) {
+ register int n;
+ swapl(&wire->sym,n);
+ }
+ }
+ if (rep->groups) {
+ grp = (xkbModsWireDesc *)wire;
+ for (i=0,bit=1;i<XkbNumKbdGroups;i++,bit<<=1) {
+ if (rep->groups&bit) {
+ grp->mask= compat->groups[i].mask;
+ grp->realMods= compat->groups[i].real_mods;
+ grp->virtualMods= compat->groups[i].vmods;
+ if (client->swapped) {
+ register int n;
+ swaps(&grp->virtualMods,n);
+ }
+ grp++;
+ }
+ }
+ wire= (xkbSymInterpretWireDesc*)grp;
+ }
+ }
+ else return BadAlloc;
+ }
+ else data= NULL;
+
+ if (client->swapped) {
+ register int n;
+ swaps(&rep->sequenceNumber,n);
+ swapl(&rep->length,n);
+ swaps(&rep->firstSI,n);
+ swaps(&rep->nSI,n);
+ swaps(&rep->nTotalSI,n);
+ }
+
+ WriteToClient(client, SIZEOF(xkbGetCompatMapReply), (char *)rep);
+ if (data) {
+ WriteToClient(client, size, data);
+ free((char *)data);
+ }
+ return Success;
+}
+
+int
+ProcXkbGetCompatMap(ClientPtr client)
+{
+ xkbGetCompatMapReply rep;
+ DeviceIntPtr dev;
+ XkbDescPtr xkb;
+ XkbCompatMapPtr compat;
+
+ REQUEST(xkbGetCompatMapReq);
+ REQUEST_SIZE_MATCH(xkbGetCompatMapReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
+
+ xkb = dev->key->xkbInfo->desc;
+ compat= xkb->compat;
+
+ rep.type = X_Reply;
+ rep.deviceID = dev->id;
+ rep.sequenceNumber = client->sequence;
+ rep.length = 0;
+ rep.firstSI = stuff->firstSI;
+ rep.nSI = stuff->nSI;
+ if (stuff->getAllSI) {
+ rep.firstSI = 0;
+ rep.nSI = compat->num_si;
+ }
+ else if ((((unsigned)stuff->nSI)>0)&&
+ ((unsigned)(stuff->firstSI+stuff->nSI-1)>=compat->num_si)) {
+ client->errorValue = _XkbErrCode2(0x05,compat->num_si);
+ return BadValue;
+ }
+ rep.nTotalSI = compat->num_si;
+ rep.groups= stuff->groups;
+ XkbComputeGetCompatMapReplySize(compat,&rep);
+ return XkbSendCompatMap(client,compat,&rep);
+}
+
+/**
+ * Apply the given request on the given device.
+ * If dryRun is TRUE, then value checks are performed, but the device isn't
+ * modified.
+ */
+static int
+_XkbSetCompatMap(ClientPtr client, DeviceIntPtr dev,
+ xkbSetCompatMapReq *req, char* data, BOOL dryRun)
+{
+ XkbSrvInfoPtr xkbi;
+ XkbDescPtr xkb;
+ XkbCompatMapPtr compat;
+ int nGroups;
+ unsigned i,bit;
+
+ xkbi = dev->key->xkbInfo;
+ xkb = xkbi->desc;
+ compat = xkb->compat;
+
+ if ((req->nSI>0)||(req->truncateSI)) {
+ xkbSymInterpretWireDesc *wire;
+ if (req->firstSI>compat->num_si) {
+ client->errorValue = _XkbErrCode2(0x02,compat->num_si);
+ return BadValue;
+ }
+ wire= (xkbSymInterpretWireDesc *)data;
+ wire+= req->nSI;
+ data = (char *)wire;
+ }
+
+ nGroups= 0;
+ if (req->groups!=0) {
+ for (i=0,bit=1;i<XkbNumKbdGroups;i++,bit<<=1) {
+ if ( req->groups&bit )
+ nGroups++;
+ }
+ }
+ data+= nGroups*SIZEOF(xkbModsWireDesc);
+ if (((data-((char *)req))/4)!=req->length) {
+ return BadLength;
+ }
+
+ /* Done all the checks we can do */
+ if (dryRun)
+ return Success;
+
+ data = (char *)&req[1];
+ if (req->nSI>0) {
+ xkbSymInterpretWireDesc *wire = (xkbSymInterpretWireDesc *)data;
+ XkbSymInterpretPtr sym;
+ if ((unsigned)(req->firstSI+req->nSI)>compat->num_si) {
+ compat->num_si= req->firstSI+req->nSI;
+ compat->sym_interpret= realloc(compat->sym_interpret,
+ compat->num_si * sizeof(XkbSymInterpretRec));
+ if (!compat->sym_interpret) {
+ compat->num_si= 0;
+ return BadAlloc;
+ }
+ }
+ else if (req->truncateSI) {
+ compat->num_si = req->firstSI+req->nSI;
+ }
+ sym = &compat->sym_interpret[req->firstSI];
+ for (i=0;i<req->nSI;i++,wire++,sym++) {
+ if (client->swapped) {
+ int n;
+ swapl(&wire->sym,n);
+ }
+ sym->sym= wire->sym;
+ sym->mods= wire->mods;
+ sym->match= wire->match;
+ sym->flags= wire->flags;
+ sym->virtual_mod= wire->virtualMod;
+ memcpy((char *)&sym->act,(char *)&wire->act,
+ SIZEOF(xkbActionWireDesc));
+ }
+ data = (char *)wire;
+ }
+ else if (req->truncateSI) {
+ compat->num_si = req->firstSI;
+ }
+
+ if (req->groups!=0) {
+ unsigned i, bit;
+ xkbModsWireDesc *wire = (xkbModsWireDesc *)data;
+ for (i = 0, bit = 1; i < XkbNumKbdGroups; i++, bit <<= 1) {
+ if (req->groups & bit) {
+ if (client->swapped) {
+ int n;
+ swaps(&wire->virtualMods,n);
+ }
+ compat->groups[i].mask= wire->realMods;
+ compat->groups[i].real_mods= wire->realMods;
+ compat->groups[i].vmods= wire->virtualMods;
+ if (wire->virtualMods!=0) {
+ unsigned tmp;
+ tmp= XkbMaskForVMask(xkb,wire->virtualMods);
+ compat->groups[i].mask|= tmp;
+ }
+ data+= SIZEOF(xkbModsWireDesc);
+ wire= (xkbModsWireDesc *)data;
+ }
+ }
+ }
+ i= XkbPaddedSize((data-((char *)req)));
+ if ((i/4)!=req->length) {
+ ErrorF("[xkb] Internal length error on read in _XkbSetCompatMap\n");
+ return BadLength;
+ }
+
+ if (dev->xkb_interest) {
+ xkbCompatMapNotify ev;
+ ev.deviceID = dev->id;
+ ev.changedGroups = req->groups;
+ ev.firstSI = req->firstSI;
+ ev.nSI = req->nSI;
+ ev.nTotalSI = compat->num_si;
+ XkbSendCompatMapNotify(dev,&ev);
+ }
+
+ if (req->recomputeActions) {
+ XkbChangesRec change;
+ unsigned check;
+ XkbEventCauseRec cause;
+
+ XkbSetCauseXkbReq(&cause,X_kbSetCompatMap,client);
+ memset(&change, 0, sizeof(XkbChangesRec));
+ XkbUpdateActions(dev,xkb->min_key_code,XkbNumKeys(xkb),&change,&check,
+ &cause);
+ if (check)
+ XkbCheckSecondaryEffects(xkbi,check,&change,&cause);
+ XkbSendNotification(dev,&change,&cause);
+ }
+ return Success;
+}
+
+int
+ProcXkbSetCompatMap(ClientPtr client)
+{
+ DeviceIntPtr dev;
+ char *data;
+ int rc;
+
+ REQUEST(xkbSetCompatMapReq);
+ REQUEST_AT_LEAST_SIZE(xkbSetCompatMapReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixManageAccess);
+
+ data = (char *)&stuff[1];
+
+ /* check first using a dry-run */
+ rc = _XkbSetCompatMap(client, dev, stuff, data, TRUE);
+ if (rc != Success)
+ return rc;
+ if (stuff->deviceSpec == XkbUseCoreKbd)
+ {
+ DeviceIntPtr other;
+ for (other = inputInfo.devices; other; other = other->next)
+ {
+ if ((other != dev) && other->key && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev)
+ {
+ rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
+ if (rc == Success)
+ {
+ /* dry-run */
+ rc = _XkbSetCompatMap(client, other, stuff, data, TRUE);
+ if (rc != Success)
+ return rc;
+ }
+ }
+ }
+ }
+
+ /* Yay, the dry-runs succeed. Let's apply */
+ rc = _XkbSetCompatMap(client, dev, stuff, data, FALSE);
+ if (rc != Success)
+ return rc;
+ if (stuff->deviceSpec == XkbUseCoreKbd)
+ {
+ DeviceIntPtr other;
+ for (other = inputInfo.devices; other; other = other->next)
+ {
+ if ((other != dev) && other->key && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev)
+ {
+ rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
+ if (rc == Success)
+ {
+ rc = _XkbSetCompatMap(client, other, stuff, data, FALSE);
+ if (rc != Success)
+ return rc;
+ }
+ }
+ }
+ }
+
+ return Success;
+}
+
+/***====================================================================***/
+
+int
+ProcXkbGetIndicatorState(ClientPtr client)
+{
+ xkbGetIndicatorStateReply rep;
+ XkbSrvLedInfoPtr sli;
+ DeviceIntPtr dev;
+ register int i;
+
+ REQUEST(xkbGetIndicatorStateReq);
+ REQUEST_SIZE_MATCH(xkbGetIndicatorStateReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixReadAccess);
+
+ sli= XkbFindSrvLedInfo(dev,XkbDfltXIClass,XkbDfltXIId,
+ XkbXI_IndicatorStateMask);
+ if (!sli)
+ return BadAlloc;
+
+ rep.type = X_Reply;
+ rep.sequenceNumber = client->sequence;
+ rep.length = 0;
+ rep.deviceID = dev->id;
+ rep.state = sli->effectiveState;
+
+ if (client->swapped) {
+ swaps(&rep.sequenceNumber,i);
+ swapl(&rep.state,i);
+ }
+ WriteToClient(client, SIZEOF(xkbGetIndicatorStateReply), (char *)&rep);
+ return Success;
+}
+
+/***====================================================================***/
+
+static Status
+XkbComputeGetIndicatorMapReplySize(
+ XkbIndicatorPtr indicators,
+ xkbGetIndicatorMapReply *rep)
+{
+register int i,bit;
+int nIndicators;
+
+ rep->realIndicators = indicators->phys_indicators;
+ for (i=nIndicators=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
+ if (rep->which&bit)
+ nIndicators++;
+ }
+ rep->length = (nIndicators*SIZEOF(xkbIndicatorMapWireDesc))/4;
+ return Success;
+}
+
+static int
+XkbSendIndicatorMap( ClientPtr client,
+ XkbIndicatorPtr indicators,
+ xkbGetIndicatorMapReply * rep)
+{
+int length;
+CARD8 * map;
+register int i;
+register unsigned bit;
+
+ length = rep->length*4;
+ if (length>0) {
+ CARD8 *to;
+ to= map= malloc(length);
+ if (map) {
+ xkbIndicatorMapWireDesc *wire = (xkbIndicatorMapWireDesc *)to;
+ for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
+ if (rep->which&bit) {
+ wire->flags= indicators->maps[i].flags;
+ wire->whichGroups= indicators->maps[i].which_groups;
+ wire->groups= indicators->maps[i].groups;
+ wire->whichMods= indicators->maps[i].which_mods;
+ wire->mods= indicators->maps[i].mods.mask;
+ wire->realMods= indicators->maps[i].mods.real_mods;
+ wire->virtualMods= indicators->maps[i].mods.vmods;
+ wire->ctrls= indicators->maps[i].ctrls;
+ if (client->swapped) {
+ register int n;
+ swaps(&wire->virtualMods,n);
+ swapl(&wire->ctrls,n);
+ }
+ wire++;
+ }
+ }
+ to = (CARD8 *)wire;
+ if ((to-map)!=length) {
+ client->errorValue = _XkbErrCode2(0xff,length);
+ free(map);
+ return BadLength;
+ }
+ }
+ else return BadAlloc;
+ }
+ else map = NULL;
+ if (client->swapped) {
+ swaps(&rep->sequenceNumber,i);
+ swapl(&rep->length,i);
+ swapl(&rep->which,i);
+ swapl(&rep->realIndicators,i);
+ }
+ WriteToClient(client, SIZEOF(xkbGetIndicatorMapReply), (char *)rep);
+ if (map) {
+ WriteToClient(client, length, (char *)map);
+ free((char *)map);
+ }
+ return Success;
+}
+
+int
+ProcXkbGetIndicatorMap(ClientPtr client)
+{
+xkbGetIndicatorMapReply rep;
+DeviceIntPtr dev;
+XkbDescPtr xkb;
+XkbIndicatorPtr leds;
+
+ REQUEST(xkbGetIndicatorMapReq);
+ REQUEST_SIZE_MATCH(xkbGetIndicatorMapReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
+
+ xkb= dev->key->xkbInfo->desc;
+ leds= xkb->indicators;
+
+ rep.type = X_Reply;
+ rep.sequenceNumber = client->sequence;
+ rep.length = 0;
+ rep.deviceID = dev->id;
+ rep.which = stuff->which;
+ XkbComputeGetIndicatorMapReplySize(leds,&rep);
+ return XkbSendIndicatorMap(client,leds,&rep);
+}
+
+/**
+ * Apply the given map to the given device. Which specifies which components
+ * to apply.
+ */
+static int
+_XkbSetIndicatorMap(ClientPtr client, DeviceIntPtr dev,
+ int which, xkbIndicatorMapWireDesc *desc)
+{
+ XkbSrvInfoPtr xkbi;
+ XkbSrvLedInfoPtr sli;
+ XkbEventCauseRec cause;
+ int i, bit;
+
+ xkbi = dev->key->xkbInfo;
+
+ sli= XkbFindSrvLedInfo(dev, XkbDfltXIClass, XkbDfltXIId,
+ XkbXI_IndicatorMapsMask);
+ if (!sli)
+ return BadAlloc;
+
+ for (i = 0, bit = 1; i < XkbNumIndicators; i++, bit <<= 1) {
+ if (which & bit) {
+ sli->maps[i].flags = desc->flags;
+ sli->maps[i].which_groups = desc->whichGroups;
+ sli->maps[i].groups = desc->groups;
+ sli->maps[i].which_mods = desc->whichMods;
+ sli->maps[i].mods.mask = desc->mods;
+ sli->maps[i].mods.real_mods = desc->mods;
+ sli->maps[i].mods.vmods= desc->virtualMods;
+ sli->maps[i].ctrls = desc->ctrls;
+ if (desc->virtualMods!=0) {
+ unsigned tmp;
+ tmp= XkbMaskForVMask(xkbi->desc,desc->virtualMods);
+ sli->maps[i].mods.mask= desc->mods|tmp;
+ }
+ desc++;
+ }
+ }
+
+ XkbSetCauseXkbReq(&cause,X_kbSetIndicatorMap,client);
+ XkbApplyLedMapChanges(dev,sli,which,NULL,NULL,&cause);
+
+ return Success;
+}
+
+int
+ProcXkbSetIndicatorMap(ClientPtr client)
+{
+ int i, bit;
+ int nIndicators;
+ DeviceIntPtr dev;
+ xkbIndicatorMapWireDesc *from;
+ int rc;
+
+ REQUEST(xkbSetIndicatorMapReq);
+ REQUEST_AT_LEAST_SIZE(xkbSetIndicatorMapReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixSetAttrAccess);
+
+ if (stuff->which==0)
+ return Success;
+
+ for (nIndicators=i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
+ if (stuff->which&bit)
+ nIndicators++;
+ }
+ if (stuff->length!=((SIZEOF(xkbSetIndicatorMapReq)+
+ (nIndicators*SIZEOF(xkbIndicatorMapWireDesc)))/4)) {
+ return BadLength;
+ }
+
+ from = (xkbIndicatorMapWireDesc *)&stuff[1];
+ for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
+ if (stuff->which&bit) {
+ if (client->swapped) {
+ int n;
+ swaps(&from->virtualMods,n);
+ swapl(&from->ctrls,n);
+ }
+ CHK_MASK_LEGAL(i,from->whichGroups,XkbIM_UseAnyGroup);
+ CHK_MASK_LEGAL(i,from->whichMods,XkbIM_UseAnyMods);
+ from++;
+ }
+ }
+
+ from = (xkbIndicatorMapWireDesc *)&stuff[1];
+ rc = _XkbSetIndicatorMap(client, dev, stuff->which, from);
+ if (rc != Success)
+ return rc;
+
+ if (stuff->deviceSpec == XkbUseCoreKbd)
+ {
+ DeviceIntPtr other;
+ for (other = inputInfo.devices; other; other = other->next)
+ {
+ if ((other != dev) && other->key && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev)
+ {
+ rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess);
+ if (rc == Success)
+ _XkbSetIndicatorMap(client, other, stuff->which, from);
+ }
+ }
+ }
+
+ return Success;
+}
+
+/***====================================================================***/
+
+int
+ProcXkbGetNamedIndicator(ClientPtr client)
+{
+ DeviceIntPtr dev;
+ xkbGetNamedIndicatorReply rep;
+ register int i = 0;
+ XkbSrvLedInfoPtr sli;
+ XkbIndicatorMapPtr map = NULL;
+
+ REQUEST(xkbGetNamedIndicatorReq);
+ REQUEST_SIZE_MATCH(xkbGetNamedIndicatorReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_LED_DEVICE(dev, stuff->deviceSpec, client, DixReadAccess);
+ CHK_ATOM_ONLY(stuff->indicator);
+
+ sli= XkbFindSrvLedInfo(dev,stuff->ledClass,stuff->ledID,0);
+ if (!sli)
+ return BadAlloc;
+
+ i= 0;
+ map= NULL;
+ if ((sli->names)&&(sli->maps)) {
+ for (i=0;i<XkbNumIndicators;i++) {
+ if (stuff->indicator==sli->names[i]) {
+ map= &sli->maps[i];
+ break;
+ }
+ }
+ }
+
+ rep.type= X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ rep.deviceID = dev->id;
+ rep.indicator= stuff->indicator;
+ if (map!=NULL) {
+ rep.found= TRUE;
+ rep.on= ((sli->effectiveState&(1<<i))!=0);
+ rep.realIndicator= ((sli->physIndicators&(1<<i))!=0);
+ rep.ndx= i;
+ rep.flags= map->flags;
+ rep.whichGroups= map->which_groups;
+ rep.groups= map->groups;
+ rep.whichMods= map->which_mods;
+ rep.mods= map->mods.mask;
+ rep.realMods= map->mods.real_mods;
+ rep.virtualMods= map->mods.vmods;
+ rep.ctrls= map->ctrls;
+ rep.supported= TRUE;
+ }
+ else {
+ rep.found= FALSE;
+ rep.on= FALSE;
+ rep.realIndicator= FALSE;
+ rep.ndx= XkbNoIndicator;
+ rep.flags= 0;
+ rep.whichGroups= 0;
+ rep.groups= 0;
+ rep.whichMods= 0;
+ rep.mods= 0;
+ rep.realMods= 0;
+ rep.virtualMods= 0;
+ rep.ctrls= 0;
+ rep.supported= TRUE;
+ }
+ if ( client->swapped ) {
+ register int n;
+ swapl(&rep.length,n);
+ swaps(&rep.sequenceNumber,n);
+ swapl(&rep.indicator,n);
+ swaps(&rep.virtualMods,n);
+ swapl(&rep.ctrls,n);
+ }
+
+ WriteToClient(client,SIZEOF(xkbGetNamedIndicatorReply), (char *)&rep);
+ return Success;
+}
+
+
+/**
+ * Find the IM on the device.
+ * Returns the map, or NULL if the map doesn't exist.
+ * If the return value is NULL, led_return is undefined. Otherwise, led_return
+ * is set to the led index of the map.
+ */
+static XkbIndicatorMapPtr
+_XkbFindNamedIndicatorMap(XkbSrvLedInfoPtr sli, Atom indicator,
+ int *led_return)
+{
+ XkbIndicatorMapPtr map;
+
+ /* search for the right indicator */
+ map = NULL;
+ if (sli->names && sli->maps) {
+ int led;
+
+ for (led = 0; (led < XkbNumIndicators) && (map == NULL); led++) {
+ if (sli->names[led] == indicator) {
+ map= &sli->maps[led];
+ *led_return = led;
+ break;
+ }
+ }
+ }
+
+ return map;
+}
+
+/**
+ * Creates an indicator map on the device. If dryRun is TRUE, it only checks
+ * if creation is possible, but doesn't actually create it.
+ */
+static int
+_XkbCreateIndicatorMap(DeviceIntPtr dev, Atom indicator,
+ int ledClass, int ledID,
+ XkbIndicatorMapPtr *map_return, int *led_return,
+ Bool dryRun)
+{
+ XkbSrvLedInfoPtr sli;
+ XkbIndicatorMapPtr map;
+ int led;
+
+ sli = XkbFindSrvLedInfo(dev, ledClass, ledID, XkbXI_IndicatorsMask);
+ if (!sli)
+ return BadAlloc;
+
+ map = _XkbFindNamedIndicatorMap(sli, indicator, &led);
+
+ if (!map)
+ {
+ /* find first unused indicator maps and assign the name to it */
+ for (led = 0, map = NULL; (led < XkbNumIndicators) && (map == NULL); led++) {
+ if ((sli->names) && (sli->maps) && (sli->names[led] == None) &&
+ (!XkbIM_InUse(&sli->maps[led])))
+ {
+ map = &sli->maps[led];
+ if (!dryRun)
+ sli->names[led] = indicator;
+ break;
+ }
+ }
+ }
+
+ if (!map)
+ return BadAlloc;
+
+ *led_return = led;
+ *map_return = map;
+ return Success;
+}
+
+static int
+_XkbSetNamedIndicator(ClientPtr client, DeviceIntPtr dev,
+ xkbSetNamedIndicatorReq *stuff)
+{
+ unsigned int extDevReason;
+ unsigned int statec, namec, mapc;
+ XkbSrvLedInfoPtr sli;
+ int led = 0;
+ XkbIndicatorMapPtr map;
+ DeviceIntPtr kbd;
+ XkbEventCauseRec cause;
+ xkbExtensionDeviceNotify ed;
+ XkbChangesRec changes;
+ int rc;
+
+ rc = _XkbCreateIndicatorMap(dev, stuff->indicator, stuff->ledClass,
+ stuff->ledID, &map, &led, FALSE);
+ if (rc != Success || !map) /* oh-oh */
+ return rc;
+
+ sli = XkbFindSrvLedInfo(dev, stuff->ledClass, stuff->ledID,
+ XkbXI_IndicatorsMask);
+ if (!sli)
+ return BadAlloc;
+
+ namec = mapc = statec = 0;
+ extDevReason = 0;
+
+ namec |= (1<<led);
+ sli->namesPresent |= ((stuff->indicator != None) ? (1 << led) : 0);
+ extDevReason |= XkbXI_IndicatorNamesMask;
+
+ if (stuff->setMap) {
+ map->flags = stuff->flags;
+ map->which_groups = stuff->whichGroups;
+ map->groups = stuff->groups;
+ map->which_mods = stuff->whichMods;
+ map->mods.mask = stuff->realMods;
+ map->mods.real_mods = stuff->realMods;
+ map->mods.vmods= stuff->virtualMods;
+ map->ctrls = stuff->ctrls;
+ mapc|= (1<<led);
+ }
+
+ if ((stuff->setState) && ((map->flags & XkbIM_NoExplicit) == 0))
+ {
+ if (stuff->on) sli->explicitState |= (1<<led);
+ else sli->explicitState &= ~(1<<led);
+ statec |= ((sli->effectiveState ^ sli->explicitState) & (1 << led));
+ }
+
+ memset((char *)&ed, 0, sizeof(xkbExtensionDeviceNotify));
+ memset((char *)&changes, 0, sizeof(XkbChangesRec));
+ XkbSetCauseXkbReq(&cause,X_kbSetNamedIndicator,client);
+ if (namec)
+ XkbApplyLedNameChanges(dev,sli,namec,&ed,&changes,&cause);
+ if (mapc)
+ XkbApplyLedMapChanges(dev,sli,mapc,&ed,&changes,&cause);
+ if (statec)
+ XkbApplyLedStateChanges(dev,sli,statec,&ed,&changes,&cause);
+
+ kbd = dev;
+ if ((sli->flags&XkbSLI_HasOwnState)==0)
+ kbd = inputInfo.keyboard;
+ XkbFlushLedEvents(dev, kbd, sli, &ed, &changes, &cause);
+
+ return Success;
+}
+
+int
+ProcXkbSetNamedIndicator(ClientPtr client)
+{
+ int rc;
+ DeviceIntPtr dev;
+ int led = 0;
+ XkbIndicatorMapPtr map;
+
+ REQUEST(xkbSetNamedIndicatorReq);
+ REQUEST_SIZE_MATCH(xkbSetNamedIndicatorReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_LED_DEVICE(dev, stuff->deviceSpec, client, DixSetAttrAccess);
+ CHK_ATOM_ONLY(stuff->indicator);
+ CHK_MASK_LEGAL(0x10,stuff->whichGroups,XkbIM_UseAnyGroup);
+ CHK_MASK_LEGAL(0x11,stuff->whichMods,XkbIM_UseAnyMods);
+
+ /* Dry-run for checks */
+ rc = _XkbCreateIndicatorMap(dev, stuff->indicator,
+ stuff->ledClass, stuff->ledID,
+ &map, &led, TRUE);
+ if (rc != Success || !map) /* couldn't be created or didn't exist */
+ return rc;
+
+ if (stuff->deviceSpec == XkbUseCoreKbd ||
+ stuff->deviceSpec == XkbUseCorePtr)
+ {
+ DeviceIntPtr other;
+ for (other = inputInfo.devices; other; other = other->next)
+ {
+ if ((other != dev) && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev &&
+ (other->kbdfeed || other->leds) &&
+ (XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess) == Success))
+ {
+ rc = _XkbCreateIndicatorMap(other, stuff->indicator,
+ stuff->ledClass, stuff->ledID,
+ &map, &led, TRUE);
+ if (rc != Success || !map)
+ return rc;
+ }
+ }
+ }
+
+ /* All checks passed, let's do it */
+ rc = _XkbSetNamedIndicator(client, dev, stuff);
+ if (rc != Success)
+ return rc;
+
+ if (stuff->deviceSpec == XkbUseCoreKbd ||
+ stuff->deviceSpec == XkbUseCorePtr)
+ {
+ DeviceIntPtr other;
+ for (other = inputInfo.devices; other; other = other->next)
+ {
+ if ((other != dev) && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev &&
+ (other->kbdfeed || other->leds) &&
+ (XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess) == Success))
+ {
+ _XkbSetNamedIndicator(client, other, stuff);
+ }
+ }
+ }
+
+ return Success;
+}
+
+/***====================================================================***/
+
+static CARD32
+_XkbCountAtoms(Atom *atoms,int maxAtoms,int *count)
+{
+register unsigned int i,bit,nAtoms;
+register CARD32 atomsPresent;
+
+ for (i=nAtoms=atomsPresent=0,bit=1;i<maxAtoms;i++,bit<<=1) {
+ if (atoms[i]!=None) {
+ atomsPresent|= bit;
+ nAtoms++;
+ }
+ }
+ if (count)
+ *count= nAtoms;
+ return atomsPresent;
+}
+
+static char *
+_XkbWriteAtoms(char *wire,Atom *atoms,int maxAtoms,int swap)
+{
+register unsigned int i;
+Atom *atm;
+
+ atm = (Atom *)wire;
+ for (i=0;i<maxAtoms;i++) {
+ if (atoms[i]!=None) {
+ *atm= atoms[i];
+ if (swap) {
+ register int n;
+ swapl(atm,n);
+ }
+ atm++;
+ }
+ }
+ return (char *)atm;
+}
+
+static Status
+XkbComputeGetNamesReplySize(XkbDescPtr xkb,xkbGetNamesReply *rep)
+{
+register unsigned which,length;
+register int i;
+
+ rep->minKeyCode= xkb->min_key_code;
+ rep->maxKeyCode= xkb->max_key_code;
+ which= rep->which;
+ length= 0;
+ if (xkb->names!=NULL) {
+ if (which&XkbKeycodesNameMask) length++;
+ if (which&XkbGeometryNameMask) length++;
+ if (which&XkbSymbolsNameMask) length++;
+ if (which&XkbPhysSymbolsNameMask) length++;
+ if (which&XkbTypesNameMask) length++;
+ if (which&XkbCompatNameMask) length++;
+ }
+ else which&= ~XkbComponentNamesMask;
+
+ if (xkb->map!=NULL) {
+ if (which&XkbKeyTypeNamesMask)
+ length+= xkb->map->num_types;
+ rep->nTypes= xkb->map->num_types;
+ if (which&XkbKTLevelNamesMask) {
+ XkbKeyTypePtr pType = xkb->map->types;
+ int nKTLevels = 0;
+
+ length+= XkbPaddedSize(xkb->map->num_types)/4;
+ for (i=0;i<xkb->map->num_types;i++,pType++) {
+ if (pType->level_names!=NULL)
+ nKTLevels+= pType->num_levels;
+ }
+ rep->nKTLevels= nKTLevels;
+ length+= nKTLevels;
+ }
+ }
+ else {
+ rep->nTypes= 0;
+ rep->nKTLevels= 0;
+ which&= ~(XkbKeyTypeNamesMask|XkbKTLevelNamesMask);
+ }
+
+ rep->minKeyCode= xkb->min_key_code;
+ rep->maxKeyCode= xkb->max_key_code;
+ rep->indicators= 0;
+ rep->virtualMods= 0;
+ rep->groupNames= 0;
+ if (xkb->names!=NULL) {
+ if (which&XkbIndicatorNamesMask) {
+ int nLeds;
+ rep->indicators=
+ _XkbCountAtoms(xkb->names->indicators,XkbNumIndicators,&nLeds);
+ length+= nLeds;
+ if (nLeds==0)
+ which&= ~XkbIndicatorNamesMask;
+ }
+
+ if (which&XkbVirtualModNamesMask) {
+ int nVMods;
+ rep->virtualMods=
+ _XkbCountAtoms(xkb->names->vmods,XkbNumVirtualMods,&nVMods);
+ length+= nVMods;
+ if (nVMods==0)
+ which&= ~XkbVirtualModNamesMask;
+ }
+
+ if (which&XkbGroupNamesMask) {
+ int nGroups;
+ rep->groupNames=
+ _XkbCountAtoms(xkb->names->groups,XkbNumKbdGroups,&nGroups);
+ length+= nGroups;
+ if (nGroups==0)
+ which&= ~XkbGroupNamesMask;
+ }
+
+ if ((which&XkbKeyNamesMask)&&(xkb->names->keys))
+ length+= rep->nKeys;
+ else which&= ~XkbKeyNamesMask;
+
+ if ((which&XkbKeyAliasesMask)&&
+ (xkb->names->key_aliases)&&(xkb->names->num_key_aliases>0)) {
+ rep->nKeyAliases= xkb->names->num_key_aliases;
+ length+= rep->nKeyAliases*2;
+ }
+ else {
+ which&= ~XkbKeyAliasesMask;
+ rep->nKeyAliases= 0;
+ }
+
+ if ((which&XkbRGNamesMask)&&(xkb->names->num_rg>0))
+ length+= xkb->names->num_rg;
+ else which&= ~XkbRGNamesMask;
+ }
+ else {
+ which&= ~(XkbIndicatorNamesMask|XkbVirtualModNamesMask);
+ which&= ~(XkbGroupNamesMask|XkbKeyNamesMask|XkbKeyAliasesMask);
+ which&= ~XkbRGNamesMask;
+ }
+
+ rep->length= length;
+ rep->which= which;
+ return Success;
+}
+
+static int
+XkbSendNames(ClientPtr client,XkbDescPtr xkb,xkbGetNamesReply *rep)
+{
+register unsigned i,length,which;
+char * start;
+char * desc;
+register int n;
+
+ length= rep->length*4;
+ which= rep->which;
+ if (client->swapped) {
+ swaps(&rep->sequenceNumber,n);
+ swapl(&rep->length,n);
+ swapl(&rep->which,n);
+ swaps(&rep->virtualMods,n);
+ swapl(&rep->indicators,n);
+ }
+
+ start = desc = calloc(1, length);
+ if ( !start )
+ return BadAlloc;
+ if (xkb->names) {
+ if (which&XkbKeycodesNameMask) {
+ *((CARD32 *)desc)= xkb->names->keycodes;
+ if (client->swapped) {
+ swapl(desc,n);
+ }
+ desc+= 4;
+ }
+ if (which&XkbGeometryNameMask) {
+ *((CARD32 *)desc)= xkb->names->geometry;
+ if (client->swapped) {
+ swapl(desc,n);
+ }
+ desc+= 4;
+ }
+ if (which&XkbSymbolsNameMask) {
+ *((CARD32 *)desc)= xkb->names->symbols;
+ if (client->swapped) {
+ swapl(desc,n);
+ }
+ desc+= 4;
+ }
+ if (which&XkbPhysSymbolsNameMask) {
+ register CARD32 *atm= (CARD32 *)desc;
+ atm[0]= (CARD32)xkb->names->phys_symbols;
+ if (client->swapped) {
+ swapl(&atm[0],n);
+ }
+ desc+= 4;
+ }
+ if (which&XkbTypesNameMask) {
+ *((CARD32 *)desc)= (CARD32)xkb->names->types;
+ if (client->swapped) {
+ swapl(desc,n);
+ }
+ desc+= 4;
+ }
+ if (which&XkbCompatNameMask) {
+ *((CARD32 *)desc)= (CARD32)xkb->names->compat;
+ if (client->swapped) {
+ swapl(desc,n);
+ }
+ desc+= 4;
+ }
+ if (which&XkbKeyTypeNamesMask) {
+ register CARD32 *atm= (CARD32 *)desc;
+ register XkbKeyTypePtr type= xkb->map->types;
+
+ for (i=0;i<xkb->map->num_types;i++,atm++,type++) {
+ *atm= (CARD32)type->name;
+ if (client->swapped) {
+ swapl(atm,n);
+ }
+ }
+ desc= (char *)atm;
+ }
+ if (which&XkbKTLevelNamesMask && xkb->map) {
+ XkbKeyTypePtr type = xkb->map->types;
+ register CARD32 *atm;
+ for (i=0;i<rep->nTypes;i++,type++) {
+ *desc++ = type->num_levels;
+ }
+ desc+= XkbPaddedSize(rep->nTypes)-rep->nTypes;
+
+ atm= (CARD32 *)desc;
+ type = xkb->map->types;
+ for (i=0;i<xkb->map->num_types;i++,type++) {
+ register unsigned l;
+ if (type->level_names) {
+ for (l=0;l<type->num_levels;l++,atm++) {
+ *atm= type->level_names[l];
+ if (client->swapped) {
+ swapl(atm,n);
+ }
+ }
+ desc+= type->num_levels*4;
+ }
+ }
+ }
+ if (which&XkbIndicatorNamesMask) {
+ desc= _XkbWriteAtoms(desc,xkb->names->indicators,XkbNumIndicators,
+ client->swapped);
+ }
+ if (which&XkbVirtualModNamesMask) {
+ desc= _XkbWriteAtoms(desc,xkb->names->vmods,XkbNumVirtualMods,
+ client->swapped);
+ }
+ if (which&XkbGroupNamesMask) {
+ desc= _XkbWriteAtoms(desc,xkb->names->groups,XkbNumKbdGroups,
+ client->swapped);
+ }
+ if (which&XkbKeyNamesMask) {
+ for (i=0;i<rep->nKeys;i++,desc+= sizeof(XkbKeyNameRec)) {
+ *((XkbKeyNamePtr)desc)= xkb->names->keys[i+rep->firstKey];
+ }
+ }
+ if (which&XkbKeyAliasesMask) {
+ XkbKeyAliasPtr pAl;
+ pAl= xkb->names->key_aliases;
+ for (i=0;i<rep->nKeyAliases;i++,pAl++,desc+=2*XkbKeyNameLength) {
+ *((XkbKeyAliasPtr)desc)= *pAl;
+ }
+ }
+ if ((which&XkbRGNamesMask)&&(rep->nRadioGroups>0)) {
+ register CARD32 *atm= (CARD32 *)desc;
+ for (i=0;i<rep->nRadioGroups;i++,atm++) {
+ *atm= (CARD32)xkb->names->radio_groups[i];
+ if (client->swapped) {
+ swapl(atm,n);
+ }
+ }
+ desc+= rep->nRadioGroups*4;
+ }
+ }
+
+ if ((desc-start)!=(length)) {
+ ErrorF("[xkb] BOGUS LENGTH in write names, expected %d, got %ld\n",
+ length, (unsigned long)(desc-start));
+ }
+ WriteToClient(client, SIZEOF(xkbGetNamesReply), (char *)rep);
+ WriteToClient(client, length, start);
+ free((char *)start);
+ return Success;
+}
+
+int
+ProcXkbGetNames(ClientPtr client)
+{
+ DeviceIntPtr dev;
+ XkbDescPtr xkb;
+ xkbGetNamesReply rep;
+
+ REQUEST(xkbGetNamesReq);
+ REQUEST_SIZE_MATCH(xkbGetNamesReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
+ CHK_MASK_LEGAL(0x01,stuff->which,XkbAllNamesMask);
+
+ xkb = dev->key->xkbInfo->desc;
+ memset(&rep, 0, sizeof(xkbGetNamesReply));
+ rep.type= X_Reply;
+ rep.sequenceNumber= client->sequence;
+ rep.length = 0;
+ rep.deviceID = dev->id;
+ rep.which = stuff->which;
+ rep.nTypes = xkb->map->num_types;
+ rep.firstKey = xkb->min_key_code;
+ rep.nKeys = XkbNumKeys(xkb);
+ if (xkb->names!=NULL) {
+ rep.nKeyAliases= xkb->names->num_key_aliases;
+ rep.nRadioGroups = xkb->names->num_rg;
+ }
+ else {
+ rep.nKeyAliases= rep.nRadioGroups= 0;
+ }
+ XkbComputeGetNamesReplySize(xkb,&rep);
+ return XkbSendNames(client,xkb,&rep);
+}
+
+/***====================================================================***/
+
+static CARD32 *
+_XkbCheckAtoms(CARD32 *wire,int nAtoms,int swapped,Atom *pError)
+{
+register int i;
+
+ for (i=0;i<nAtoms;i++,wire++) {
+ if (swapped) {
+ register int n;
+ swapl(wire,n);
+ }
+ if ((((Atom)*wire)!=None)&&(!ValidAtom((Atom)*wire))) {
+ *pError= ((Atom)*wire);
+ return NULL;
+ }
+ }
+ return wire;
+}
+
+static CARD32 *
+_XkbCheckMaskedAtoms(CARD32 *wire,int nAtoms,CARD32 present,int swapped,
+ Atom *pError)
+{
+register unsigned i,bit;
+
+ for (i=0,bit=1;(i<nAtoms)&&(present);i++,bit<<=1) {
+ if ((present&bit)==0)
+ continue;
+ if (swapped) {
+ register int n;
+ swapl(wire,n);
+ }
+ if ((((Atom)*wire)!=None)&&(!ValidAtom(((Atom)*wire)))) {
+ *pError= (Atom)*wire;
+ return NULL;
+ }
+ wire++;
+ }
+ return wire;
+}
+
+static Atom *
+_XkbCopyMaskedAtoms( Atom *wire,
+ Atom *dest,
+ int nAtoms,
+ CARD32 present)
+{
+register int i,bit;
+
+ for (i=0,bit=1;(i<nAtoms)&&(present);i++,bit<<=1) {
+ if ((present&bit)==0)
+ continue;
+ dest[i]= *wire++;
+ }
+ return wire;
+}
+
+static Bool
+_XkbCheckTypeName(Atom name,int typeNdx)
+{
+const char * str;
+
+ str= NameForAtom(name);
+ if ((strcmp(str,"ONE_LEVEL")==0)||(strcmp(str,"TWO_LEVEL")==0)||
+ (strcmp(str,"ALPHABETIC")==0)||(strcmp(str,"KEYPAD")==0))
+ return FALSE;
+ return TRUE;
+}
+
+/**
+ * Check the device-dependent data in the request against the device. Returns
+ * Success, or the appropriate error code.
+ */
+static int
+_XkbSetNamesCheck(ClientPtr client, DeviceIntPtr dev,
+ xkbSetNamesReq *stuff, CARD32 *data)
+{
+ XkbDescRec *xkb;
+ XkbNamesRec *names;
+ CARD32 *tmp;
+ Atom bad;
+
+ tmp = data;
+ xkb = dev->key->xkbInfo->desc;
+ names = xkb->names;
+
+
+ if (stuff->which & XkbKeyTypeNamesMask) {
+ int i;
+ CARD32 *old;
+ if ( stuff->nTypes<1 ) {
+ client->errorValue = _XkbErrCode2(0x02,stuff->nTypes);
+ return BadValue;
+ }
+ if ((unsigned)(stuff->firstType+stuff->nTypes-1)>=xkb->map->num_types) {
+ client->errorValue = _XkbErrCode4(0x03,stuff->firstType,
+ stuff->nTypes,
+ xkb->map->num_types);
+ return BadValue;
+ }
+ if (((unsigned)stuff->firstType)<=XkbLastRequiredType) {
+ client->errorValue = _XkbErrCode2(0x04,stuff->firstType);
+ return BadAccess;
+ }
+ old= tmp;
+ tmp= _XkbCheckAtoms(tmp,stuff->nTypes,client->swapped,&bad);
+ if (!tmp) {
+ client->errorValue= bad;
+ return BadAtom;
+ }
+ for (i=0;i<stuff->nTypes;i++,old++) {
+ if (!_XkbCheckTypeName((Atom)*old,stuff->firstType+i))
+ client->errorValue= _XkbErrCode2(0x05,i);
+ }
+ }
+ if (stuff->which&XkbKTLevelNamesMask) {
+ unsigned i;
+ XkbKeyTypePtr type;
+ CARD8 * width;
+ if ( stuff->nKTLevels<1 ) {
+ client->errorValue = _XkbErrCode2(0x05,stuff->nKTLevels);
+ return BadValue;
+ }
+ if ((unsigned)(stuff->firstKTLevel+stuff->nKTLevels-1)>=
+ xkb->map->num_types) {
+ client->errorValue = _XkbErrCode4(0x06,stuff->firstKTLevel,
+ stuff->nKTLevels,xkb->map->num_types);
+ return BadValue;
+ }
+ width = (CARD8 *)tmp;
+ tmp= (CARD32 *)(((char *)tmp)+XkbPaddedSize(stuff->nKTLevels));
+ type = &xkb->map->types[stuff->firstKTLevel];
+ for (i=0;i<stuff->nKTLevels;i++,type++) {
+ if (width[i]==0)
+ continue;
+ else if (width[i]!=type->num_levels) {
+ client->errorValue= _XkbErrCode4(0x07,i+stuff->firstKTLevel,
+ type->num_levels,width[i]);
+ return BadMatch;
+ }
+ tmp= _XkbCheckAtoms(tmp,width[i],client->swapped,&bad);
+ if (!tmp) {
+ client->errorValue= bad;
+ return BadAtom;
+ }
+ }
+ }
+ if (stuff->which&XkbIndicatorNamesMask) {
+ if (stuff->indicators==0) {
+ client->errorValue= 0x08;
+ return BadMatch;
+ }
+ tmp= _XkbCheckMaskedAtoms(tmp,XkbNumIndicators,stuff->indicators,
+ client->swapped,&bad);
+ if (!tmp) {
+ client->errorValue= bad;
+ return BadAtom;
+ }
+ }
+ if (stuff->which&XkbVirtualModNamesMask) {
+ if (stuff->virtualMods==0) {
+ client->errorValue= 0x09;
+ return BadMatch;
+ }
+ tmp= _XkbCheckMaskedAtoms(tmp,XkbNumVirtualMods,
+ (CARD32)stuff->virtualMods,
+ client->swapped,&bad);
+ if (!tmp) {
+ client->errorValue = bad;
+ return BadAtom;
+ }
+ }
+ if (stuff->which&XkbGroupNamesMask) {
+ if (stuff->groupNames==0) {
+ client->errorValue= 0x0a;
+ return BadMatch;
+ }
+ tmp= _XkbCheckMaskedAtoms(tmp,XkbNumKbdGroups,
+ (CARD32)stuff->groupNames,
+ client->swapped,&bad);
+ if (!tmp) {
+ client->errorValue = bad;
+ return BadAtom;
+ }
+ }
+ if (stuff->which&XkbKeyNamesMask) {
+ if (stuff->firstKey<(unsigned)xkb->min_key_code) {
+ client->errorValue= _XkbErrCode3(0x0b,xkb->min_key_code,
+ stuff->firstKey);
+ return BadValue;
+ }
+ if (((unsigned)(stuff->firstKey+stuff->nKeys-1)>xkb->max_key_code)||
+ (stuff->nKeys<1)) {
+ client->errorValue= _XkbErrCode4(0x0c,xkb->max_key_code,
+ stuff->firstKey,stuff->nKeys);
+ return BadValue;
+ }
+ tmp+= stuff->nKeys;
+ }
+ if ((stuff->which&XkbKeyAliasesMask)&&(stuff->nKeyAliases>0)) {
+ tmp+= stuff->nKeyAliases*2;
+ }
+ if (stuff->which&XkbRGNamesMask) {
+ if ( stuff->nRadioGroups<1 ) {
+ client->errorValue= _XkbErrCode2(0x0d,stuff->nRadioGroups);
+ return BadValue;
+ }
+ tmp= _XkbCheckAtoms(tmp,stuff->nRadioGroups,client->swapped,&bad);
+ if (!tmp) {
+ client->errorValue= bad;
+ return BadAtom;
+ }
+ }
+ if ((tmp-((CARD32 *)stuff))!=stuff->length) {
+ client->errorValue = stuff->length;
+ return BadLength;
+ }
+
+
+
+ return Success;
+}
+
+static int
+_XkbSetNames(ClientPtr client, DeviceIntPtr dev, xkbSetNamesReq *stuff)
+{
+ XkbDescRec *xkb;
+ XkbNamesRec *names;
+ CARD32 *tmp;
+ xkbNamesNotify nn;
+
+ tmp = (CARD32 *)&stuff[1];
+ xkb = dev->key->xkbInfo->desc;
+ names = xkb->names;
+
+ if (XkbAllocNames(xkb,stuff->which,stuff->nRadioGroups,
+ stuff->nKeyAliases)!=Success) {
+ return BadAlloc;
+ }
+
+ memset(&nn, 0, sizeof(xkbNamesNotify));
+ nn.changed= stuff->which;
+ tmp = (CARD32 *)&stuff[1];
+ if (stuff->which&XkbKeycodesNameMask)
+ names->keycodes= *tmp++;
+ if (stuff->which&XkbGeometryNameMask)
+ names->geometry= *tmp++;
+ if (stuff->which&XkbSymbolsNameMask)
+ names->symbols= *tmp++;
+ if (stuff->which&XkbPhysSymbolsNameMask)
+ names->phys_symbols= *tmp++;
+ if (stuff->which&XkbTypesNameMask)
+ names->types= *tmp++;
+ if (stuff->which&XkbCompatNameMask)
+ names->compat= *tmp++;
+ if ((stuff->which&XkbKeyTypeNamesMask)&&(stuff->nTypes>0)) {
+ register unsigned i;
+ register XkbKeyTypePtr type;
+
+ type= &xkb->map->types[stuff->firstType];
+ for (i=0;i<stuff->nTypes;i++,type++) {
+ type->name= *tmp++;
+ }
+ nn.firstType= stuff->firstType;
+ nn.nTypes= stuff->nTypes;
+ }
+ if (stuff->which&XkbKTLevelNamesMask) {
+ register XkbKeyTypePtr type;
+ register unsigned i;
+ CARD8 *width;
+
+ width = (CARD8 *)tmp;
+ tmp= (CARD32 *)(((char *)tmp)+XkbPaddedSize(stuff->nKTLevels));
+ type= &xkb->map->types[stuff->firstKTLevel];
+ for (i=0;i<stuff->nKTLevels;i++,type++) {
+ if (width[i]>0) {
+ if (type->level_names) {
+ register unsigned n;
+ for (n=0;n<width[i];n++) {
+ type->level_names[n]= tmp[n];
+ }
+ }
+ tmp+= width[i];
+ }
+ }
+ nn.firstLevelName= 0;
+ nn.nLevelNames= stuff->nTypes;
+ }
+ if (stuff->which&XkbIndicatorNamesMask) {
+ tmp= _XkbCopyMaskedAtoms(tmp,names->indicators,XkbNumIndicators,
+ stuff->indicators);
+ nn.changedIndicators= stuff->indicators;
+ }
+ if (stuff->which&XkbVirtualModNamesMask) {
+ tmp= _XkbCopyMaskedAtoms(tmp,names->vmods,XkbNumVirtualMods,
+ stuff->virtualMods);
+ nn.changedVirtualMods= stuff->virtualMods;
+ }
+ if (stuff->which&XkbGroupNamesMask) {
+ tmp= _XkbCopyMaskedAtoms(tmp,names->groups,XkbNumKbdGroups,
+ stuff->groupNames);
+ nn.changedVirtualMods= stuff->groupNames;
+ }
+ if (stuff->which&XkbKeyNamesMask) {
+ memcpy((char*)&names->keys[stuff->firstKey],(char *)tmp,
+ stuff->nKeys*XkbKeyNameLength);
+ tmp+= stuff->nKeys;
+ nn.firstKey= stuff->firstKey;
+ nn.nKeys= stuff->nKeys;
+ }
+ if (stuff->which&XkbKeyAliasesMask) {
+ if (stuff->nKeyAliases>0) {
+ register int na= stuff->nKeyAliases;
+ if (XkbAllocNames(xkb,XkbKeyAliasesMask,0,na)!=Success)
+ return BadAlloc;
+ memcpy((char *)names->key_aliases,(char *)tmp,
+ stuff->nKeyAliases*sizeof(XkbKeyAliasRec));
+ tmp+= stuff->nKeyAliases*2;
+ }
+ else if (names->key_aliases!=NULL) {
+ free(names->key_aliases);
+ names->key_aliases= NULL;
+ names->num_key_aliases= 0;
+ }
+ nn.nAliases= names->num_key_aliases;
+ }
+ if (stuff->which&XkbRGNamesMask) {
+ if (stuff->nRadioGroups>0) {
+ register unsigned i,nrg;
+ nrg= stuff->nRadioGroups;
+ if (XkbAllocNames(xkb,XkbRGNamesMask,nrg,0)!=Success)
+ return BadAlloc;
+
+ for (i=0;i<stuff->nRadioGroups;i++) {
+ names->radio_groups[i]= tmp[i];
+ }
+ tmp+= stuff->nRadioGroups;
+ }
+ else if (names->radio_groups) {
+ free(names->radio_groups);
+ names->radio_groups= NULL;
+ names->num_rg= 0;
+ }
+ nn.nRadioGroups= names->num_rg;
+ }
+ if (nn.changed) {
+ Bool needExtEvent;
+ needExtEvent= (nn.changed&XkbIndicatorNamesMask)!=0;
+ XkbSendNamesNotify(dev,&nn);
+ if (needExtEvent) {
+ XkbSrvLedInfoPtr sli;
+ xkbExtensionDeviceNotify edev;
+ register int i;
+ register unsigned bit;
+
+ sli= XkbFindSrvLedInfo(dev,XkbDfltXIClass,XkbDfltXIId,
+ XkbXI_IndicatorsMask);
+ sli->namesPresent= 0;
+ for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
+ if (names->indicators[i]!=None)
+ sli->namesPresent|= bit;
+ }
+ memset(&edev, 0, sizeof(xkbExtensionDeviceNotify));
+ edev.reason= XkbXI_IndicatorNamesMask;
+ edev.ledClass= KbdFeedbackClass;
+ edev.ledID= dev->kbdfeed->ctrl.id;
+ edev.ledsDefined= sli->namesPresent|sli->mapsPresent;
+ edev.ledState= sli->effectiveState;
+ edev.firstBtn= 0;
+ edev.nBtns= 0;
+ edev.supported= XkbXI_AllFeaturesMask;
+ edev.unsupported= 0;
+ XkbSendExtensionDeviceNotify(dev,client,&edev);
+ }
+ }
+ return Success;
+}
+
+int
+ProcXkbSetNames(ClientPtr client)
+{
+ DeviceIntPtr dev;
+ CARD32 *tmp;
+ Atom bad;
+ int rc;
+
+ REQUEST(xkbSetNamesReq);
+ REQUEST_AT_LEAST_SIZE(xkbSetNamesReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixManageAccess);
+ CHK_MASK_LEGAL(0x01,stuff->which,XkbAllNamesMask);
+
+ /* check device-independent stuff */
+ tmp = (CARD32 *)&stuff[1];
+
+ if (stuff->which&XkbKeycodesNameMask) {
+ tmp= _XkbCheckAtoms(tmp,1,client->swapped,&bad);
+ if (!tmp) {
+ client->errorValue = bad;
+ return BadAtom;
+ }
+ }
+ if (stuff->which&XkbGeometryNameMask) {
+ tmp= _XkbCheckAtoms(tmp,1,client->swapped,&bad);
+ if (!tmp) {
+ client->errorValue = bad;
+ return BadAtom;
+ }
+ }
+ if (stuff->which&XkbSymbolsNameMask) {
+ tmp= _XkbCheckAtoms(tmp,1,client->swapped,&bad);
+ if (!tmp) {
+ client->errorValue = bad;
+ return BadAtom;
+ }
+ }
+ if (stuff->which&XkbPhysSymbolsNameMask) {
+ tmp= _XkbCheckAtoms(tmp,1,client->swapped,&bad);
+ if (!tmp) {
+ client->errorValue= bad;
+ return BadAtom;
+ }
+ }
+ if (stuff->which&XkbTypesNameMask) {
+ tmp= _XkbCheckAtoms(tmp,1,client->swapped,&bad);
+ if (!tmp) {
+ client->errorValue = bad;
+ return BadAtom;
+ }
+ }
+ if (stuff->which&XkbCompatNameMask) {
+ tmp= _XkbCheckAtoms(tmp,1,client->swapped,&bad);
+ if (!tmp) {
+ client->errorValue = bad;
+ return BadAtom;
+ }
+ }
+
+ /* start of device-dependent tests */
+ rc = _XkbSetNamesCheck(client, dev, stuff, tmp);
+ if (rc != Success)
+ return rc;
+
+ if (stuff->deviceSpec == XkbUseCoreKbd)
+ {
+ DeviceIntPtr other;
+ for (other = inputInfo.devices; other; other = other->next)
+ {
+ if ((other != dev) && other->key && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev)
+ {
+
+ rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
+ if (rc == Success)
+ {
+ rc = _XkbSetNamesCheck(client, other, stuff, tmp);
+ if (rc != Success)
+ return rc;
+ }
+ }
+ }
+ }
+
+ /* everything is okay -- update names */
+
+ rc = _XkbSetNames(client, dev, stuff);
+ if (rc != Success)
+ return rc;
+
+ if (stuff->deviceSpec == XkbUseCoreKbd)
+ {
+ DeviceIntPtr other;
+ for (other = inputInfo.devices; other; other = other->next)
+ {
+ if ((other != dev) && other->key && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev)
+ {
+
+ rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
+ if (rc == Success)
+ _XkbSetNames(client, other, stuff);
+ }
+ }
+ }
+
+ /* everything is okay -- update names */
+
+ return Success;
+}
+
+/***====================================================================***/
+
+#include "xkbgeom.h"
+
+#define XkbSizeCountedString(s) ((s)?((((2+strlen(s))+3)/4)*4):4)
+
+static char *
+XkbWriteCountedString(char *wire,char *str,Bool swap)
+{
+ CARD16 len,*pLen;
+
+ if (!str)
+ return wire;
+
+ len= strlen(str);
+ pLen= (CARD16 *)wire;
+ *pLen= len;
+ if (swap) {
+ register int n;
+ swaps(pLen,n);
+ }
+ memcpy(&wire[2],str,len);
+ wire+= ((2+len+3)/4)*4;
+ return wire;
+}
+
+static int
+XkbSizeGeomProperties(XkbGeometryPtr geom)
+{
+register int i,size;
+XkbPropertyPtr prop;
+
+ for (size=i=0,prop=geom->properties;i<geom->num_properties;i++,prop++) {
+ size+= XkbSizeCountedString(prop->name);
+ size+= XkbSizeCountedString(prop->value);
+ }
+ return size;
+}
+
+static char *
+XkbWriteGeomProperties(char *wire,XkbGeometryPtr geom,Bool swap)
+{
+register int i;
+register XkbPropertyPtr prop;
+
+ for (i=0,prop=geom->properties;i<geom->num_properties;i++,prop++) {
+ wire= XkbWriteCountedString(wire,prop->name,swap);
+ wire= XkbWriteCountedString(wire,prop->value,swap);
+ }
+ return wire;
+}
+
+static int
+XkbSizeGeomKeyAliases(XkbGeometryPtr geom)
+{
+ return geom->num_key_aliases*(2*XkbKeyNameLength);
+}
+
+static char *
+XkbWriteGeomKeyAliases(char *wire,XkbGeometryPtr geom,Bool swap)
+{
+register int sz;
+
+ sz= geom->num_key_aliases*(XkbKeyNameLength*2);
+ if (sz>0) {
+ memcpy(wire,(char *)geom->key_aliases,sz);
+ wire+= sz;
+ }
+ return wire;
+}
+
+static int
+XkbSizeGeomColors(XkbGeometryPtr geom)
+{
+register int i,size;
+register XkbColorPtr color;
+
+ for (i=size=0,color=geom->colors;i<geom->num_colors;i++,color++) {
+ size+= XkbSizeCountedString(color->spec);
+ }
+ return size;
+}
+
+static char *
+XkbWriteGeomColors(char *wire,XkbGeometryPtr geom,Bool swap)
+{
+register int i;
+register XkbColorPtr color;
+
+ for (i=0,color=geom->colors;i<geom->num_colors;i++,color++) {
+ wire= XkbWriteCountedString(wire,color->spec,swap);
+ }
+ return wire;
+}
+
+static int
+XkbSizeGeomShapes(XkbGeometryPtr geom)
+{
+register int i,size;
+register XkbShapePtr shape;
+
+ for (i=size=0,shape=geom->shapes;i<geom->num_shapes;i++,shape++) {
+ register int n;
+ register XkbOutlinePtr ol;
+ size+= SIZEOF(xkbShapeWireDesc);
+ for (n=0,ol=shape->outlines;n<shape->num_outlines;n++,ol++) {
+ size+= SIZEOF(xkbOutlineWireDesc);
+ size+= ol->num_points*SIZEOF(xkbPointWireDesc);
+ }
+ }
+ return size;
+}
+
+static char *
+XkbWriteGeomShapes(char *wire,XkbGeometryPtr geom,Bool swap)
+{
+int i;
+XkbShapePtr shape;
+xkbShapeWireDesc * shapeWire;
+
+ for (i=0,shape=geom->shapes;i<geom->num_shapes;i++,shape++) {
+ register int o;
+ XkbOutlinePtr ol;
+ xkbOutlineWireDesc * olWire;
+ shapeWire= (xkbShapeWireDesc *)wire;
+ shapeWire->name= shape->name;
+ shapeWire->nOutlines= shape->num_outlines;
+ if (shape->primary!=NULL)
+ shapeWire->primaryNdx= XkbOutlineIndex(shape,shape->primary);
+ else shapeWire->primaryNdx= XkbNoShape;
+ if (shape->approx!=NULL)
+ shapeWire->approxNdx= XkbOutlineIndex(shape,shape->approx);
+ else shapeWire->approxNdx= XkbNoShape;
+ if (swap) {
+ register int n;
+ swapl(&shapeWire->name,n);
+ }
+ wire= (char *)&shapeWire[1];
+ for (o=0,ol=shape->outlines;o<shape->num_outlines;o++,ol++) {
+ register int p;
+ XkbPointPtr pt;
+ xkbPointWireDesc * ptWire;
+ olWire= (xkbOutlineWireDesc *)wire;
+ olWire->nPoints= ol->num_points;
+ olWire->cornerRadius= ol->corner_radius;
+ wire= (char *)&olWire[1];
+ ptWire= (xkbPointWireDesc *)wire;
+ for (p=0,pt=ol->points;p<ol->num_points;p++,pt++) {
+ ptWire[p].x= pt->x;
+ ptWire[p].y= pt->y;
+ if (swap) {
+ register int n;
+ swaps(&ptWire[p].x,n);
+ swaps(&ptWire[p].y,n);
+ }
+ }
+ wire= (char *)&ptWire[ol->num_points];
+ }
+ }
+ return wire;
+}
+
+static int
+XkbSizeGeomDoodads(int num_doodads,XkbDoodadPtr doodad)
+{
+register int i,size;
+
+ for (i=size=0;i<num_doodads;i++,doodad++) {
+ size+= SIZEOF(xkbAnyDoodadWireDesc);
+ if (doodad->any.type==XkbTextDoodad) {
+ size+= XkbSizeCountedString(doodad->text.text);
+ size+= XkbSizeCountedString(doodad->text.font);
+ }
+ else if (doodad->any.type==XkbLogoDoodad) {
+ size+= XkbSizeCountedString(doodad->logo.logo_name);
+ }
+ }
+ return size;
+}
+
+static char *
+XkbWriteGeomDoodads(char *wire,int num_doodads,XkbDoodadPtr doodad,Bool swap)
+{
+register int i;
+xkbDoodadWireDesc * doodadWire;
+
+ for (i=0;i<num_doodads;i++,doodad++) {
+ doodadWire= (xkbDoodadWireDesc *)wire;
+ wire= (char *)&doodadWire[1];
+ memset(doodadWire, 0, SIZEOF(xkbDoodadWireDesc));
+ doodadWire->any.name= doodad->any.name;
+ doodadWire->any.type= doodad->any.type;
+ doodadWire->any.priority= doodad->any.priority;
+ doodadWire->any.top= doodad->any.top;
+ doodadWire->any.left= doodad->any.left;
+ if (swap) {
+ register int n;
+ swapl(&doodadWire->any.name,n);
+ swaps(&doodadWire->any.top,n);
+ swaps(&doodadWire->any.left,n);
+ }
+ switch (doodad->any.type) {
+ case XkbOutlineDoodad:
+ case XkbSolidDoodad:
+ doodadWire->shape.angle= doodad->shape.angle;
+ doodadWire->shape.colorNdx= doodad->shape.color_ndx;
+ doodadWire->shape.shapeNdx= doodad->shape.shape_ndx;
+ if (swap) {
+ register int n;
+ swaps(&doodadWire->shape.angle,n);
+ }
+ break;
+ case XkbTextDoodad:
+ doodadWire->text.angle= doodad->text.angle;
+ doodadWire->text.width= doodad->text.width;
+ doodadWire->text.height= doodad->text.height;
+ doodadWire->text.colorNdx= doodad->text.color_ndx;
+ if (swap) {
+ register int n;
+ swaps(&doodadWire->text.angle,n);
+ swaps(&doodadWire->text.width,n);
+ swaps(&doodadWire->text.height,n);
+ }
+ wire= XkbWriteCountedString(wire,doodad->text.text,swap);
+ wire= XkbWriteCountedString(wire,doodad->text.font,swap);
+ break;
+ case XkbIndicatorDoodad:
+ doodadWire->indicator.shapeNdx= doodad->indicator.shape_ndx;
+ doodadWire->indicator.onColorNdx=doodad->indicator.on_color_ndx;
+ doodadWire->indicator.offColorNdx=
+ doodad->indicator.off_color_ndx;
+ break;
+ case XkbLogoDoodad:
+ doodadWire->logo.angle= doodad->logo.angle;
+ doodadWire->logo.colorNdx= doodad->logo.color_ndx;
+ doodadWire->logo.shapeNdx= doodad->logo.shape_ndx;
+ wire= XkbWriteCountedString(wire,doodad->logo.logo_name,swap);
+ break;
+ default:
+ ErrorF("[xkb] Unknown doodad type %d in XkbWriteGeomDoodads\n",
+ doodad->any.type);
+ ErrorF("[xkb] Ignored\n");
+ break;
+ }
+ }
+ return wire;
+}
+
+static char *
+XkbWriteGeomOverlay(char *wire,XkbOverlayPtr ol,Bool swap)
+{
+register int r;
+XkbOverlayRowPtr row;
+xkbOverlayWireDesc * olWire;
+
+ olWire= (xkbOverlayWireDesc *)wire;
+ olWire->name= ol->name;
+ olWire->nRows= ol->num_rows;
+ if (swap) {
+ register int n;
+ swapl(&olWire->name,n);
+ }
+ wire= (char *)&olWire[1];
+ for (r=0,row=ol->rows;r<ol->num_rows;r++,row++) {
+ unsigned int k;
+ XkbOverlayKeyPtr key;
+ xkbOverlayRowWireDesc * rowWire;
+ rowWire= (xkbOverlayRowWireDesc *)wire;
+ rowWire->rowUnder= row->row_under;
+ rowWire->nKeys= row->num_keys;
+ wire= (char *)&rowWire[1];
+ for (k=0,key=row->keys;k<row->num_keys;k++,key++) {
+ xkbOverlayKeyWireDesc * keyWire;
+ keyWire= (xkbOverlayKeyWireDesc *)wire;
+ memcpy(keyWire->over,key->over.name,XkbKeyNameLength);
+ memcpy(keyWire->under,key->under.name,XkbKeyNameLength);
+ wire= (char *)&keyWire[1];
+ }
+ }
+ return wire;
+}
+
+static int
+XkbSizeGeomSections(XkbGeometryPtr geom)
+{
+register int i,size;
+XkbSectionPtr section;
+
+ for (i=size=0,section=geom->sections;i<geom->num_sections;i++,section++) {
+ size+= SIZEOF(xkbSectionWireDesc);
+ if (section->rows) {
+ int r;
+ XkbRowPtr row;
+ for (r=0,row=section->rows;r<section->num_rows;row++,r++) {
+ size+= SIZEOF(xkbRowWireDesc);
+ size+= row->num_keys*SIZEOF(xkbKeyWireDesc);
+ }
+ }
+ if (section->doodads)
+ size+= XkbSizeGeomDoodads(section->num_doodads,section->doodads);
+ if (section->overlays) {
+ int o;
+ XkbOverlayPtr ol;
+ for (o=0,ol=section->overlays;o<section->num_overlays;o++,ol++) {
+ int r;
+ XkbOverlayRowPtr row;
+ size+= SIZEOF(xkbOverlayWireDesc);
+ for (r=0,row=ol->rows;r<ol->num_rows;r++,row++) {
+ size+= SIZEOF(xkbOverlayRowWireDesc);
+ size+= row->num_keys*SIZEOF(xkbOverlayKeyWireDesc);
+ }
+ }
+ }
+ }
+ return size;
+}
+
+static char *
+XkbWriteGeomSections(char *wire,XkbGeometryPtr geom,Bool swap)
+{
+register int i;
+XkbSectionPtr section;
+xkbSectionWireDesc * sectionWire;
+
+ for (i=0,section=geom->sections;i<geom->num_sections;i++,section++) {
+ sectionWire= (xkbSectionWireDesc *)wire;
+ sectionWire->name= section->name;
+ sectionWire->top= section->top;
+ sectionWire->left= section->left;
+ sectionWire->width= section->width;
+ sectionWire->height= section->height;
+ sectionWire->angle= section->angle;
+ sectionWire->priority= section->priority;
+ sectionWire->nRows= section->num_rows;
+ sectionWire->nDoodads= section->num_doodads;
+ sectionWire->nOverlays= section->num_overlays;
+ sectionWire->pad= 0;
+ if (swap) {
+ register int n;
+ swapl(&sectionWire->name,n);
+ swaps(&sectionWire->top,n);
+ swaps(&sectionWire->left,n);
+ swaps(&sectionWire->width,n);
+ swaps(&sectionWire->height,n);
+ swaps(&sectionWire->angle,n);
+ }
+ wire= (char *)&sectionWire[1];
+ if (section->rows) {
+ int r;
+ XkbRowPtr row;
+ xkbRowWireDesc * rowWire;
+ for (r=0,row=section->rows;r<section->num_rows;r++,row++) {
+ rowWire= (xkbRowWireDesc *)wire;
+ rowWire->top= row->top;
+ rowWire->left= row->left;
+ rowWire->nKeys= row->num_keys;
+ rowWire->vertical= row->vertical;
+ rowWire->pad= 0;
+ if (swap) {
+ register int n;
+ swaps(&rowWire->top,n);
+ swaps(&rowWire->left,n);
+ }
+ wire= (char *)&rowWire[1];
+ if (row->keys) {
+ int k;
+ XkbKeyPtr key;
+ xkbKeyWireDesc * keyWire;
+ keyWire= (xkbKeyWireDesc *)wire;
+ for (k=0,key=row->keys;k<row->num_keys;k++,key++) {
+ memcpy(keyWire[k].name,key->name.name,XkbKeyNameLength);
+ keyWire[k].gap= key->gap;
+ keyWire[k].shapeNdx= key->shape_ndx;
+ keyWire[k].colorNdx= key->color_ndx;
+ if (swap) {
+ register int n;
+ swaps(&keyWire[k].gap,n);
+ }
+ }
+ wire= (char *)&keyWire[row->num_keys];
+ }
+ }
+ }
+ if (section->doodads) {
+ wire= XkbWriteGeomDoodads(wire,
+ section->num_doodads,section->doodads,
+ swap);
+ }
+ if (section->overlays) {
+ register int o;
+ for (o=0;o<section->num_overlays;o++) {
+ wire= XkbWriteGeomOverlay(wire,&section->overlays[o],swap);
+ }
+ }
+ }
+ return wire;
+}
+
+static Status
+XkbComputeGetGeometryReplySize( XkbGeometryPtr geom,
+ xkbGetGeometryReply * rep,
+ Atom name)
+{
+int len;
+
+ if (geom!=NULL) {
+ len= XkbSizeCountedString(geom->label_font);
+ len+= XkbSizeGeomProperties(geom);
+ len+= XkbSizeGeomColors(geom);
+ len+= XkbSizeGeomShapes(geom);
+ len+= XkbSizeGeomSections(geom);
+ len+= XkbSizeGeomDoodads(geom->num_doodads,geom->doodads);
+ len+= XkbSizeGeomKeyAliases(geom);
+ rep->length= len/4;
+ rep->found= TRUE;
+ rep->name= geom->name;
+ rep->widthMM= geom->width_mm;
+ rep->heightMM= geom->height_mm;
+ rep->nProperties= geom->num_properties;
+ rep->nColors= geom->num_colors;
+ rep->nShapes= geom->num_shapes;
+ rep->nSections= geom->num_sections;
+ rep->nDoodads= geom->num_doodads;
+ rep->nKeyAliases= geom->num_key_aliases;
+ rep->baseColorNdx= XkbGeomColorIndex(geom,geom->base_color);
+ rep->labelColorNdx= XkbGeomColorIndex(geom,geom->label_color);
+ }
+ else {
+ rep->length= 0;
+ rep->found= FALSE;
+ rep->name= name;
+ rep->widthMM= rep->heightMM= 0;
+ rep->nProperties= rep->nColors= rep->nShapes= 0;
+ rep->nSections= rep->nDoodads= 0;
+ rep->nKeyAliases= 0;
+ rep->labelColorNdx= rep->baseColorNdx= 0;
+ }
+ return Success;
+}
+
+static int
+XkbSendGeometry( ClientPtr client,
+ XkbGeometryPtr geom,
+ xkbGetGeometryReply * rep,
+ Bool freeGeom)
+{
+ char *desc,*start;
+ int len;
+
+ if (geom!=NULL) {
+ len= rep->length*4;
+ start= desc= malloc(len);
+ if (!start)
+ return BadAlloc;
+ desc= XkbWriteCountedString(desc,geom->label_font,client->swapped);
+ if ( rep->nProperties>0 )
+ desc = XkbWriteGeomProperties(desc,geom,client->swapped);
+ if ( rep->nColors>0 )
+ desc = XkbWriteGeomColors(desc,geom,client->swapped);
+ if ( rep->nShapes>0 )
+ desc = XkbWriteGeomShapes(desc,geom,client->swapped);
+ if ( rep->nSections>0 )
+ desc = XkbWriteGeomSections(desc,geom,client->swapped);
+ if ( rep->nDoodads>0 )
+ desc = XkbWriteGeomDoodads(desc,geom->num_doodads,geom->doodads,
+ client->swapped);
+ if ( rep->nKeyAliases>0 )
+ desc = XkbWriteGeomKeyAliases(desc,geom,client->swapped);
+ if ((desc-start)!=(len)) {
+ ErrorF("[xkb] BOGUS LENGTH in XkbSendGeometry, expected %d, got %ld\n",
+ len, (unsigned long)(desc-start));
+ }
+ }
+ else {
+ len= 0;
+ start= NULL;
+ }
+ if (client->swapped) {
+ register int n;
+ swaps(&rep->sequenceNumber,n);
+ swapl(&rep->length,n);
+ swapl(&rep->name,n);
+ swaps(&rep->widthMM,n);
+ swaps(&rep->heightMM,n);
+ swaps(&rep->nProperties,n);
+ swaps(&rep->nColors,n);
+ swaps(&rep->nShapes,n);
+ swaps(&rep->nSections,n);
+ swaps(&rep->nDoodads,n);
+ swaps(&rep->nKeyAliases,n);
+ }
+ WriteToClient(client, SIZEOF(xkbGetGeometryReply), (char *)rep);
+ if (len>0)
+ WriteToClient(client, len, start);
+ if (start!=NULL)
+ free((char *)start);
+ if (freeGeom)
+ XkbFreeGeometry(geom,XkbGeomAllMask,TRUE);
+ return Success;
+}
+
+int
+ProcXkbGetGeometry(ClientPtr client)
+{
+ DeviceIntPtr dev;
+ xkbGetGeometryReply rep;
+ XkbGeometryPtr geom;
+ Bool shouldFree;
+ Status status;
+
+ REQUEST(xkbGetGeometryReq);
+ REQUEST_SIZE_MATCH(xkbGetGeometryReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
+ CHK_ATOM_OR_NONE(stuff->name);
+
+ geom= XkbLookupNamedGeometry(dev,stuff->name,&shouldFree);
+ rep.type= X_Reply;
+ rep.deviceID= dev->id;
+ rep.sequenceNumber= client->sequence;
+ rep.length= 0;
+ status= XkbComputeGetGeometryReplySize(geom,&rep,stuff->name);
+ if (status!=Success)
+ return status;
+ else return XkbSendGeometry(client,geom,&rep,shouldFree);
+}
+
+/***====================================================================***/
+
+static char *
+_GetCountedString(char **wire_inout,Bool swap)
+{
+char * wire,*str;
+CARD16 len,*plen;
+
+ wire= *wire_inout;
+ plen= (CARD16 *)wire;
+ if (swap) {
+ register int n;
+ swaps(plen,n);
+ }
+ len= *plen;
+ str= malloc(len+1);
+ if (str) {
+ memcpy(str,&wire[2],len);
+ str[len]= '\0';
+ }
+ wire+= XkbPaddedSize(len+2);
+ *wire_inout= wire;
+ return str;
+}
+
+static Status
+_CheckSetDoodad( char ** wire_inout,
+ XkbGeometryPtr geom,
+ XkbSectionPtr section,
+ ClientPtr client)
+{
+char * wire;
+xkbDoodadWireDesc * dWire;
+XkbDoodadPtr doodad;
+
+ dWire= (xkbDoodadWireDesc *)(*wire_inout);
+ wire= (char *)&dWire[1];
+ if (client->swapped) {
+ register int n;
+ swapl(&dWire->any.name,n);
+ swaps(&dWire->any.top,n);
+ swaps(&dWire->any.left,n);
+ swaps(&dWire->any.angle,n);
+ }
+ CHK_ATOM_ONLY(dWire->any.name);
+ doodad= XkbAddGeomDoodad(geom,section,dWire->any.name);
+ if (!doodad)
+ return BadAlloc;
+ doodad->any.type= dWire->any.type;
+ doodad->any.priority= dWire->any.priority;
+ doodad->any.top= dWire->any.top;
+ doodad->any.left= dWire->any.left;
+ doodad->any.angle= dWire->any.angle;
+ switch (doodad->any.type) {
+ case XkbOutlineDoodad:
+ case XkbSolidDoodad:
+ if (dWire->shape.colorNdx>=geom->num_colors) {
+ client->errorValue= _XkbErrCode3(0x40,geom->num_colors,
+ dWire->shape.colorNdx);
+ return BadMatch;
+ }
+ if (dWire->shape.shapeNdx>=geom->num_shapes) {
+ client->errorValue= _XkbErrCode3(0x41,geom->num_shapes,
+ dWire->shape.shapeNdx);
+ return BadMatch;
+ }
+ doodad->shape.color_ndx= dWire->shape.colorNdx;
+ doodad->shape.shape_ndx= dWire->shape.shapeNdx;
+ break;
+ case XkbTextDoodad:
+ if (dWire->text.colorNdx>=geom->num_colors) {
+ client->errorValue= _XkbErrCode3(0x42,geom->num_colors,
+ dWire->text.colorNdx);
+ return BadMatch;
+ }
+ if (client->swapped) {
+ register int n;
+ swaps(&dWire->text.width,n);
+ swaps(&dWire->text.height,n);
+ }
+ doodad->text.width= dWire->text.width;
+ doodad->text.height= dWire->text.height;
+ doodad->text.color_ndx= dWire->text.colorNdx;
+ doodad->text.text= _GetCountedString(&wire,client->swapped);
+ doodad->text.font= _GetCountedString(&wire,client->swapped);
+ break;
+ case XkbIndicatorDoodad:
+ if (dWire->indicator.onColorNdx>=geom->num_colors) {
+ client->errorValue= _XkbErrCode3(0x43,geom->num_colors,
+ dWire->indicator.onColorNdx);
+ return BadMatch;
+ }
+ if (dWire->indicator.offColorNdx>=geom->num_colors) {
+ client->errorValue= _XkbErrCode3(0x44,geom->num_colors,
+ dWire->indicator.offColorNdx);
+ return BadMatch;
+ }
+ if (dWire->indicator.shapeNdx>=geom->num_shapes) {
+ client->errorValue= _XkbErrCode3(0x45,geom->num_shapes,
+ dWire->indicator.shapeNdx);
+ return BadMatch;
+ }
+ doodad->indicator.shape_ndx= dWire->indicator.shapeNdx;
+ doodad->indicator.on_color_ndx= dWire->indicator.onColorNdx;
+ doodad->indicator.off_color_ndx= dWire->indicator.offColorNdx;
+ break;
+ case XkbLogoDoodad:
+ if (dWire->logo.colorNdx>=geom->num_colors) {
+ client->errorValue= _XkbErrCode3(0x46,geom->num_colors,
+ dWire->logo.colorNdx);
+ return BadMatch;
+ }
+ if (dWire->logo.shapeNdx>=geom->num_shapes) {
+ client->errorValue= _XkbErrCode3(0x47,geom->num_shapes,
+ dWire->logo.shapeNdx);
+ return BadMatch;
+ }
+ doodad->logo.color_ndx= dWire->logo.colorNdx;
+ doodad->logo.shape_ndx= dWire->logo.shapeNdx;
+ doodad->logo.logo_name= _GetCountedString(&wire,client->swapped);
+ break;
+ default:
+ client->errorValue= _XkbErrCode2(0x4F,dWire->any.type);
+ return BadValue;
+ }
+ *wire_inout= wire;
+ return Success;
+}
+
+static Status
+_CheckSetOverlay( char ** wire_inout,
+ XkbGeometryPtr geom,
+ XkbSectionPtr section,
+ ClientPtr client)
+{
+register int r;
+char * wire;
+XkbOverlayPtr ol;
+xkbOverlayWireDesc * olWire;
+xkbOverlayRowWireDesc * rWire;
+
+ wire= *wire_inout;
+ olWire= (xkbOverlayWireDesc *)wire;
+ if (client->swapped) {
+ register int n;
+ swapl(&olWire->name,n);
+ }
+ CHK_ATOM_ONLY(olWire->name);
+ ol= XkbAddGeomOverlay(section,olWire->name,olWire->nRows);
+ rWire= (xkbOverlayRowWireDesc *)&olWire[1];
+ for (r=0;r<olWire->nRows;r++) {
+ register int k;
+ xkbOverlayKeyWireDesc * kWire;
+ XkbOverlayRowPtr row;
+
+ if (rWire->rowUnder>section->num_rows) {
+ client->errorValue= _XkbErrCode4(0x20,r,section->num_rows,
+ rWire->rowUnder);
+ return BadMatch;
+ }
+ row= XkbAddGeomOverlayRow(ol,rWire->rowUnder,rWire->nKeys);
+ kWire= (xkbOverlayKeyWireDesc *)&rWire[1];
+ for (k=0;k<rWire->nKeys;k++,kWire++) {
+ if (XkbAddGeomOverlayKey(ol,row,
+ (char *)kWire->over,(char *)kWire->under)==NULL) {
+ client->errorValue= _XkbErrCode3(0x21,r,k);
+ return BadMatch;
+ }
+ }
+ rWire= (xkbOverlayRowWireDesc *)kWire;
+ }
+ olWire= (xkbOverlayWireDesc *)rWire;
+ wire= (char *)olWire;
+ *wire_inout= wire;
+ return Success;
+}
+
+static Status
+_CheckSetSections( XkbGeometryPtr geom,
+ xkbSetGeometryReq * req,
+ char ** wire_inout,
+ ClientPtr client)
+{
+Status status;
+register int s;
+char * wire;
+xkbSectionWireDesc * sWire;
+XkbSectionPtr section;
+
+ wire= *wire_inout;
+ if (req->nSections<1)
+ return Success;
+ sWire= (xkbSectionWireDesc *)wire;
+ for (s=0;s<req->nSections;s++) {
+ register int r;
+ xkbRowWireDesc * rWire;
+ if (client->swapped) {
+ register int n;
+ swapl(&sWire->name,n);
+ swaps(&sWire->top,n);
+ swaps(&sWire->left,n);
+ swaps(&sWire->width,n);
+ swaps(&sWire->height,n);
+ swaps(&sWire->angle,n);
+ }
+ CHK_ATOM_ONLY(sWire->name);
+ section= XkbAddGeomSection(geom,sWire->name,sWire->nRows,
+ sWire->nDoodads,sWire->nOverlays);
+ if (!section)
+ return BadAlloc;
+ section->priority= sWire->priority;
+ section->top= sWire->top;
+ section->left= sWire->left;
+ section->width= sWire->width;
+ section->height= sWire->height;
+ section->angle= sWire->angle;
+ rWire= (xkbRowWireDesc *)&sWire[1];
+ for (r=0;r<sWire->nRows;r++) {
+ register int k;
+ XkbRowPtr row;
+ xkbKeyWireDesc * kWire;
+ if (client->swapped) {
+ register int n;
+ swaps(&rWire->top,n);
+ swaps(&rWire->left,n);
+ }
+ row= XkbAddGeomRow(section,rWire->nKeys);
+ if (!row)
+ return BadAlloc;
+ row->top= rWire->top;
+ row->left= rWire->left;
+ row->vertical= rWire->vertical;
+ kWire= (xkbKeyWireDesc *)&rWire[1];
+ for (k=0;k<rWire->nKeys;k++) {
+ XkbKeyPtr key;
+ key= XkbAddGeomKey(row);
+ if (!key)
+ return BadAlloc;
+ memcpy(key->name.name,kWire[k].name,XkbKeyNameLength);
+ key->gap= kWire[k].gap;
+ key->shape_ndx= kWire[k].shapeNdx;
+ key->color_ndx= kWire[k].colorNdx;
+ if (key->shape_ndx>=geom->num_shapes) {
+ client->errorValue= _XkbErrCode3(0x10,key->shape_ndx,
+ geom->num_shapes);
+ return BadMatch;
+ }
+ if (key->color_ndx>=geom->num_colors) {
+ client->errorValue= _XkbErrCode3(0x11,key->color_ndx,
+ geom->num_colors);
+ return BadMatch;
+ }
+ }
+ rWire= (xkbRowWireDesc *)&kWire[rWire->nKeys];
+ }
+ wire= (char *)rWire;
+ if (sWire->nDoodads>0) {
+ register int d;
+ for (d=0;d<sWire->nDoodads;d++) {
+ status=_CheckSetDoodad(&wire,geom,section,client);
+ if (status!=Success)
+ return status;
+ }
+ }
+ if (sWire->nOverlays>0) {
+ register int o;
+ for (o=0;o<sWire->nOverlays;o++) {
+ status= _CheckSetOverlay(&wire,geom,section,client);
+ if (status!=Success)
+ return status;
+ }
+ }
+ sWire= (xkbSectionWireDesc *)wire;
+ }
+ wire= (char *)sWire;
+ *wire_inout= wire;
+ return Success;
+}
+
+static Status
+_CheckSetShapes( XkbGeometryPtr geom,
+ xkbSetGeometryReq * req,
+ char ** wire_inout,
+ ClientPtr client)
+{
+register int i;
+char * wire;
+
+ wire= *wire_inout;
+ if (req->nShapes<1) {
+ client->errorValue= _XkbErrCode2(0x06,req->nShapes);
+ return BadValue;
+ }
+ else {
+ xkbShapeWireDesc * shapeWire;
+ XkbShapePtr shape;
+ register int o;
+ shapeWire= (xkbShapeWireDesc *)wire;
+ for (i=0;i<req->nShapes;i++) {
+ xkbOutlineWireDesc * olWire;
+ XkbOutlinePtr ol;
+ shape= XkbAddGeomShape(geom,shapeWire->name,shapeWire->nOutlines);
+ if (!shape)
+ return BadAlloc;
+ olWire= (xkbOutlineWireDesc *)(&shapeWire[1]);
+ for (o=0;o<shapeWire->nOutlines;o++) {
+ register int p;
+ XkbPointPtr pt;
+ xkbPointWireDesc * ptWire;
+
+ ol= XkbAddGeomOutline(shape,olWire->nPoints);
+ if (!ol)
+ return BadAlloc;
+ ol->corner_radius= olWire->cornerRadius;
+ ptWire= (xkbPointWireDesc *)&olWire[1];
+ for (p=0,pt=ol->points;p<olWire->nPoints;p++,pt++) {
+ pt->x= ptWire[p].x;
+ pt->y= ptWire[p].y;
+ if (client->swapped) {
+ register int n;
+ swaps(&pt->x,n);
+ swaps(&pt->y,n);
+ }
+ }
+ ol->num_points= olWire->nPoints;
+ olWire= (xkbOutlineWireDesc *)(&ptWire[olWire->nPoints]);
+ }
+ if (shapeWire->primaryNdx!=XkbNoShape)
+ shape->primary= &shape->outlines[shapeWire->primaryNdx];
+ if (shapeWire->approxNdx!=XkbNoShape)
+ shape->approx= &shape->outlines[shapeWire->approxNdx];
+ shapeWire= (xkbShapeWireDesc *)olWire;
+ }
+ wire= (char *)shapeWire;
+ }
+ if (geom->num_shapes!=req->nShapes) {
+ client->errorValue= _XkbErrCode3(0x07,geom->num_shapes,req->nShapes);
+ return BadMatch;
+ }
+
+ *wire_inout= wire;
+ return Success;
+}
+
+static Status
+_CheckSetGeom( XkbGeometryPtr geom,
+ xkbSetGeometryReq * req,
+ ClientPtr client)
+{
+register int i;
+Status status;
+char * wire;
+
+ wire= (char *)&req[1];
+ geom->label_font= _GetCountedString(&wire,client->swapped);
+
+ for (i=0;i<req->nProperties;i++) {
+ char *name,*val;
+ name= _GetCountedString(&wire,client->swapped);
+ if (!name)
+ return BadAlloc;
+ val= _GetCountedString(&wire,client->swapped);
+ if (!val) {
+ free(name);
+ return BadAlloc;
+ }
+ if (XkbAddGeomProperty(geom,name,val)==NULL) {
+ free(name);
+ free(val);
+ return BadAlloc;
+ }
+ free(name);
+ free(val);
+ }
+
+ if (req->nColors<2) {
+ client->errorValue= _XkbErrCode3(0x01,2,req->nColors);
+ return BadValue;
+ }
+ if (req->baseColorNdx>req->nColors) {
+ client->errorValue=_XkbErrCode3(0x03,req->nColors,req->baseColorNdx);
+ return BadMatch;
+ }
+ if (req->labelColorNdx>req->nColors) {
+ client->errorValue= _XkbErrCode3(0x03,req->nColors,req->labelColorNdx);
+ return BadMatch;
+ }
+ if (req->labelColorNdx==req->baseColorNdx) {
+ client->errorValue= _XkbErrCode3(0x04,req->baseColorNdx,
+ req->labelColorNdx);
+ return BadMatch;
+ }
+
+ for (i=0;i<req->nColors;i++) {
+ char *name;
+ name= _GetCountedString(&wire,client->swapped);
+ if (!name)
+ return BadAlloc;
+ if (!XkbAddGeomColor(geom,name,geom->num_colors)) {
+ free(name);
+ return BadAlloc;
+ }
+ free(name);
+ }
+ if (req->nColors!=geom->num_colors) {
+ client->errorValue= _XkbErrCode3(0x05,req->nColors,geom->num_colors);
+ return BadMatch;
+ }
+ geom->label_color= &geom->colors[req->labelColorNdx];
+ geom->base_color= &geom->colors[req->baseColorNdx];
+
+ if ((status=_CheckSetShapes(geom,req,&wire,client))!=Success)
+ return status;
+
+ if ((status=_CheckSetSections(geom,req,&wire,client))!=Success)
+ return status;
+
+ for (i=0;i<req->nDoodads;i++) {
+ status=_CheckSetDoodad(&wire,geom,NULL,client);
+ if (status!=Success)
+ return status;
+ }
+
+ for (i=0;i<req->nKeyAliases;i++) {
+ if (XkbAddGeomKeyAlias(geom,&wire[XkbKeyNameLength],wire)==NULL)
+ return BadAlloc;
+ wire+= 2*XkbKeyNameLength;
+ }
+ return Success;
+}
+
+static int
+_XkbSetGeometry(ClientPtr client, DeviceIntPtr dev, xkbSetGeometryReq *stuff)
+{
+ XkbDescPtr xkb;
+ Bool new_name;
+ xkbNewKeyboardNotify nkn;
+ XkbGeometryPtr geom,old;
+ XkbGeometrySizesRec sizes;
+ Status status;
+
+ xkb= dev->key->xkbInfo->desc;
+ old= xkb->geom;
+ xkb->geom= NULL;
+
+ sizes.which= XkbGeomAllMask;
+ sizes.num_properties= stuff->nProperties;
+ sizes.num_colors= stuff->nColors;
+ sizes.num_shapes= stuff->nShapes;
+ sizes.num_sections= stuff->nSections;
+ sizes.num_doodads= stuff->nDoodads;
+ sizes.num_key_aliases= stuff->nKeyAliases;
+ if ((status= XkbAllocGeometry(xkb,&sizes))!=Success) {
+ xkb->geom= old;
+ return status;
+ }
+ geom= xkb->geom;
+ geom->name= stuff->name;
+ geom->width_mm= stuff->widthMM;
+ geom->height_mm= stuff->heightMM;
+ if ((status= _CheckSetGeom(geom,stuff,client))!=Success) {
+ XkbFreeGeometry(geom,XkbGeomAllMask,TRUE);
+ xkb->geom= old;
+ return status;
+ }
+ new_name= (xkb->names->geometry!=geom->name);
+ xkb->names->geometry= geom->name;
+ if (old)
+ XkbFreeGeometry(old,XkbGeomAllMask,TRUE);
+ if (new_name) {
+ xkbNamesNotify nn;
+ memset(&nn, 0, sizeof(xkbNamesNotify));
+ nn.changed= XkbGeometryNameMask;
+ XkbSendNamesNotify(dev,&nn);
+ }
+ nkn.deviceID= nkn.oldDeviceID= dev->id;
+ nkn.minKeyCode= nkn.oldMinKeyCode= xkb->min_key_code;
+ nkn.maxKeyCode= nkn.oldMaxKeyCode= xkb->max_key_code;
+ nkn.requestMajor= XkbReqCode;
+ nkn.requestMinor= X_kbSetGeometry;
+ nkn.changed= XkbNKN_GeometryMask;
+ XkbSendNewKeyboardNotify(dev,&nkn);
+ return Success;
+}
+
+int
+ProcXkbSetGeometry(ClientPtr client)
+{
+ DeviceIntPtr dev;
+ int rc;
+
+ REQUEST(xkbSetGeometryReq);
+ REQUEST_AT_LEAST_SIZE(xkbSetGeometryReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixManageAccess);
+ CHK_ATOM_OR_NONE(stuff->name);
+
+ rc = _XkbSetGeometry(client, dev, stuff);
+ if (rc != Success)
+ return rc;
+
+ if (stuff->deviceSpec == XkbUseCoreKbd)
+ {
+ DeviceIntPtr other;
+ for (other = inputInfo.devices; other; other = other->next)
+ {
+ if ((other != dev) && other->key && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev)
+ {
+ rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
+ if (rc == Success)
+ _XkbSetGeometry(client, other, stuff);
+ }
+ }
+ }
+
+ return Success;
+}
+
+/***====================================================================***/
+
+int
+ProcXkbPerClientFlags(ClientPtr client)
+{
+ DeviceIntPtr dev;
+ xkbPerClientFlagsReply rep;
+ XkbInterestPtr interest;
+ Mask access_mode = DixGetAttrAccess | DixSetAttrAccess;
+
+ REQUEST(xkbPerClientFlagsReq);
+ REQUEST_SIZE_MATCH(xkbPerClientFlagsReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, access_mode);
+ CHK_MASK_LEGAL(0x01,stuff->change,XkbPCF_AllFlagsMask);
+ CHK_MASK_MATCH(0x02,stuff->change,stuff->value);
+
+ interest = XkbFindClientResource((DevicePtr)dev,client);
+ memset(&rep, 0, sizeof(xkbPerClientFlagsReply));
+ rep.type= X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ if (stuff->change) {
+ client->xkbClientFlags&= ~stuff->change;
+ client->xkbClientFlags|= stuff->value;
+ }
+ if (stuff->change&XkbPCF_AutoResetControlsMask) {
+ Bool want;
+ want= stuff->value&XkbPCF_AutoResetControlsMask;
+ if (interest && !want) {
+ interest->autoCtrls= interest->autoCtrlValues= 0;
+ }
+ else if (want && (!interest)) {
+ XID id = FakeClientID(client->index);
+ if (!AddResource(id,RT_XKBCLIENT,dev))
+ return BadAlloc;
+ interest= XkbAddClientResource((DevicePtr)dev,client,id);
+ if (!interest)
+ return BadAlloc;
+ }
+ if (interest && want ) {
+ register unsigned affect;
+ affect= stuff->ctrlsToChange;
+
+ CHK_MASK_LEGAL(0x03,affect,XkbAllBooleanCtrlsMask);
+ CHK_MASK_MATCH(0x04,affect,stuff->autoCtrls);
+ CHK_MASK_MATCH(0x05,stuff->autoCtrls,stuff->autoCtrlValues);
+
+ interest->autoCtrls&= ~affect;
+ interest->autoCtrlValues&= ~affect;
+ interest->autoCtrls|= stuff->autoCtrls&affect;
+ interest->autoCtrlValues|= stuff->autoCtrlValues&affect;
+ }
+ }
+ rep.supported = XkbPCF_AllFlagsMask;
+ rep.value= client->xkbClientFlags&XkbPCF_AllFlagsMask;
+ if (interest) {
+ rep.autoCtrls= interest->autoCtrls;
+ rep.autoCtrlValues= interest->autoCtrlValues;
+ }
+ else {
+ rep.autoCtrls= rep.autoCtrlValues= 0;
+ }
+ if ( client->swapped ) {
+ register int n;
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.supported,n);
+ swapl(&rep.value,n);
+ swapl(&rep.autoCtrls,n);
+ swapl(&rep.autoCtrlValues,n);
+ }
+ WriteToClient(client,SIZEOF(xkbPerClientFlagsReply), (char *)&rep);
+ return Success;
+}
+
+/***====================================================================***/
+
+/* all latin-1 alphanumerics, plus parens, minus, underscore, slash */
+/* and wildcards */
+static unsigned char componentSpecLegal[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0xff, 0x87,
+ 0xfe, 0xff, 0xff, 0x87, 0xfe, 0xff, 0xff, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff
+};
+
+/* same as above but accepts percent, plus and bar too */
+static unsigned char componentExprLegal[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x20, 0xaf, 0xff, 0x87,
+ 0xfe, 0xff, 0xff, 0x87, 0xfe, 0xff, 0xff, 0x17,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff
+};
+
+static char *
+GetComponentSpec(unsigned char **pWire,Bool allowExpr,int *errRtrn)
+{
+int len;
+register int i;
+unsigned char *wire,*str,*tmp,*legal;
+
+ if (allowExpr) legal= &componentExprLegal[0];
+ else legal= &componentSpecLegal[0];
+
+ wire= *pWire;
+ len= (*(unsigned char *)wire++);
+ if (len>0) {
+ str= calloc(1, len+1);
+ if (str) {
+ tmp= str;
+ for (i=0;i<len;i++) {
+ if (legal[(*wire)/8]&(1<<((*wire)%8)))
+ *tmp++= *wire++;
+ else wire++;
+ }
+ if (tmp!=str)
+ *tmp++= '\0';
+ else {
+ free(str);
+ str= NULL;
+ }
+ }
+ else {
+ *errRtrn= BadAlloc;
+ }
+ }
+ else {
+ str= NULL;
+ }
+ *pWire= wire;
+ return (char *)str;
+}
+
+/***====================================================================***/
+
+int
+ProcXkbListComponents(ClientPtr client)
+{
+ DeviceIntPtr dev;
+ xkbListComponentsReply rep;
+ unsigned len;
+ int status;
+ unsigned char * str;
+ XkbSrvListInfoRec list;
+
+ REQUEST(xkbListComponentsReq);
+ REQUEST_AT_LEAST_SIZE(xkbListComponentsReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
+
+ status= Success;
+ str= (unsigned char *)&stuff[1];
+ memset(&list, 0, sizeof(XkbSrvListInfoRec));
+ list.maxRtrn= stuff->maxNames;
+ list.pattern[_XkbListKeycodes]= GetComponentSpec(&str,FALSE,&status);
+ list.pattern[_XkbListTypes]= GetComponentSpec(&str,FALSE,&status);
+ list.pattern[_XkbListCompat]= GetComponentSpec(&str,FALSE,&status);
+ list.pattern[_XkbListSymbols]= GetComponentSpec(&str,FALSE,&status);
+ list.pattern[_XkbListGeometry]= GetComponentSpec(&str,FALSE,&status);
+ if (status!=Success)
+ return status;
+ len= str-((unsigned char *)stuff);
+ if ((XkbPaddedSize(len)/4)!=stuff->length)
+ return BadLength;
+ if ((status=XkbDDXList(dev,&list,client))!=Success) {
+ free(list.pool);
+ list.pool = NULL;
+ return status;
+ }
+ memset(&rep, 0, sizeof(xkbListComponentsReply));
+ rep.type= X_Reply;
+ rep.deviceID = dev->id;
+ rep.sequenceNumber = client->sequence;
+ rep.length = XkbPaddedSize(list.nPool)/4;
+ rep.nKeymaps = 0;
+ rep.nKeycodes = list.nFound[_XkbListKeycodes];
+ rep.nTypes = list.nFound[_XkbListTypes];
+ rep.nCompatMaps = list.nFound[_XkbListCompat];
+ rep.nSymbols = list.nFound[_XkbListSymbols];
+ rep.nGeometries = list.nFound[_XkbListGeometry];
+ rep.extra= 0;
+ if (list.nTotal>list.maxRtrn)
+ rep.extra = (list.nTotal-list.maxRtrn);
+ if (client->swapped) {
+ register int n;
+ swaps(&rep.sequenceNumber,n);
+ swapl(&rep.length,n);
+ swaps(&rep.nKeymaps,n);
+ swaps(&rep.nKeycodes,n);
+ swaps(&rep.nTypes,n);
+ swaps(&rep.nCompatMaps,n);
+ swaps(&rep.nSymbols,n);
+ swaps(&rep.nGeometries,n);
+ swaps(&rep.extra,n);
+ }
+ WriteToClient(client,SIZEOF(xkbListComponentsReply),(char *)&rep);
+ if (list.nPool && list.pool) {
+ WriteToClient(client,XkbPaddedSize(list.nPool), (char *)list.pool);
+ free(list.pool);
+ list.pool= NULL;
+ }
+ return Success;
+}
+
+/***====================================================================***/
+
+int
+ProcXkbGetKbdByName(ClientPtr client)
+{
+ DeviceIntPtr dev;
+ DeviceIntPtr tmpd;
+ xkbGetKbdByNameReply rep = {0};
+ xkbGetMapReply mrep = {0};
+ xkbGetCompatMapReply crep = {0};
+ xkbGetIndicatorMapReply irep = {0};
+ xkbGetNamesReply nrep = {0};
+ xkbGetGeometryReply grep = {0};
+ XkbComponentNamesRec names = {0};
+ XkbDescPtr xkb, new;
+ unsigned char * str;
+ char mapFile[PATH_MAX];
+ unsigned len;
+ unsigned fwant,fneed,reported;
+ int status;
+ Bool geom_changed;
+ XkbSrvLedInfoPtr old_sli;
+ XkbSrvLedInfoPtr sli;
+ Mask access_mode = DixGetAttrAccess | DixManageAccess;
+
+ REQUEST(xkbGetKbdByNameReq);
+ REQUEST_AT_LEAST_SIZE(xkbGetKbdByNameReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ memset(&mrep,0,sizeof(mrep)); //MH
+
+ CHK_KBD_DEVICE(dev, stuff->deviceSpec, client, access_mode);
+
+ xkb = dev->key->xkbInfo->desc;
+ status= Success;
+ str= (unsigned char *)&stuff[1];
+ if (GetComponentSpec(&str,TRUE,&status)) /* keymap, unsupported */
+ return BadMatch;
+ names.keycodes= GetComponentSpec(&str,TRUE,&status);
+ names.types= GetComponentSpec(&str,TRUE,&status);
+ names.compat= GetComponentSpec(&str,TRUE,&status);
+ names.symbols= GetComponentSpec(&str,TRUE,&status);
+ names.geometry= GetComponentSpec(&str,TRUE,&status);
+ if (status!=Success)
+ return status;
+ len= str-((unsigned char *)stuff);
+ if ((XkbPaddedSize(len)/4)!=stuff->length)
+ return BadLength;
+
+ CHK_MASK_LEGAL(0x01,stuff->want,XkbGBN_AllComponentsMask);
+ CHK_MASK_LEGAL(0x02,stuff->need,XkbGBN_AllComponentsMask);
+
+ if (stuff->load)
+ fwant= XkbGBN_AllComponentsMask;
+ else fwant= stuff->want|stuff->need;
+ if ((!names.compat)&&
+ (fwant&(XkbGBN_CompatMapMask|XkbGBN_IndicatorMapMask))) {
+ names.compat= _XkbDupString("%");
+ }
+ if ((!names.types)&&(fwant&(XkbGBN_TypesMask))) {
+ names.types= _XkbDupString("%");
+ }
+ if ((!names.symbols)&&(fwant&XkbGBN_SymbolsMask)) {
+ names.symbols= _XkbDupString("%");
+ }
+ geom_changed= ((names.geometry!=NULL)&&(strcmp(names.geometry,"%")!=0));
+ if ((!names.geometry)&&(fwant&XkbGBN_GeometryMask)) {
+ names.geometry= _XkbDupString("%");
+ geom_changed= FALSE;
+ }
+
+ memset(mapFile, 0, PATH_MAX);
+ rep.type= X_Reply;
+ rep.deviceID = dev->id;
+ rep.sequenceNumber = client->sequence;
+ rep.length = 0;
+ rep.minKeyCode = xkb->min_key_code;
+ rep.maxKeyCode = xkb->max_key_code;
+ rep.loaded= FALSE;
+ fwant= XkbConvertGetByNameComponents(TRUE,stuff->want)|XkmVirtualModsMask;
+ fneed= XkbConvertGetByNameComponents(TRUE,stuff->need);
+ rep.reported= XkbConvertGetByNameComponents(FALSE,fwant|fneed);
+ if (stuff->load) {
+ fneed|= XkmKeymapRequired;
+ fwant|= XkmKeymapLegal;
+ }
+ if ((fwant|fneed)&XkmSymbolsMask) {
+ fneed|= XkmKeyNamesIndex|XkmTypesIndex;
+ fwant|= XkmIndicatorsIndex;
+ }
+
+ /* We pass dev in here so we can get the old names out if needed. */
+ rep.found = XkbDDXLoadKeymapByNames(dev,&names,fwant,fneed,&new,
+ mapFile,PATH_MAX);
+ rep.newKeyboard= FALSE;
+ rep.pad1= rep.pad2= rep.pad3= rep.pad4= 0;
+
+ stuff->want|= stuff->need;
+ if (new==NULL)
+ rep.reported= 0;
+ else {
+ if (stuff->load)
+ rep.loaded= TRUE;
+ if (stuff->load ||
+ ((rep.reported&XkbGBN_SymbolsMask) && (new->compat))) {
+ XkbChangesRec changes;
+ memset(&changes, 0, sizeof(changes));
+ XkbUpdateDescActions(new,
+ new->min_key_code,XkbNumKeys(new),
+ &changes);
+ }
+
+ if (new->map==NULL)
+ rep.reported&= ~(XkbGBN_SymbolsMask|XkbGBN_TypesMask);
+ else if (rep.reported&(XkbGBN_SymbolsMask|XkbGBN_TypesMask)) {
+ mrep.type= X_Reply;
+ mrep.deviceID = dev->id;
+ mrep.sequenceNumber= client->sequence;
+ mrep.length = ((SIZEOF(xkbGetMapReply)-SIZEOF(xGenericReply))>>2);
+ mrep.minKeyCode = new->min_key_code;
+ mrep.maxKeyCode = new->max_key_code;
+ mrep.present = 0;
+ mrep.totalSyms = mrep.totalActs =
+ mrep.totalKeyBehaviors= mrep.totalKeyExplicit=
+ mrep.totalModMapKeys= mrep.totalVModMapKeys= 0;
+ if (rep.reported&(XkbGBN_TypesMask|XkbGBN_ClientSymbolsMask)) {
+ mrep.present|= XkbKeyTypesMask;
+ mrep.firstType = 0;
+ mrep.nTypes = mrep.totalTypes= new->map->num_types;
+ }
+ else {
+ mrep.firstType = mrep.nTypes= 0;
+ mrep.totalTypes= 0;
+ }
+ if (rep.reported&XkbGBN_ClientSymbolsMask) {
+ mrep.present|= (XkbKeySymsMask|XkbModifierMapMask);
+ mrep.firstKeySym = mrep.firstModMapKey= new->min_key_code;
+ mrep.nKeySyms = mrep.nModMapKeys= XkbNumKeys(new);
+ }
+ else {
+ mrep.firstKeySym= mrep.firstModMapKey= 0;
+ mrep.nKeySyms= mrep.nModMapKeys= 0;
+ }
+ if (rep.reported&XkbGBN_ServerSymbolsMask) {
+ mrep.present|= XkbAllServerInfoMask;
+ mrep.virtualMods= ~0;
+ mrep.firstKeyAct = mrep.firstKeyBehavior =
+ mrep.firstKeyExplicit = new->min_key_code;
+ mrep.nKeyActs = mrep.nKeyBehaviors =
+ mrep.nKeyExplicit = XkbNumKeys(new);
+ mrep.firstVModMapKey= new->min_key_code;
+ mrep.nVModMapKeys= XkbNumKeys(new);
+ }
+ else {
+ mrep.virtualMods= 0;
+ mrep.firstKeyAct= mrep.firstKeyBehavior=
+ mrep.firstKeyExplicit = 0;
+ mrep.nKeyActs= mrep.nKeyBehaviors= mrep.nKeyExplicit= 0;
+ }
+ XkbComputeGetMapReplySize(new,&mrep);
+ rep.length+= SIZEOF(xGenericReply)/4+mrep.length;
+ }
+ if (new->compat==NULL)
+ rep.reported&= ~XkbGBN_CompatMapMask;
+ else if (rep.reported&XkbGBN_CompatMapMask) {
+ crep.type= X_Reply;
+ crep.deviceID= dev->id;
+ crep.sequenceNumber= client->sequence;
+ crep.length= 0;
+ crep.groups= XkbAllGroupsMask;
+ crep.firstSI= 0;
+ crep.nSI= crep.nTotalSI= new->compat->num_si;
+ XkbComputeGetCompatMapReplySize(new->compat,&crep);
+ rep.length+= SIZEOF(xGenericReply)/4+crep.length;
+ }
+ if (new->indicators==NULL)
+ rep.reported&= ~XkbGBN_IndicatorMapMask;
+ else if (rep.reported&XkbGBN_IndicatorMapMask) {
+ irep.type= X_Reply;
+ irep.deviceID= dev->id;
+ irep.sequenceNumber= client->sequence;
+ irep.length= 0;
+ irep.which= XkbAllIndicatorsMask;
+ XkbComputeGetIndicatorMapReplySize(new->indicators,&irep);
+ rep.length+= SIZEOF(xGenericReply)/4+irep.length;
+ }
+ if (new->names==NULL)
+ rep.reported&= ~(XkbGBN_OtherNamesMask|XkbGBN_KeyNamesMask);
+ else if (rep.reported&(XkbGBN_OtherNamesMask|XkbGBN_KeyNamesMask)) {
+ nrep.type= X_Reply;
+ nrep.deviceID= dev->id;
+ nrep.sequenceNumber= client->sequence;
+ nrep.length= 0;
+ nrep.minKeyCode= new->min_key_code;
+ nrep.maxKeyCode= new->max_key_code;
+ if (rep.reported&XkbGBN_OtherNamesMask) {
+ nrep.which= XkbAllNamesMask;
+ if (new->map!=NULL)
+ nrep.nTypes= new->map->num_types;
+ else nrep.nTypes= 0;
+ nrep.nKTLevels= 0;
+ nrep.groupNames= XkbAllGroupsMask;
+ nrep.virtualMods= XkbAllVirtualModsMask;
+ nrep.indicators= XkbAllIndicatorsMask;
+ nrep.nRadioGroups= new->names->num_rg;
+ }
+ else {
+ nrep.which= 0;
+ nrep.nTypes= 0;
+ nrep.nKTLevels= 0;
+ nrep.groupNames= 0;
+ nrep.virtualMods= 0;
+ nrep.indicators= 0;
+ nrep.nRadioGroups= 0;
+ }
+ if (rep.reported&XkbGBN_KeyNamesMask) {
+ nrep.which|= XkbKeyNamesMask;
+ nrep.firstKey= new->min_key_code;
+ nrep.nKeys= XkbNumKeys(new);
+ nrep.nKeyAliases= new->names->num_key_aliases;
+ if (nrep.nKeyAliases)
+ nrep.which|= XkbKeyAliasesMask;
+ }
+ else {
+ nrep.which&= ~(XkbKeyNamesMask|XkbKeyAliasesMask);
+ nrep.firstKey= nrep.nKeys= 0;
+ nrep.nKeyAliases= 0;
+ }
+ XkbComputeGetNamesReplySize(new,&nrep);
+ rep.length+= SIZEOF(xGenericReply)/4+nrep.length;
+ }
+ if (new->geom==NULL)
+ rep.reported&= ~XkbGBN_GeometryMask;
+ else if (rep.reported&XkbGBN_GeometryMask) {
+ grep.type= X_Reply;
+ grep.deviceID= dev->id;
+ grep.sequenceNumber= client->sequence;
+ grep.length= 0;
+ grep.found= TRUE;
+ grep.pad= 0;
+ grep.widthMM= grep.heightMM= 0;
+ grep.nProperties= grep.nColors= grep.nShapes= 0;
+ grep.nSections= grep.nDoodads= 0;
+ grep.baseColorNdx= grep.labelColorNdx= 0;
+ XkbComputeGetGeometryReplySize(new->geom,&grep,None);
+ rep.length+= SIZEOF(xGenericReply)/4+grep.length;
+ }
+ }
+
+ reported= rep.reported;
+ if ( client->swapped ) {
+ register int n;
+ swaps(&rep.sequenceNumber,n);
+ swapl(&rep.length,n);
+ swaps(&rep.found,n);
+ swaps(&rep.reported,n);
+ }
+ WriteToClient(client,SIZEOF(xkbGetKbdByNameReply), (char *)&rep);
+ if (reported&(XkbGBN_SymbolsMask|XkbGBN_TypesMask))
+ XkbSendMap(client,new,&mrep);
+ if (reported&XkbGBN_CompatMapMask)
+ XkbSendCompatMap(client,new->compat,&crep);
+ if (reported&XkbGBN_IndicatorMapMask)
+ XkbSendIndicatorMap(client,new->indicators,&irep);
+ if (reported&(XkbGBN_KeyNamesMask|XkbGBN_OtherNamesMask))
+ XkbSendNames(client,new,&nrep);
+ if (reported&XkbGBN_GeometryMask)
+ XkbSendGeometry(client,new->geom,&grep,FALSE);
+ if (rep.loaded) {
+ XkbDescPtr old_xkb;
+ xkbNewKeyboardNotify nkn;
+ int i,nG,nTG;
+ old_xkb= xkb;
+ xkb= new;
+ dev->key->xkbInfo->desc= xkb;
+ new= old_xkb; /* so it'll get freed automatically */
+
+ *xkb->ctrls= *old_xkb->ctrls;
+ for (nG=nTG=0,i=xkb->min_key_code;i<=xkb->max_key_code;i++) {
+ nG= XkbKeyNumGroups(xkb,i);
+ if (nG>=XkbNumKbdGroups) {
+ nTG= XkbNumKbdGroups;
+ break;
+ }
+ if (nG>nTG) {
+ nTG= nG;
+ }
+ }
+ xkb->ctrls->num_groups= nTG;
+
+ for (tmpd = inputInfo.devices; tmpd; tmpd = tmpd->next) {
+ if ((tmpd == dev) || (!IsMaster(tmpd) && GetMaster(tmpd, MASTER_KEYBOARD) == dev)) {
+ if (tmpd != dev)
+ XkbCopyDeviceKeymap(tmpd, dev);
+
+ if (tmpd->kbdfeed && tmpd->kbdfeed->xkb_sli) {
+ old_sli = tmpd->kbdfeed->xkb_sli;
+ tmpd->kbdfeed->xkb_sli = NULL;
+ sli = XkbAllocSrvLedInfo(tmpd, tmpd->kbdfeed, NULL, 0);
+ if (sli) {
+ sli->explicitState = old_sli->explicitState;
+ sli->effectiveState = old_sli->effectiveState;
+ }
+ tmpd->kbdfeed->xkb_sli = sli;
+ XkbFreeSrvLedInfo(old_sli);
+ }
+ }
+ }
+
+ nkn.deviceID= nkn.oldDeviceID= dev->id;
+ nkn.minKeyCode= new->min_key_code;
+ nkn.maxKeyCode= new->max_key_code;
+ nkn.oldMinKeyCode= xkb->min_key_code;
+ nkn.oldMaxKeyCode= xkb->max_key_code;
+ nkn.requestMajor= XkbReqCode;
+ nkn.requestMinor= X_kbGetKbdByName;
+ nkn.changed= XkbNKN_KeycodesMask;
+ if (geom_changed)
+ nkn.changed|= XkbNKN_GeometryMask;
+ XkbSendNewKeyboardNotify(dev,&nkn);
+
+ if (!IsMaster(dev) && dev->u.master)
+ {
+ DeviceIntPtr master = dev->u.master;
+ if (master->u.lastSlave == dev)
+ {
+ XkbCopyDeviceKeymap(dev->u.master, dev);
+ XkbSendNewKeyboardNotify(dev,&nkn);
+ }
+ }
+ }
+ if ((new!=NULL)&&(new!=xkb)) {
+ XkbFreeKeyboard(new,XkbAllComponentsMask,TRUE);
+ new= NULL;
+ }
+ free(names.keycodes);
+ names.keycodes = NULL;
+ free(names.types);
+ names.types = NULL;
+ free(names.compat);
+ names.compat = NULL;
+ free(names.symbols);
+ names.symbols = NULL;
+ free(names.geometry);
+ names.geometry = NULL;
+ return Success;
+}
+
+/***====================================================================***/
+
+static int
+ComputeDeviceLedInfoSize( DeviceIntPtr dev,
+ unsigned int what,
+ XkbSrvLedInfoPtr sli)
+{
+int nNames,nMaps;
+register unsigned n,bit;
+
+ if (sli==NULL)
+ return 0;
+ nNames= nMaps= 0;
+ if ((what&XkbXI_IndicatorNamesMask)==0)
+ sli->namesPresent= 0;
+ if ((what&XkbXI_IndicatorMapsMask)==0)
+ sli->mapsPresent= 0;
+
+ for (n=0,bit=1;n<XkbNumIndicators;n++,bit<<=1) {
+ if (sli->names && sli->names[n]!=None) {
+ sli->namesPresent|= bit;
+ nNames++;
+ }
+ if (sli->maps && XkbIM_InUse(&sli->maps[n])) {
+ sli->mapsPresent|= bit;
+ nMaps++;
+ }
+ }
+ return (nNames*4)+(nMaps*SIZEOF(xkbIndicatorMapWireDesc));
+}
+
+static int
+CheckDeviceLedFBs( DeviceIntPtr dev,
+ int class,
+ int id,
+ xkbGetDeviceInfoReply * rep,
+ ClientPtr client)
+{
+int nFBs= 0;
+int length= 0;
+Bool classOk;
+
+ if (class==XkbDfltXIClass) {
+ if (dev->kbdfeed) class= KbdFeedbackClass;
+ else if (dev->leds) class= LedFeedbackClass;
+ else {
+ client->errorValue= _XkbErrCode2(XkbErr_BadClass,class);
+ return XkbKeyboardErrorCode;
+ }
+ }
+ classOk= FALSE;
+ if ((dev->kbdfeed)&&((class==KbdFeedbackClass)||(class==XkbAllXIClasses))) {
+ KbdFeedbackPtr kf;
+ classOk= TRUE;
+ for (kf= dev->kbdfeed;(kf);kf=kf->next) {
+ if ((id!=XkbAllXIIds)&&(id!=XkbDfltXIId)&&(id!=kf->ctrl.id))
+ continue;
+ nFBs++;
+ length+= SIZEOF(xkbDeviceLedsWireDesc);
+ if (!kf->xkb_sli)
+ kf->xkb_sli= XkbAllocSrvLedInfo(dev,kf,NULL,0);
+ length+= ComputeDeviceLedInfoSize(dev,rep->present,kf->xkb_sli);
+ if (id!=XkbAllXIIds)
+ break;
+ }
+ }
+ if ((dev->leds)&&((class==LedFeedbackClass)||(class==XkbAllXIClasses))) {
+ LedFeedbackPtr lf;
+ classOk= TRUE;
+ for (lf= dev->leds;(lf);lf=lf->next) {
+ if ((id!=XkbAllXIIds)&&(id!=XkbDfltXIId)&&(id!=lf->ctrl.id))
+ continue;
+ nFBs++;
+ length+= SIZEOF(xkbDeviceLedsWireDesc);
+ if (!lf->xkb_sli)
+ lf->xkb_sli= XkbAllocSrvLedInfo(dev,NULL,lf,0);
+ length+= ComputeDeviceLedInfoSize(dev,rep->present,lf->xkb_sli);
+ if (id!=XkbAllXIIds)
+ break;
+ }
+ }
+ if (nFBs>0) {
+ rep->nDeviceLedFBs= nFBs;
+ rep->length+= (length/4);
+ return Success;
+ }
+ if (classOk) client->errorValue= _XkbErrCode2(XkbErr_BadId,id);
+ else client->errorValue= _XkbErrCode2(XkbErr_BadClass,class);
+ return XkbKeyboardErrorCode;
+}
+
+static int
+SendDeviceLedInfo( XkbSrvLedInfoPtr sli,
+ ClientPtr client)
+{
+xkbDeviceLedsWireDesc wire;
+int length;
+
+ length= 0;
+ wire.ledClass= sli->class;
+ wire.ledID= sli->id;
+ wire.namesPresent= sli->namesPresent;
+ wire.mapsPresent= sli->mapsPresent;
+ wire.physIndicators= sli->physIndicators;
+ wire.state= sli->effectiveState;
+ if (client->swapped) {
+ register int n;
+ swaps(&wire.ledClass,n);
+ swaps(&wire.ledID,n);
+ swapl(&wire.namesPresent,n);
+ swapl(&wire.mapsPresent,n);
+ swapl(&wire.physIndicators,n);
+ swapl(&wire.state,n);
+ }
+ WriteToClient(client,SIZEOF(xkbDeviceLedsWireDesc),(char *)&wire);
+ length+= SIZEOF(xkbDeviceLedsWireDesc);
+ if (sli->namesPresent|sli->mapsPresent) {
+ register unsigned i,bit;
+ if (sli->namesPresent) {
+ CARD32 awire;
+ for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
+ if (sli->namesPresent&bit) {
+ awire= (CARD32)sli->names[i];
+ if (client->swapped) {
+ register int n;
+ swapl(&awire,n);
+ }
+ WriteToClient(client,4,(char *)&awire);
+ length+= 4;
+ }
+ }
+ }
+ if (sli->mapsPresent) {
+ for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
+ xkbIndicatorMapWireDesc iwire;
+ if (sli->mapsPresent&bit) {
+ iwire.flags= sli->maps[i].flags;
+ iwire.whichGroups= sli->maps[i].which_groups;
+ iwire.groups= sli->maps[i].groups;
+ iwire.whichMods= sli->maps[i].which_mods;
+ iwire.mods= sli->maps[i].mods.mask;
+ iwire.realMods= sli->maps[i].mods.real_mods;
+ iwire.virtualMods= sli->maps[i].mods.vmods;
+ iwire.ctrls= sli->maps[i].ctrls;
+ if (client->swapped) {
+ register int n;
+ swaps(&iwire.virtualMods,n);
+ swapl(&iwire.ctrls,n);
+ }
+ WriteToClient(client,SIZEOF(xkbIndicatorMapWireDesc),
+ (char *)&iwire);
+ length+= SIZEOF(xkbIndicatorMapWireDesc);
+ }
+ }
+ }
+ }
+ return length;
+}
+
+static int
+SendDeviceLedFBs( DeviceIntPtr dev,
+ int class,
+ int id,
+ unsigned wantLength,
+ ClientPtr client)
+{
+int length= 0;
+
+ if (class==XkbDfltXIClass) {
+ if (dev->kbdfeed) class= KbdFeedbackClass;
+ else if (dev->leds) class= LedFeedbackClass;
+ }
+ if ((dev->kbdfeed)&&
+ ((class==KbdFeedbackClass)||(class==XkbAllXIClasses))) {
+ KbdFeedbackPtr kf;
+ for (kf= dev->kbdfeed;(kf);kf=kf->next) {
+ if ((id==XkbAllXIIds)||(id==XkbDfltXIId)||(id==kf->ctrl.id)) {
+ length+= SendDeviceLedInfo(kf->xkb_sli,client);
+ if (id!=XkbAllXIIds)
+ break;
+ }
+ }
+ }
+ if ((dev->leds)&&
+ ((class==LedFeedbackClass)||(class==XkbAllXIClasses))) {
+ LedFeedbackPtr lf;
+ for (lf= dev->leds;(lf);lf=lf->next) {
+ if ((id==XkbAllXIIds)||(id==XkbDfltXIId)||(id==lf->ctrl.id)) {
+ length+= SendDeviceLedInfo(lf->xkb_sli,client);
+ if (id!=XkbAllXIIds)
+ break;
+ }
+ }
+ }
+ if (length==wantLength)
+ return Success;
+ else return BadLength;
+}
+
+int
+ProcXkbGetDeviceInfo(ClientPtr client)
+{
+DeviceIntPtr dev;
+xkbGetDeviceInfoReply rep;
+int status,nDeviceLedFBs;
+unsigned length,nameLen;
+CARD16 ledClass,ledID;
+unsigned wanted;
+char * str;
+
+ REQUEST(xkbGetDeviceInfoReq);
+ REQUEST_SIZE_MATCH(xkbGetDeviceInfoReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ wanted= stuff->wanted;
+
+ CHK_ANY_DEVICE(dev, stuff->deviceSpec, client, DixGetAttrAccess);
+ CHK_MASK_LEGAL(0x01,wanted,XkbXI_AllDeviceFeaturesMask);
+
+ if ((!dev->button)||((stuff->nBtns<1)&&(!stuff->allBtns)))
+ wanted&= ~XkbXI_ButtonActionsMask;
+ if ((!dev->kbdfeed)&&(!dev->leds))
+ wanted&= ~XkbXI_IndicatorsMask;
+
+ nameLen= XkbSizeCountedString(dev->name);
+ memset((char *)&rep, 0, SIZEOF(xkbGetDeviceInfoReply));
+ rep.type = X_Reply;
+ rep.deviceID= dev->id;
+ rep.sequenceNumber = client->sequence;
+ rep.length = nameLen/4;
+ rep.present = wanted;
+ rep.supported = XkbXI_AllDeviceFeaturesMask;
+ rep.unsupported = 0;
+ rep.firstBtnWanted = rep.nBtnsWanted = 0;
+ rep.firstBtnRtrn = rep.nBtnsRtrn = 0;
+ if (dev->button)
+ rep.totalBtns= dev->button->numButtons;
+ else rep.totalBtns= 0;
+ rep.devType= dev->xinput_type;
+ rep.hasOwnState= (dev->key && dev->key->xkbInfo);
+ rep.nDeviceLedFBs = 0;
+ if (dev->kbdfeed) rep.dfltKbdFB= dev->kbdfeed->ctrl.id;
+ else rep.dfltKbdFB= XkbXINone;
+ if (dev->leds) rep.dfltLedFB= dev->leds->ctrl.id;
+ else rep.dfltLedFB= XkbXINone;
+
+ ledClass= stuff->ledClass;
+ ledID= stuff->ledID;
+
+ rep.firstBtnWanted= rep.nBtnsWanted= 0;
+ rep.firstBtnRtrn= rep.nBtnsRtrn= 0;
+ if (wanted&XkbXI_ButtonActionsMask) {
+ if (stuff->allBtns) {
+ stuff->firstBtn= 0;
+ stuff->nBtns= dev->button->numButtons;
+ }
+
+ if ((stuff->firstBtn+stuff->nBtns)>dev->button->numButtons) {
+ client->errorValue = _XkbErrCode4(0x02,dev->button->numButtons,
+ stuff->firstBtn,
+ stuff->nBtns);
+ return BadValue;
+ }
+ else {
+ rep.firstBtnWanted= stuff->firstBtn;
+ rep.nBtnsWanted= stuff->nBtns;
+ if (dev->button->xkb_acts!=NULL) {
+ XkbAction *act;
+ register int i;
+
+ rep.firstBtnRtrn= stuff->firstBtn;
+ rep.nBtnsRtrn= stuff->nBtns;
+ act= &dev->button->xkb_acts[rep.firstBtnWanted];
+ for (i=0;i<rep.nBtnsRtrn;i++,act++) {
+ if (act->type!=XkbSA_NoAction)
+ break;
+ }
+ rep.firstBtnRtrn+= i;
+ rep.nBtnsRtrn-= i;
+ act= &dev->button->xkb_acts[rep.firstBtnRtrn+rep.nBtnsRtrn-1];
+ for (i=0;i<rep.nBtnsRtrn;i++,act--) {
+ if (act->type!=XkbSA_NoAction)
+ break;
+ }
+ rep.nBtnsRtrn-= i;
+ }
+ rep.length+= (rep.nBtnsRtrn*SIZEOF(xkbActionWireDesc))/4;
+ }
+ }
+
+ if (wanted&XkbXI_IndicatorsMask) {
+ status= CheckDeviceLedFBs(dev,ledClass,ledID,&rep,client);
+ if (status!=Success)
+ return status;
+ }
+ length= rep.length*4;
+ nDeviceLedFBs = rep.nDeviceLedFBs;
+ if (client->swapped) {
+ register int n;
+ swaps(&rep.sequenceNumber,n);
+ swapl(&rep.length,n);
+ swaps(&rep.present,n);
+ swaps(&rep.supported,n);
+ swaps(&rep.unsupported,n);
+ swaps(&rep.nDeviceLedFBs,n);
+ swapl(&rep.type,n);
+ }
+ WriteToClient(client,SIZEOF(xkbGetDeviceInfoReply), (char *)&rep);
+
+ str= malloc(nameLen);
+ if (!str)
+ return BadAlloc;
+ XkbWriteCountedString(str,dev->name,client->swapped);
+ WriteToClient(client,nameLen,str);
+ free(str);
+ length-= nameLen;
+
+ if (rep.nBtnsRtrn>0) {
+ int sz;
+ xkbActionWireDesc * awire;
+ sz= rep.nBtnsRtrn*SIZEOF(xkbActionWireDesc);
+ awire= (xkbActionWireDesc *)&dev->button->xkb_acts[rep.firstBtnRtrn];
+ WriteToClient(client,sz,(char *)awire);
+ length-= sz;
+ }
+ if (nDeviceLedFBs>0) {
+ status= SendDeviceLedFBs(dev,ledClass,ledID,length,client);
+ if (status!=Success)
+ return status;
+ }
+ else if (length!=0) {
+ ErrorF("[xkb] Internal Error! BadLength in ProcXkbGetDeviceInfo\n");
+ ErrorF("[xkb] Wrote %d fewer bytes than expected\n",length);
+ return BadLength;
+ }
+ return Success;
+}
+
+static char *
+CheckSetDeviceIndicators( char * wire,
+ DeviceIntPtr dev,
+ int num,
+ int * status_rtrn,
+ ClientPtr client)
+{
+xkbDeviceLedsWireDesc * ledWire;
+int i;
+XkbSrvLedInfoPtr sli;
+
+ ledWire= (xkbDeviceLedsWireDesc *)wire;
+ for (i=0;i<num;i++) {
+ if (client->swapped) {
+ register int n;
+ swaps(&ledWire->ledClass,n);
+ swaps(&ledWire->ledID,n);
+ swapl(&ledWire->namesPresent,n);
+ swapl(&ledWire->mapsPresent,n);
+ swapl(&ledWire->physIndicators,n);
+ }
+
+ sli= XkbFindSrvLedInfo(dev,ledWire->ledClass,ledWire->ledID,
+ XkbXI_IndicatorsMask);
+ if (sli!=NULL) {
+ register int n;
+ register unsigned bit;
+ int nMaps,nNames;
+ CARD32 *atomWire;
+ xkbIndicatorMapWireDesc *mapWire;
+
+ nMaps= nNames= 0;
+ for (n=0,bit=1;n<XkbNumIndicators;n++,bit<<=1) {
+ if (ledWire->namesPresent&bit)
+ nNames++;
+ if (ledWire->mapsPresent&bit)
+ nMaps++;
+ }
+ atomWire= (CARD32 *)&ledWire[1];
+ if (nNames>0) {
+ for (n=0;n<nNames;n++) {
+ if (client->swapped) {
+ register int t;
+ swapl(atomWire,t);
+ }
+ CHK_ATOM_OR_NONE3(((Atom)(*atomWire)),client->errorValue,
+ *status_rtrn,NULL);
+ atomWire++;
+ }
+ }
+ mapWire= (xkbIndicatorMapWireDesc *)atomWire;
+ if (nMaps>0) {
+ for (n=0;n<nMaps;n++) {
+ if (client->swapped) {
+ register int t;
+ swaps(&mapWire->virtualMods,t);
+ swapl(&mapWire->ctrls,t);
+ }
+ CHK_MASK_LEGAL3(0x21,mapWire->whichGroups,
+ XkbIM_UseAnyGroup,
+ client->errorValue,
+ *status_rtrn,NULL);
+ CHK_MASK_LEGAL3(0x22,mapWire->whichMods,XkbIM_UseAnyMods,
+ client->errorValue,
+ *status_rtrn,NULL);
+ mapWire++;
+ }
+ }
+ ledWire= (xkbDeviceLedsWireDesc *)mapWire;
+ }
+ else {
+ /* SHOULD NEVER HAPPEN */
+ return (char *)ledWire;
+ }
+ }
+ return (char *)ledWire;
+}
+
+static char *
+SetDeviceIndicators( char * wire,
+ DeviceIntPtr dev,
+ unsigned changed,
+ int num,
+ int * status_rtrn,
+ ClientPtr client,
+ xkbExtensionDeviceNotify *ev)
+{
+xkbDeviceLedsWireDesc * ledWire;
+int i;
+XkbEventCauseRec cause;
+unsigned namec,mapc,statec;
+xkbExtensionDeviceNotify ed;
+XkbChangesRec changes;
+DeviceIntPtr kbd;
+
+ memset((char *)&ed, 0, sizeof(xkbExtensionDeviceNotify));
+ memset((char *)&changes, 0, sizeof(XkbChangesRec));
+ XkbSetCauseXkbReq(&cause,X_kbSetDeviceInfo,client);
+ ledWire= (xkbDeviceLedsWireDesc *)wire;
+ for (i=0;i<num;i++) {
+ register int n;
+ register unsigned bit;
+ CARD32 * atomWire;
+ xkbIndicatorMapWireDesc * mapWire;
+ XkbSrvLedInfoPtr sli;
+
+ namec= mapc= statec= 0;
+ sli= XkbFindSrvLedInfo(dev,ledWire->ledClass,ledWire->ledID,
+ XkbXI_IndicatorMapsMask);
+ if (!sli) {
+ /* SHOULD NEVER HAPPEN!! */
+ return (char *)ledWire;
+ }
+
+ atomWire= (CARD32 *)&ledWire[1];
+ if (changed&XkbXI_IndicatorNamesMask) {
+ namec= sli->namesPresent|ledWire->namesPresent;
+ memset((char *)sli->names, 0, XkbNumIndicators*sizeof(Atom));
+ }
+ if (ledWire->namesPresent) {
+ sli->namesPresent= ledWire->namesPresent;
+ memset((char *)sli->names, 0, XkbNumIndicators*sizeof(Atom));
+ for (n=0,bit=1;n<XkbNumIndicators;n++,bit<<=1) {
+ if (ledWire->namesPresent&bit) {
+ sli->names[n]= (Atom)*atomWire;
+ if (sli->names[n]==None)
+ ledWire->namesPresent&= ~bit;
+ atomWire++;
+ }
+ }
+ }
+ mapWire= (xkbIndicatorMapWireDesc *)atomWire;
+ if (changed&XkbXI_IndicatorMapsMask) {
+ mapc= sli->mapsPresent|ledWire->mapsPresent;
+ sli->mapsPresent= ledWire->mapsPresent;
+ memset((char*)sli->maps, 0, XkbNumIndicators*sizeof(XkbIndicatorMapRec));
+ }
+ if (ledWire->mapsPresent) {
+ for (n=0,bit=1;n<XkbNumIndicators;n++,bit<<=1) {
+ if (ledWire->mapsPresent&bit) {
+ sli->maps[n].flags= mapWire->flags;
+ sli->maps[n].which_groups= mapWire->whichGroups;
+ sli->maps[n].groups= mapWire->groups;
+ sli->maps[n].which_mods= mapWire->whichMods;
+ sli->maps[n].mods.mask= mapWire->mods;
+ sli->maps[n].mods.real_mods=mapWire->realMods;
+ sli->maps[n].mods.vmods= mapWire->virtualMods;
+ sli->maps[n].ctrls= mapWire->ctrls;
+ mapWire++;
+ }
+ }
+ }
+ if (changed&XkbXI_IndicatorStateMask) {
+ statec= sli->effectiveState^ledWire->state;
+ sli->explicitState&= ~statec;
+ sli->explicitState|= (ledWire->state&statec);
+ }
+ if (namec)
+ XkbApplyLedNameChanges(dev,sli,namec,&ed,&changes,&cause);
+ if (mapc)
+ XkbApplyLedMapChanges(dev,sli,mapc,&ed,&changes,&cause);
+ if (statec)
+ XkbApplyLedStateChanges(dev,sli,statec,&ed,&changes,&cause);
+
+ kbd= dev;
+ if ((sli->flags&XkbSLI_HasOwnState)==0)
+ kbd = inputInfo.keyboard;
+
+ XkbFlushLedEvents(dev,kbd,sli,&ed,&changes,&cause);
+ ledWire= (xkbDeviceLedsWireDesc *)mapWire;
+ }
+ return (char *)ledWire;
+}
+
+
+static int
+_XkbSetDeviceInfo(ClientPtr client, DeviceIntPtr dev,
+ xkbSetDeviceInfoReq *stuff)
+{
+ char *wire;
+
+ wire= (char *)&stuff[1];
+ if (stuff->change&XkbXI_ButtonActionsMask) {
+ if (!dev->button) {
+ client->errorValue = _XkbErrCode2(XkbErr_BadClass,ButtonClass);
+ return XkbKeyboardErrorCode;
+ }
+ if ((stuff->firstBtn+stuff->nBtns)>dev->button->numButtons) {
+ client->errorValue= _XkbErrCode4(0x02,stuff->firstBtn,stuff->nBtns,
+ dev->button->numButtons);
+ return BadMatch;
+ }
+ wire+= (stuff->nBtns*SIZEOF(xkbActionWireDesc));
+ }
+ if (stuff->change&XkbXI_IndicatorsMask) {
+ int status= Success;
+ wire= CheckSetDeviceIndicators(wire,dev,stuff->nDeviceLedFBs,
+ &status,client);
+ if (status!=Success)
+ return status;
+ }
+ if (((wire-((char *)stuff))/4)!=stuff->length)
+ return BadLength;
+
+ return Success;
+}
+
+static int
+_XkbSetDeviceInfoCheck(ClientPtr client, DeviceIntPtr dev,
+ xkbSetDeviceInfoReq *stuff)
+{
+ char *wire;
+ xkbExtensionDeviceNotify ed;
+
+ memset((char *)&ed, 0, SIZEOF(xkbExtensionDeviceNotify));
+ ed.deviceID= dev->id;
+ wire= (char *)&stuff[1];
+ if (stuff->change&XkbXI_ButtonActionsMask) {
+ int nBtns,sz,i;
+ XkbAction * acts;
+ DeviceIntPtr kbd;
+
+ nBtns= dev->button->numButtons;
+ acts= dev->button->xkb_acts;
+ if (acts==NULL) {
+ acts= calloc(nBtns, sizeof(XkbAction));
+ if (!acts)
+ return BadAlloc;
+ dev->button->xkb_acts= acts;
+ }
+ sz= stuff->nBtns*SIZEOF(xkbActionWireDesc);
+ memcpy((char *)&acts[stuff->firstBtn],(char *)wire,sz);
+ wire+= sz;
+ ed.reason|= XkbXI_ButtonActionsMask;
+ ed.firstBtn= stuff->firstBtn;
+ ed.nBtns= stuff->nBtns;
+
+ if (dev->key) kbd= dev;
+ else kbd= inputInfo.keyboard;
+ acts= &dev->button->xkb_acts[stuff->firstBtn];
+ for (i=0;i<stuff->nBtns;i++,acts++) {
+ if (acts->type!=XkbSA_NoAction)
+ XkbSetActionKeyMods(kbd->key->xkbInfo->desc,acts,0);
+ }
+ }
+ if (stuff->change&XkbXI_IndicatorsMask) {
+ int status= Success;
+ wire= SetDeviceIndicators(wire,dev,stuff->change,
+ stuff->nDeviceLedFBs, &status,client,&ed);
+ if (status!=Success)
+ return status;
+ }
+ if ((stuff->change)&&(ed.reason))
+ XkbSendExtensionDeviceNotify(dev,client,&ed);
+ return Success;
+}
+
+int
+ProcXkbSetDeviceInfo(ClientPtr client)
+{
+ DeviceIntPtr dev;
+ int rc;
+
+ REQUEST(xkbSetDeviceInfoReq);
+ REQUEST_AT_LEAST_SIZE(xkbSetDeviceInfoReq);
+
+ if (!(client->xkbClientFlags&_XkbClientInitialized))
+ return BadAccess;
+
+ CHK_ANY_DEVICE(dev, stuff->deviceSpec, client, DixManageAccess);
+ CHK_MASK_LEGAL(0x01,stuff->change,XkbXI_AllFeaturesMask);
+
+ rc = _XkbSetDeviceInfoCheck(client, dev, stuff);
+
+ if (rc != Success)
+ return rc;
+
+ if (stuff->deviceSpec == XkbUseCoreKbd || stuff->deviceSpec == XkbUseCorePtr)
+ {
+ DeviceIntPtr other;
+ for (other = inputInfo.devices; other; other = other->next)
+ {
+ if (((other != dev) && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev) &&
+ ((stuff->deviceSpec == XkbUseCoreKbd && other->key) ||
+ (stuff->deviceSpec == XkbUseCorePtr && other->button)))
+ {
+ rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
+ if (rc == Success)
+ {
+ rc = _XkbSetDeviceInfoCheck(client, other, stuff);
+ if (rc != Success)
+ return rc;
+ }
+ }
+ }
+ }
+
+ /* checks done, apply */
+ rc = _XkbSetDeviceInfo(client, dev, stuff);
+ if (rc != Success)
+ return rc;
+
+ if (stuff->deviceSpec == XkbUseCoreKbd || stuff->deviceSpec == XkbUseCorePtr)
+ {
+ DeviceIntPtr other;
+ for (other = inputInfo.devices; other; other = other->next)
+ {
+ if (((other != dev) && !IsMaster(other) && GetMaster(other, MASTER_KEYBOARD) == dev) &&
+ ((stuff->deviceSpec == XkbUseCoreKbd && other->key) ||
+ (stuff->deviceSpec == XkbUseCorePtr && other->button)))
+ {
+ rc = XaceHook(XACE_DEVICE_ACCESS, client, other, DixManageAccess);
+ if (rc == Success)
+ {
+ rc = _XkbSetDeviceInfo(client, other, stuff);
+ if (rc != Success)
+ return rc;
+ }
+ }
+ }
+ }
+
+ return Success;
+}
+
+/***====================================================================***/
+
+int
+ProcXkbSetDebuggingFlags(ClientPtr client)
+{
+CARD32 newFlags,newCtrls,extraLength;
+xkbSetDebuggingFlagsReply rep;
+int rc;
+
+ REQUEST(xkbSetDebuggingFlagsReq);
+ REQUEST_AT_LEAST_SIZE(xkbSetDebuggingFlagsReq);
+
+ rc = XaceHook(XACE_SERVER_ACCESS, client, DixDebugAccess);
+ if (rc != Success)
+ return rc;
+
+ newFlags= xkbDebugFlags&(~stuff->affectFlags);
+ newFlags|= (stuff->flags&stuff->affectFlags);
+ newCtrls= xkbDebugCtrls&(~stuff->affectCtrls);
+ newCtrls|= (stuff->ctrls&stuff->affectCtrls);
+ if (xkbDebugFlags || newFlags || stuff->msgLength) {
+ ErrorF("[xkb] XkbDebug: Setting debug flags to 0x%lx\n",(long)newFlags);
+ if (newCtrls!=xkbDebugCtrls)
+ ErrorF("[xkb] XkbDebug: Setting debug controls to 0x%lx\n",(long)newCtrls);
+ }
+ extraLength= (stuff->length<<2)-sz_xkbSetDebuggingFlagsReq;
+ if (stuff->msgLength>0) {
+ char *msg;
+ if (extraLength<XkbPaddedSize(stuff->msgLength)) {
+ ErrorF("[xkb] XkbDebug: msgLength= %d, length= %ld (should be %d)\n",
+ stuff->msgLength,(long)extraLength,
+ XkbPaddedSize(stuff->msgLength));
+ return BadLength;
+ }
+ msg= (char *)&stuff[1];
+ if (msg[stuff->msgLength-1]!='\0') {
+ ErrorF("[xkb] XkbDebug: message not null-terminated\n");
+ return BadValue;
+ }
+ ErrorF("[xkb] XkbDebug: %s\n",msg);
+ }
+ xkbDebugFlags = newFlags;
+ xkbDebugCtrls = newCtrls;
+
+ rep.type= X_Reply;
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+ rep.currentFlags = newFlags;
+ rep.currentCtrls = newCtrls;
+ rep.supportedFlags = ~0;
+ rep.supportedCtrls = ~0;
+ if ( client->swapped ) {
+ register int n;
+ swaps(&rep.sequenceNumber, n);
+ swapl(&rep.currentFlags, n);
+ swapl(&rep.currentCtrls, n);
+ swapl(&rep.supportedFlags, n);
+ swapl(&rep.supportedCtrls, n);
+ }
+ WriteToClient(client,SIZEOF(xkbSetDebuggingFlagsReply), (char *)&rep);
+ return Success;
+}
+
+/***====================================================================***/
+
+static int
+ProcXkbDispatch (ClientPtr client)
+{
+ REQUEST(xReq);
+ switch (stuff->data)
+ {
+ case X_kbUseExtension:
+ return ProcXkbUseExtension(client);
+ case X_kbSelectEvents:
+ return ProcXkbSelectEvents(client);
+ case X_kbBell:
+ return ProcXkbBell(client);
+ case X_kbGetState:
+ return ProcXkbGetState(client);
+ case X_kbLatchLockState:
+ return ProcXkbLatchLockState(client);
+ case X_kbGetControls:
+ return ProcXkbGetControls(client);
+ case X_kbSetControls:
+ return ProcXkbSetControls(client);
+ case X_kbGetMap:
+ return ProcXkbGetMap(client);
+ case X_kbSetMap:
+ return ProcXkbSetMap(client);
+ case X_kbGetCompatMap:
+ return ProcXkbGetCompatMap(client);
+ case X_kbSetCompatMap:
+ return ProcXkbSetCompatMap(client);
+ case X_kbGetIndicatorState:
+ return ProcXkbGetIndicatorState(client);
+ case X_kbGetIndicatorMap:
+ return ProcXkbGetIndicatorMap(client);
+ case X_kbSetIndicatorMap:
+ return ProcXkbSetIndicatorMap(client);
+ case X_kbGetNamedIndicator:
+ return ProcXkbGetNamedIndicator(client);
+ case X_kbSetNamedIndicator:
+ return ProcXkbSetNamedIndicator(client);
+ case X_kbGetNames:
+ return ProcXkbGetNames(client);
+ case X_kbSetNames:
+ return ProcXkbSetNames(client);
+ case X_kbGetGeometry:
+ return ProcXkbGetGeometry(client);
+ case X_kbSetGeometry:
+ return ProcXkbSetGeometry(client);
+ case X_kbPerClientFlags:
+ return ProcXkbPerClientFlags(client);
+ case X_kbListComponents:
+ return ProcXkbListComponents(client);
+ case X_kbGetKbdByName:
+ return ProcXkbGetKbdByName(client);
+ case X_kbGetDeviceInfo:
+ return ProcXkbGetDeviceInfo(client);
+ case X_kbSetDeviceInfo:
+ return ProcXkbSetDeviceInfo(client);
+ case X_kbSetDebuggingFlags:
+ return ProcXkbSetDebuggingFlags(client);
+ default:
+ return BadRequest;
+ }
+}
+
+static int
+XkbClientGone(pointer data,XID id)
+{
+ DevicePtr pXDev = (DevicePtr)data;
+
+ if (!XkbRemoveResourceClient(pXDev,id)) {
+ ErrorF("[xkb] Internal Error! bad RemoveResourceClient in XkbClientGone\n");
+ }
+ return 1;
+}
+
+void
+XkbExtensionInit(void)
+{
+ ExtensionEntry *extEntry;
+
+ RT_XKBCLIENT = CreateNewResourceType(XkbClientGone, "XkbClient");
+ if (!RT_XKBCLIENT)
+ return;
+
+ if (!XkbInitPrivates())
+ return;
+
+ if ((extEntry = AddExtension(XkbName, XkbNumberEvents, XkbNumberErrors,
+ ProcXkbDispatch, SProcXkbDispatch,
+ NULL, StandardMinorOpcode))) {
+ XkbReqCode = (unsigned char)extEntry->base;
+ XkbEventBase = (unsigned char)extEntry->eventBase;
+ XkbErrorBase = (unsigned char)extEntry->errorBase;
+ XkbKeyboardErrorCode = XkbErrorBase+XkbKeyboard;
+ }
+ return;
+}
+
+
diff --git a/xorg-server/xkeyboard-config/compat/accessx b/xorg-server/xkeyboard-config/compat/accessx
index 3e4b46163..26cafab7a 100644
--- a/xorg-server/xkeyboard-config/compat/accessx
+++ b/xorg-server/xkeyboard-config/compat/accessx
@@ -1,54 +1,52 @@
-// $Xorg: accessx,v 1.3 2000/08/17 19:54:34 cpqbld Exp $
-
-default partial xkb_compatibility "basic" {
- interpret AccessX_Enable {
- action= LockControls(controls=AccessXKeys);
- };
-};
-
-partial xkb_compatibility "full" {
-
- interpret AccessX_Enable {
- action= LockControls(controls=AccessXKeys);
- };
-
- interpret AccessX_Feedback_Enable {
- action= LockControls(controls=AccessXFeedback);
- };
-
- interpret RepeatKeys_Enable {
- action= LockControls(controls=RepeatKeys);
- };
-
- interpret SlowKeys_Enable {
- action= LockControls(controls=SlowKeys);
- };
-
- interpret BounceKeys_Enable {
- action= LockControls(controls=BounceKeys);
- };
-
- interpret StickyKeys_Enable {
- action= LockControls(controls=StickyKeys);
- };
-
- interpret MouseKeys_Enable {
- action= LockControls(controls=MouseKeys);
- };
-
- interpret MouseKeys_Accel_Enable {
- action= LockControls(controls=MouseKeysAccel);
- };
-
- interpret Overlay1_Enable {
- action= LockControls(controls=Overlay1);
- };
-
- interpret Overlay2_Enable {
- action= LockControls(controls=Overlay2);
- };
-
- interpret AudibleBell_Enable {
- action= LockControls(controls=AudibleBell);
- };
-};
+default partial xkb_compatibility "basic" {
+ interpret AccessX_Enable {
+ action= LockControls(controls=AccessXKeys);
+ };
+};
+
+partial xkb_compatibility "full" {
+
+ interpret AccessX_Enable {
+ action= LockControls(controls=AccessXKeys);
+ };
+
+ interpret AccessX_Feedback_Enable {
+ action= LockControls(controls=AccessXFeedback);
+ };
+
+ interpret RepeatKeys_Enable {
+ action= LockControls(controls=RepeatKeys);
+ };
+
+ interpret SlowKeys_Enable {
+ action= LockControls(controls=SlowKeys);
+ };
+
+ interpret BounceKeys_Enable {
+ action= LockControls(controls=BounceKeys);
+ };
+
+ interpret StickyKeys_Enable {
+ action= LockControls(controls=StickyKeys);
+ };
+
+ interpret MouseKeys_Enable {
+ action= LockControls(controls=MouseKeys);
+ };
+
+ interpret MouseKeys_Accel_Enable {
+ action= LockControls(controls=MouseKeysAccel);
+ };
+
+ interpret Overlay1_Enable {
+ action= LockControls(controls=Overlay1);
+ };
+
+ interpret Overlay2_Enable {
+ action= LockControls(controls=Overlay2);
+ };
+
+ interpret AudibleBell_Enable {
+ action= LockControls(controls=AudibleBell);
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/basic b/xorg-server/xkeyboard-config/compat/basic
index 8f99c7b73..ba7e52a6f 100644
--- a/xorg-server/xkeyboard-config/compat/basic
+++ b/xorg-server/xkeyboard-config/compat/basic
@@ -1,52 +1,48 @@
-// $Xorg: basic,v 1.3 2000/08/17 19:54:34 cpqbld Exp $
-
-// Minimal set of symbol interpretations to provide
-// reasonable default behavior (Num lock, shift and
-// caps lock and mode switch) and set up the
-// automatic updating of common keyboard LEDs.
-
-// $XFree86: xc/programs/xkbcomp/compat/basic,v 1.2 2000/11/06 19:24:10 dawes Exp $
-
-default xkb_compatibility "basic" {
- virtual_modifiers NumLock,AltGr;
-
- interpret.repeat= False;
- setMods.clearLocks= True;
- latchMods.clearLocks= True;
- latchMods.latchToLock= True;
-
- interpret Shift_Lock+AnyOf(Shift+Lock) {
- action= LockMods(modifiers=Shift);
- };
-
- interpret Any+Lock {
- action= LockMods(modifiers=Lock);
- };
-
- interpret Num_Lock+Any {
- virtualModifier= NumLock;
- action= LockMods(modifiers=NumLock);
- };
-
- interpret Mode_switch {
- useModMapMods= level1;
- virtualModifier= AltGr;
- action= SetGroup(group=+1);
- };
-
- interpret Any + Any {
- action= SetMods(modifiers=modMapMods);
- };
-
- group 2 = AltGr;
- group 3 = AltGr;
- group 4 = AltGr;
-
- include "ledcaps"
- include "lednum"
- indicator "Shift Lock" {
- !allowExplicit;
- whichModState= Locked;
- modifiers= Shift;
- };
-};
+// Minimal set of symbol interpretations to provide
+// reasonable default behavior (Num lock, shift and
+// caps lock and mode switch) and set up the
+// automatic updating of common keyboard LEDs.
+
+default xkb_compatibility "basic" {
+ virtual_modifiers NumLock,AltGr;
+
+ interpret.repeat= False;
+ setMods.clearLocks= True;
+ latchMods.clearLocks= True;
+ latchMods.latchToLock= True;
+
+ interpret Shift_Lock+AnyOf(Shift+Lock) {
+ action= LockMods(modifiers=Shift);
+ };
+
+ interpret Any+Lock {
+ action= LockMods(modifiers=Lock);
+ };
+
+ interpret Num_Lock+Any {
+ virtualModifier= NumLock;
+ action= LockMods(modifiers=NumLock);
+ };
+
+ interpret Mode_switch {
+ useModMapMods= level1;
+ virtualModifier= AltGr;
+ action= SetGroup(group=+1);
+ };
+
+ interpret Any + Any {
+ action= SetMods(modifiers=modMapMods);
+ };
+
+ group 2 = AltGr;
+ group 3 = AltGr;
+ group 4 = AltGr;
+
+ include "ledcaps"
+ include "lednum"
+ indicator "Shift Lock" {
+ !allowExplicit;
+ whichModState= Locked;
+ modifiers= Shift;
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/complete b/xorg-server/xkeyboard-config/compat/complete
index cd8d059a7..0bf171db3 100644
--- a/xorg-server/xkeyboard-config/compat/complete
+++ b/xorg-server/xkeyboard-config/compat/complete
@@ -1,13 +1,10 @@
-// $XKeyboardConfig$
-// $Xorg: complete,v 1.3 2000/08/17 19:54:34 cpqbld Exp $
-default xkb_compatibility "complete" {
- include "basic"
- augment "iso9995"
- augment "mousekeys"
- augment "accessx(full)"
- augment "misc"
- augment "xfree86"
- augment "level5"
- augment "caps(caps_lock)"
-};
-
+default xkb_compatibility "complete" {
+ include "basic"
+ augment "iso9995"
+ augment "mousekeys"
+ augment "accessx(full)"
+ augment "misc"
+ augment "xfree86"
+ augment "level5"
+ augment "caps(caps_lock)"
+};
diff --git a/xorg-server/xkeyboard-config/compat/default.in b/xorg-server/xkeyboard-config/compat/default.in
index 090793fd7..4c4461fb9 100644
--- a/xorg-server/xkeyboard-config/compat/default.in
+++ b/xorg-server/xkeyboard-config/compat/default.in
@@ -1,5 +1,3 @@
-// $XKeyboardConfig$
-// $Xorg: default,v 1.3 2000/08/17 19:54:34 cpqbld Exp $
default xkb_compatibility "default" {
include "basic"
augment "mousekeys"
diff --git a/xorg-server/xkeyboard-config/compat/iso9995 b/xorg-server/xkeyboard-config/compat/iso9995
index d513c1ce4..4dea5bf01 100644
--- a/xorg-server/xkeyboard-config/compat/iso9995
+++ b/xorg-server/xkeyboard-config/compat/iso9995
@@ -1,84 +1,80 @@
-// $Xorg: iso9995,v 1.3 2000/08/17 19:54:34 cpqbld Exp $
-
-// Fairly complete set of symbol interpretations
-// to provide reasonable default behavior
-
-// $XFree86: xc/programs/xkbcomp/compat/iso9995,v 1.3 2003/02/21 03:16:34 dawes Exp $
-
-default partial xkb_compatibility "default" {
- virtual_modifiers LevelThree,AltGr;
-
- interpret.repeat= False;
- setMods.clearLocks= True;
- latchMods.clearLocks= True;
- latchMods.latchToLock= True;
-
- interpret ISO_Lock+Any {
- action= ISOLock(affect= all,modifiers=modMapMods);
- };
-
- interpret ISO_Level2_Latch+Shift {
- useModMapMods= level1;
- action= LatchMods(modifiers=Shift);
- };
-
- interpret ISO_Level3_Shift+Any {
- useModMapMods= level1;
- virtualModifier= LevelThree;
- action= SetMods(modifiers=LevelThree);
- };
-
- interpret ISO_Level3_Shift {
- action= SetMods(modifiers=LevelThree);
- };
-
- interpret ISO_Level3_Latch+Any {
- useModMapMods= level1;
- virtualModifier= LevelThree;
- action= LatchMods(modifiers=LevelThree);
- };
-
- interpret ISO_Level3_Latch {
- action= LatchMods(modifiers=LevelThree);
- };
-
- interpret ISO_Level3_Lock+Any {
- useModMapMods= level1;
- virtualModifier= LevelThree;
- action= LockMods(modifiers=LevelThree);
- };
-
- interpret ISO_Level3_Lock {
- action= LockMods(modifiers=LevelThree);
- };
-
- interpret ISO_Group_Latch {
- useModMapMods= level1;
- virtualModifier= AltGr;
- action= LatchGroup(group=2);
- };
-
- interpret ISO_Next_Group {
- useModMapMods= level1;
- virtualModifier= AltGr;
- action= LockGroup(group=+1);
- };
-
- interpret ISO_Prev_Group {
- useModMapMods= level1;
- virtualModifier= AltGr;
- action= LockGroup(group=-1);
- };
- interpret ISO_First_Group {
- action= LockGroup(group=1);
- };
-
- interpret ISO_Last_Group {
- action= LockGroup(group=2);
- };
-
- indicator "Group 2" {
- !allowExplicit;
- groups= All-Group1;
- };
-};
+// Fairly complete set of symbol interpretations
+// to provide reasonable default behavior
+
+default partial xkb_compatibility "default" {
+ virtual_modifiers LevelThree,AltGr;
+
+ interpret.repeat= False;
+ setMods.clearLocks= True;
+ latchMods.clearLocks= True;
+ latchMods.latchToLock= True;
+
+ interpret ISO_Lock+Any {
+ action= ISOLock(affect= all,modifiers=modMapMods);
+ };
+
+ interpret ISO_Level2_Latch+Shift {
+ useModMapMods= level1;
+ action= LatchMods(modifiers=Shift);
+ };
+
+ interpret ISO_Level3_Shift+Any {
+ useModMapMods= level1;
+ virtualModifier= LevelThree;
+ action= SetMods(modifiers=LevelThree);
+ };
+
+ interpret ISO_Level3_Shift {
+ action= SetMods(modifiers=LevelThree);
+ };
+
+ interpret ISO_Level3_Latch+Any {
+ useModMapMods= level1;
+ virtualModifier= LevelThree;
+ action= LatchMods(modifiers=LevelThree);
+ };
+
+ interpret ISO_Level3_Latch {
+ action= LatchMods(modifiers=LevelThree);
+ };
+
+ interpret ISO_Level3_Lock+Any {
+ useModMapMods= level1;
+ virtualModifier= LevelThree;
+ action= LockMods(modifiers=LevelThree);
+ };
+
+ interpret ISO_Level3_Lock {
+ action= LockMods(modifiers=LevelThree);
+ };
+
+ interpret ISO_Group_Latch {
+ useModMapMods= level1;
+ virtualModifier= AltGr;
+ action= LatchGroup(group=2);
+ };
+
+ interpret ISO_Next_Group {
+ useModMapMods= level1;
+ virtualModifier= AltGr;
+ action= LockGroup(group=+1);
+ };
+
+ interpret ISO_Prev_Group {
+ useModMapMods= level1;
+ virtualModifier= AltGr;
+ action= LockGroup(group=-1);
+ };
+ interpret ISO_First_Group {
+ action= LockGroup(group=1);
+ };
+
+ interpret ISO_Last_Group {
+ action= LockGroup(group=2);
+ };
+
+ indicator "Group 2" {
+ !allowExplicit;
+ groups= All-Group1;
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/japan b/xorg-server/xkeyboard-config/compat/japan
index 00187d00f..e9a6728d4 100644
--- a/xorg-server/xkeyboard-config/compat/japan
+++ b/xorg-server/xkeyboard-config/compat/japan
@@ -1,48 +1,45 @@
-// $Xorg: japan,v 1.3 2000/08/17 19:54:34 cpqbld Exp $
-
-// Japanese keyboards need Eisu and Kana shift and
-// lock keys, which are typically bound to the
-// second shift level for some other modifier key.
-// These interpretations disable the default
-// interpretation (which would have these keys set
-// the same modifier as the level one symbol).
-
-default partial xkb_compatibility "japan" {
-
- interpret.repeat= False;
-
- interpret Eisu_Shift+Lock {
- action= NoAction();
- };
-
- interpret Eisu_toggle+Lock {
- action= NoAction();
- };
-
- interpret Kana_Shift+Lock {
- action= NoAction();
- };
-
- interpret Kana_Lock+Lock {
- action= NoAction();
- };
-};
-
-// Some Japanese keyboards have an explict Kana Lock key & matching LED
-
-partial xkb_compatibility "kana_lock" {
-
- virtual_modifiers Kana_Lock;
-
- interpret Kana_Lock+AnyOfOrNone(all) {
- virtualModifier= Kana_Lock;
- useModMapMods=level1;
- action= LockGroup(group=+1);
- };
-
- indicator "Kana" {
- !allowExplicit;
- groups= All-Group1;
- };
-};
-
+// Japanese keyboards need Eisu and Kana shift and
+// lock keys, which are typically bound to the
+// second shift level for some other modifier key.
+// These interpretations disable the default
+// interpretation (which would have these keys set
+// the same modifier as the level one symbol).
+
+default partial xkb_compatibility "japan" {
+
+ interpret.repeat= False;
+
+ interpret Eisu_Shift+Lock {
+ action= NoAction();
+ };
+
+ interpret Eisu_toggle+Lock {
+ action= NoAction();
+ };
+
+ interpret Kana_Shift+Lock {
+ action= NoAction();
+ };
+
+ interpret Kana_Lock+Lock {
+ action= NoAction();
+ };
+};
+
+// Some Japanese keyboards have an explict Kana Lock key & matching LED
+
+partial xkb_compatibility "kana_lock" {
+
+ virtual_modifiers Kana_Lock;
+
+ interpret Kana_Lock+AnyOfOrNone(all) {
+ virtualModifier= Kana_Lock;
+ useModMapMods=level1;
+ action= LockGroup(group=+1);
+ };
+
+ indicator "Kana" {
+ !allowExplicit;
+ groups= All-Group1;
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/keypad b/xorg-server/xkeyboard-config/compat/keypad
index 469edec28..f28ca1497 100644
--- a/xorg-server/xkeyboard-config/compat/keypad
+++ b/xorg-server/xkeyboard-config/compat/keypad
@@ -1,60 +1,58 @@
-// $Xorg: keypad,v 1.3 2000/08/17 19:54:34 cpqbld Exp $
-
-// Interpretations needed to implement the numeric keypad
-// as an overlay instead of a modifier.
-
-partial hidden xkb_compatibility "overlay" {
- include "keypad(overlay1)"
-};
-partial hidden xkb_compatibility "overlay1" {
- virtual_modifiers NumLock,AltGr;
-
- interpret.repeat= False;
- setMods.clearLocks= True;
- latchMods.clearLocks= True;
- latchMods.latchToLock= True;
-
- interpret Num_Lock {
- virtualModifier= NumLock;
- action= LockControls(ctrls=overlay1);
- };
- interpret Num_Lock+Any {
- virtualModifier= NumLock;
- action= LockControls(ctrls=overlay1);
- };
-
- indicator.allowExplicit= True;
- indicator.driveskbd= True;
- replace indicator "Num Lock" {
- whichModState= Locked;
- modifiers= NumLock;
- controls= Overlay1;
- };
- indicator.allowExplicit= True;
-};
-partial hidden xkb_compatibility "overlay2" {
- virtual_modifiers NumLock,AltGr;
-
- interpret.repeat= False;
- setMods.clearLocks= True;
- latchMods.clearLocks= True;
- latchMods.latchToLock= True;
-
- interpret Num_Lock {
- virtualModifier= NumLock;
- action= LockControls(ctrls=overlay2);
- };
- interpret Num_Lock+Any {
- virtualModifier= NumLock;
- action= LockControls(ctrls=overlay1);
- };
-
- indicator.allowExplicit= True;
- indicator.driveskbd= True;
- replace indicator "Num Lock" {
- whichModState= Locked;
- modifiers= NumLock;
- controls= Overlay2;
- };
- indicator.allowExplicit= True;
-};
+// Interpretations needed to implement the numeric keypad
+// as an overlay instead of a modifier.
+
+partial hidden xkb_compatibility "overlay" {
+ include "keypad(overlay1)"
+};
+partial hidden xkb_compatibility "overlay1" {
+ virtual_modifiers NumLock,AltGr;
+
+ interpret.repeat= False;
+ setMods.clearLocks= True;
+ latchMods.clearLocks= True;
+ latchMods.latchToLock= True;
+
+ interpret Num_Lock {
+ virtualModifier= NumLock;
+ action= LockControls(ctrls=overlay1);
+ };
+ interpret Num_Lock+Any {
+ virtualModifier= NumLock;
+ action= LockControls(ctrls=overlay1);
+ };
+
+ indicator.allowExplicit= True;
+ indicator.driveskbd= True;
+ replace indicator "Num Lock" {
+ whichModState= Locked;
+ modifiers= NumLock;
+ controls= Overlay1;
+ };
+ indicator.allowExplicit= True;
+};
+partial hidden xkb_compatibility "overlay2" {
+ virtual_modifiers NumLock,AltGr;
+
+ interpret.repeat= False;
+ setMods.clearLocks= True;
+ latchMods.clearLocks= True;
+ latchMods.latchToLock= True;
+
+ interpret Num_Lock {
+ virtualModifier= NumLock;
+ action= LockControls(ctrls=overlay2);
+ };
+ interpret Num_Lock+Any {
+ virtualModifier= NumLock;
+ action= LockControls(ctrls=overlay1);
+ };
+
+ indicator.allowExplicit= True;
+ indicator.driveskbd= True;
+ replace indicator "Num Lock" {
+ whichModState= Locked;
+ modifiers= NumLock;
+ controls= Overlay2;
+ };
+ indicator.allowExplicit= True;
+};
diff --git a/xorg-server/xkeyboard-config/compat/level5 b/xorg-server/xkeyboard-config/compat/level5
index 47693549f..69296e9f0 100644
--- a/xorg-server/xkeyboard-config/compat/level5
+++ b/xorg-server/xkeyboard-config/compat/level5
@@ -1,56 +1,51 @@
-// $XKeyboardConfig$
-// $Xorg: level5,v 1.3 2000/08/17 19:54:34 cpqbld Exp $
-
-// Fairly complete set of symbol interpretations
-// to provide reasonable default behavior
-
-// $XFree86: xc/programs/xkbcomp/compat/iso9995,v 1.3 2003/02/21 03:16:34 dawes Exp $
-
-default partial xkb_compatibility "default" {
- virtual_modifiers LevelFive;
-
- interpret.repeat= False;
- setMods.clearLocks= True;
- latchMods.clearLocks= True;
- latchMods.latchToLock= True;
-
- interpret ISO_Level5_Shift+Any {
- useModMapMods= level1;
- virtualModifier= LevelFive;
- action= SetMods(modifiers=LevelFive);
- };
-
- interpret ISO_Level5_Shift {
- action= SetMods(modifiers=LevelFive);
- };
-
- interpret ISO_Level5_Latch+Any {
- virtualModifier= LevelFive;
- action= LatchMods(modifiers=LevelFive);
- };
-
- interpret ISO_Level5_Latch {
- action= LatchMods(modifiers=LevelFive);
- };
-
- interpret ISO_Level5_Lock+Any {
- virtualModifier= LevelFive;
- action= LockMods(modifiers=LevelFive);
- };
-
- interpret ISO_Level5_Lock {
- action= LockMods(modifiers=LevelFive);
- };
-};
-partial xkb_compatibility "level5_lock" {
- // This defines a Level5-Lock using the NumLock real modifier in order to
- // create arbitrary level-behaviour, which would not be possible with the
- // virtual modifier.
- // See also: types/level5 : EIGHT_LEVEL_LEVEL_FIVE_LOCK
- // See also: symbols/level5(lock)
- virtual_modifiers NumLock;
-
- interpret ISO_Level5_Lock {
- action = LockMods(modifiers = NumLock);
- };
-};
+// Fairly complete set of symbol interpretations
+// to provide reasonable default behavior
+
+default partial xkb_compatibility "default" {
+ virtual_modifiers LevelFive;
+
+ interpret.repeat= False;
+ setMods.clearLocks= True;
+ latchMods.clearLocks= True;
+ latchMods.latchToLock= True;
+
+ interpret ISO_Level5_Shift+Any {
+ useModMapMods= level1;
+ virtualModifier= LevelFive;
+ action= SetMods(modifiers=LevelFive);
+ };
+
+ interpret ISO_Level5_Shift {
+ action= SetMods(modifiers=LevelFive);
+ };
+
+ interpret ISO_Level5_Latch+Any {
+ virtualModifier= LevelFive;
+ action= LatchMods(modifiers=LevelFive);
+ };
+
+ interpret ISO_Level5_Latch {
+ action= LatchMods(modifiers=LevelFive);
+ };
+
+ interpret ISO_Level5_Lock+Any {
+ virtualModifier= LevelFive;
+ action= LockMods(modifiers=LevelFive);
+ };
+
+ interpret ISO_Level5_Lock {
+ action= LockMods(modifiers=LevelFive);
+ };
+};
+partial xkb_compatibility "level5_lock" {
+ // This defines a Level5-Lock using the NumLock real modifier in order to
+ // create arbitrary level-behaviour, which would not be possible with the
+ // virtual modifier.
+ // See also: types/level5 : EIGHT_LEVEL_LEVEL_FIVE_LOCK
+ // See also: symbols/level5(lock)
+ virtual_modifiers NumLock;
+
+ interpret ISO_Level5_Lock {
+ action = LockMods(modifiers = NumLock);
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/misc b/xorg-server/xkeyboard-config/compat/misc
index 184fedc42..6a8b20217 100644
--- a/xorg-server/xkeyboard-config/compat/misc
+++ b/xorg-server/xkeyboard-config/compat/misc
@@ -1,129 +1,122 @@
-// $XdotOrg: xc/programs/xkbcomp/compat/misc,v 1.1.4.4 2004/03/05 13:41:28 eich Exp $
-// $Xorg: misc,v 1.3 2000/08/17 19:54:34 cpqbld Exp $
-//
-//
-//
-// $XFree86: xc/programs/xkbcomp/compat/misc,v 1.4 2003/05/15 13:31:57 pascal Exp $
-
-default partial xkb_compatibility "misc" {
-
- virtual_modifiers Alt,Meta,Super,Hyper,ScrollLock;
-
- // Interpretations for some other useful keys
-
- interpret Terminate_Server {
- action = Terminate();
- };
-
- setMods.clearLocks= True;
-
- // Sets the "Alt" virtual modifier
-
- interpret Alt_L+Any {
- //useModMapMods= level1;
- virtualModifier= Alt;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret Alt_L {
- action = SetMods(modifiers=Alt);
- };
-
- interpret Alt_R+Any {
- //useModMapMods= level1;
- virtualModifier= Alt;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret Alt_R {
- action = SetMods(modifiers=Alt);
- };
-
- // Sets the "Meta" virtual modifier
-
- interpret Meta_L+Any {
-// useModMapMods= level1;
- virtualModifier= Meta;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret Meta_L {
- action = SetMods(modifiers=Meta);
- };
-
- interpret Meta_R+Any {
- //useModMapMods= level1;
- virtualModifier= Meta;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret Meta_R {
- action = SetMods(modifiers=Meta);
- };
-
- // Sets the "Super" virtual modifier
-
- interpret Super_L+Any {
-// useModMapMods= level1;
- virtualModifier= Super;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret Super_L {
- action = SetMods(modifiers=Super);
- };
-
- interpret Super_R+Any {
- //useModMapMods= level1;
- virtualModifier= Super;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret Super_R {
- action = SetMods(modifiers=Super);
- };
-
- // Sets the "Hyper" virtual modifier
-
- interpret Hyper_L+Any {
-// useModMapMods= level1;
- virtualModifier= Hyper;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret Hyper_L {
- action = SetMods(modifiers=Hyper);
- };
-
- interpret Hyper_R+Any {
- //useModMapMods= level1;
- virtualModifier= Hyper;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret Hyper_R {
- action = SetMods(modifiers=Hyper);
- };
-
- // Sets the "ScrollLock" virtual modifier and
- // makes it actually lock when pressed. Sets
- // up a map for the scroll lock indicator.
- interpret Scroll_Lock+Any {
- virtualModifier= ScrollLock;
- action = LockMods(modifiers=modMapMods);
- };
-
- include "ledscroll"
-
- include "misc(assign_shift_left_action)"
-};
-
-partial xkb_compatibility "assign_shift_left_action" {
- // Because of the irrevertable modifier mapping in symbols/pc <LFSH> is
- // getting bound to the Lock modifier when using
- // symbols/shift(both_capslock), creating unwanted behaviour.
- // This is a quirk, to circumvent the problem.
- interpret Shift_L {
- action = SetMods(modifiers = Shift);
- };
-};
+default partial xkb_compatibility "misc" {
+
+ virtual_modifiers Alt,Meta,Super,Hyper,ScrollLock;
+
+ // Interpretations for some other useful keys
+
+ interpret Terminate_Server {
+ action = Terminate();
+ };
+
+ setMods.clearLocks= True;
+
+ // Sets the "Alt" virtual modifier
+
+ interpret Alt_L+Any {
+ //useModMapMods= level1;
+ virtualModifier= Alt;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Alt_L {
+ action = SetMods(modifiers=Alt);
+ };
+
+ interpret Alt_R+Any {
+ //useModMapMods= level1;
+ virtualModifier= Alt;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Alt_R {
+ action = SetMods(modifiers=Alt);
+ };
+
+ // Sets the "Meta" virtual modifier
+
+ interpret Meta_L+Any {
+// useModMapMods= level1;
+ virtualModifier= Meta;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Meta_L {
+ action = SetMods(modifiers=Meta);
+ };
+
+ interpret Meta_R+Any {
+ //useModMapMods= level1;
+ virtualModifier= Meta;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Meta_R {
+ action = SetMods(modifiers=Meta);
+ };
+
+ // Sets the "Super" virtual modifier
+
+ interpret Super_L+Any {
+// useModMapMods= level1;
+ virtualModifier= Super;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Super_L {
+ action = SetMods(modifiers=Super);
+ };
+
+ interpret Super_R+Any {
+ //useModMapMods= level1;
+ virtualModifier= Super;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Super_R {
+ action = SetMods(modifiers=Super);
+ };
+
+ // Sets the "Hyper" virtual modifier
+
+ interpret Hyper_L+Any {
+// useModMapMods= level1;
+ virtualModifier= Hyper;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Hyper_L {
+ action = SetMods(modifiers=Hyper);
+ };
+
+ interpret Hyper_R+Any {
+ //useModMapMods= level1;
+ virtualModifier= Hyper;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Hyper_R {
+ action = SetMods(modifiers=Hyper);
+ };
+
+ // Sets the "ScrollLock" virtual modifier and
+ // makes it actually lock when pressed. Sets
+ // up a map for the scroll lock indicator.
+ interpret Scroll_Lock+Any {
+ virtualModifier= ScrollLock;
+ action = LockMods(modifiers=modMapMods);
+ };
+
+ include "ledscroll"
+
+ include "misc(assign_shift_left_action)"
+};
+
+partial xkb_compatibility "assign_shift_left_action" {
+ // Because of the irrevertable modifier mapping in symbols/pc <LFSH> is
+ // getting bound to the Lock modifier when using
+ // symbols/shift(both_capslock), creating unwanted behaviour.
+ // This is a quirk, to circumvent the problem.
+ interpret Shift_L {
+ action = SetMods(modifiers = Shift);
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/mousekeys b/xorg-server/xkeyboard-config/compat/mousekeys
index fbd2b889a..bdd3d7c5d 100644
--- a/xorg-server/xkeyboard-config/compat/mousekeys
+++ b/xorg-server/xkeyboard-config/compat/mousekeys
@@ -1,205 +1,202 @@
-
-// $Xorg: mousekeys,v 1.3 2000/08/17 19:54:34 cpqbld Exp $
-
-// Interpretations for arrow keys and a bunch of other
-// common keysyms which make it possible to bind "mouse"
-// keys using xmodmap and activate or deactivate them
-// from the keyboard.
-
-default partial xkb_compatibility "mousekeys" {
-
- // Keypad actions.
- //
- interpret.repeat= True;
-
- interpret KP_1 {
- action = MovePtr(x=-1,y= +1);
- };
- interpret KP_End {
- action = MovePtr(x=-1,y= +1);
- };
-
- interpret KP_2 {
- action = MovePtr(x=+0,y= +1);
- };
- interpret KP_Down {
- action = MovePtr(x=+0,y= +1);
- };
-
- interpret KP_3 {
- action = MovePtr(x=+1,y=+1);
- };
- interpret KP_Next {
- action = MovePtr(x=+1,y=+1);
- };
-
- interpret KP_4 {
- action = MovePtr(x=-1,y=+0);
- };
- interpret KP_Left {
- action = MovePtr(x=-1,y=+0);
- };
-
- interpret KP_6 {
- action = MovePtr(x=+1,y=+0);
- };
- interpret KP_Right {
- action = MovePtr(x=+1,y=+0);
- };
-
- interpret KP_7 {
- action = MovePtr(x=-1,y=-1);
- };
- interpret KP_Home {
- action = MovePtr(x=-1,y=-1);
- };
-
- interpret KP_8 {
- action = MovePtr(x=+0,y=-1);
- };
- interpret KP_Up {
- action = MovePtr(x=+0,y=-1);
- };
-
- interpret KP_9 {
- action = MovePtr(x=+1,y=-1);
- };
- interpret KP_Prior {
- action = MovePtr(x=+1,y=-1);
- };
-
- interpret KP_5 {
- action = PointerButton(button=default);
- };
- interpret KP_Begin {
- action = PointerButton(button=default);
- };
-
- interpret KP_F2 {
- action = SetPtrDflt(affect=defaultButton,button=1);
- };
- interpret KP_Divide {
- action = SetPtrDflt(affect=defaultButton,button=1);
- };
-
- interpret KP_F3 {
- action = SetPtrDflt(affect=defaultButton,button=2);
- };
- interpret KP_Multiply {
- action = SetPtrDflt(affect=defaultButton,button=2);
- };
-
- interpret KP_F4 {
- action = SetPtrDflt(affect=defaultButton,button=3);
- };
- interpret KP_Subtract {
- action = SetPtrDflt(affect=defaultButton,button=3);
- };
-
- interpret KP_Separator {
- action = PointerButton(button=default,count=2);
- };
- interpret KP_Add {
- action = PointerButton(button=default,count=2);
- };
-
- interpret KP_0 {
- action = LockPointerButton(button=default,affect=lock);
- };
- interpret KP_Insert {
- action = LockPointerButton(button=default,affect=lock);
- };
-
- interpret KP_Decimal {
- action = LockPointerButton(button=default,affect=unlock);
- };
- interpret KP_Delete {
- action = LockPointerButton(button=default,affect=unlock);
- };
-
- // Additional mappings for Solaris keypad compatibility
- interpret F25 { // aka KP_Divide
- action = SetPtrDflt(affect=defaultButton,button=1);
- };
- interpret F26 { // aka KP_Multiply
- action = SetPtrDflt(affect=defaultButton,button=2);
- };
- interpret F27 { // aka KP_Home
- action = MovePtr(x=-1,y=-1);
- };
- interpret F29 { // aka KP_Prior
- action = MovePtr(x=+1,y=-1);
- };
- interpret F31 { // aka KP_Begin
- action = PointerButton(button=default);
- };
- interpret F33 { // aka KP_End
- action = MovePtr(x=-1,y= +1);
- };
- interpret F35 { // aka KP_Next
- action = MovePtr(x=+1,y=+1);
- };
-
- interpret.repeat= False;
-
-
- // New Keysym Actions.
- //
- interpret Pointer_Button_Dflt {
- action= PointerButton(button=default);
- };
- interpret Pointer_Button1 {
- action= PointerButton(button=1);
- };
- interpret Pointer_Button2 {
- action= PointerButton(button=2);
- };
- interpret Pointer_Button3 {
- action= PointerButton(button=3);
- };
- interpret Pointer_DblClick_Dflt {
- action= PointerButton(button=default,count=2);
- };
- interpret Pointer_DblClick1 {
- action= PointerButton(button=1,count=2);
- };
- interpret Pointer_DblClick2 {
- action= PointerButton(button=2,count=2);
- };
- interpret Pointer_DblClick3 {
- action= PointerButton(button=3,count=2);
- };
- interpret Pointer_Drag_Dflt {
- action= LockPointerButton(button=default);
- };
- interpret Pointer_Drag1 {
- action= LockPointerButton(button=1);
- };
- interpret Pointer_Drag2 {
- action= LockPointerButton(button=2);
- };
- interpret Pointer_Drag3 {
- action= LockPointerButton(button=3);
- };
-
- interpret Pointer_EnableKeys {
- action= LockControls(controls=MouseKeys);
- };
- interpret Pointer_Accelerate {
- action= LockControls(controls=MouseKeysAccel);
- };
- interpret Pointer_DfltBtnNext {
- action= SetPtrDflt(affect=defaultButton,button= +1);
- };
- interpret Pointer_DfltBtnPrev {
- action= SetPtrDflt(affect=defaultButton,button= -1);
- };
-
-
- // Allow an indicator for MouseKeys.
- indicator "Mouse Keys" {
-// !allowExplicit;
- indicatorDrivesKeyboard;
- controls= MouseKeys;
- };
-};
+// Interpretations for arrow keys and a bunch of other
+// common keysyms which make it possible to bind "mouse"
+// keys using xmodmap and activate or deactivate them
+// from the keyboard.
+
+default partial xkb_compatibility "mousekeys" {
+
+ // Keypad actions.
+ //
+ interpret.repeat= True;
+
+ interpret KP_1 {
+ action = MovePtr(x=-1,y= +1);
+ };
+ interpret KP_End {
+ action = MovePtr(x=-1,y= +1);
+ };
+
+ interpret KP_2 {
+ action = MovePtr(x=+0,y= +1);
+ };
+ interpret KP_Down {
+ action = MovePtr(x=+0,y= +1);
+ };
+
+ interpret KP_3 {
+ action = MovePtr(x=+1,y=+1);
+ };
+ interpret KP_Next {
+ action = MovePtr(x=+1,y=+1);
+ };
+
+ interpret KP_4 {
+ action = MovePtr(x=-1,y=+0);
+ };
+ interpret KP_Left {
+ action = MovePtr(x=-1,y=+0);
+ };
+
+ interpret KP_6 {
+ action = MovePtr(x=+1,y=+0);
+ };
+ interpret KP_Right {
+ action = MovePtr(x=+1,y=+0);
+ };
+
+ interpret KP_7 {
+ action = MovePtr(x=-1,y=-1);
+ };
+ interpret KP_Home {
+ action = MovePtr(x=-1,y=-1);
+ };
+
+ interpret KP_8 {
+ action = MovePtr(x=+0,y=-1);
+ };
+ interpret KP_Up {
+ action = MovePtr(x=+0,y=-1);
+ };
+
+ interpret KP_9 {
+ action = MovePtr(x=+1,y=-1);
+ };
+ interpret KP_Prior {
+ action = MovePtr(x=+1,y=-1);
+ };
+
+ interpret KP_5 {
+ action = PointerButton(button=default);
+ };
+ interpret KP_Begin {
+ action = PointerButton(button=default);
+ };
+
+ interpret KP_F2 {
+ action = SetPtrDflt(affect=defaultButton,button=1);
+ };
+ interpret KP_Divide {
+ action = SetPtrDflt(affect=defaultButton,button=1);
+ };
+
+ interpret KP_F3 {
+ action = SetPtrDflt(affect=defaultButton,button=2);
+ };
+ interpret KP_Multiply {
+ action = SetPtrDflt(affect=defaultButton,button=2);
+ };
+
+ interpret KP_F4 {
+ action = SetPtrDflt(affect=defaultButton,button=3);
+ };
+ interpret KP_Subtract {
+ action = SetPtrDflt(affect=defaultButton,button=3);
+ };
+
+ interpret KP_Separator {
+ action = PointerButton(button=default,count=2);
+ };
+ interpret KP_Add {
+ action = PointerButton(button=default,count=2);
+ };
+
+ interpret KP_0 {
+ action = LockPointerButton(button=default,affect=lock);
+ };
+ interpret KP_Insert {
+ action = LockPointerButton(button=default,affect=lock);
+ };
+
+ interpret KP_Decimal {
+ action = LockPointerButton(button=default,affect=unlock);
+ };
+ interpret KP_Delete {
+ action = LockPointerButton(button=default,affect=unlock);
+ };
+
+ // Additional mappings for Solaris keypad compatibility
+ interpret F25 { // aka KP_Divide
+ action = SetPtrDflt(affect=defaultButton,button=1);
+ };
+ interpret F26 { // aka KP_Multiply
+ action = SetPtrDflt(affect=defaultButton,button=2);
+ };
+ interpret F27 { // aka KP_Home
+ action = MovePtr(x=-1,y=-1);
+ };
+ interpret F29 { // aka KP_Prior
+ action = MovePtr(x=+1,y=-1);
+ };
+ interpret F31 { // aka KP_Begin
+ action = PointerButton(button=default);
+ };
+ interpret F33 { // aka KP_End
+ action = MovePtr(x=-1,y= +1);
+ };
+ interpret F35 { // aka KP_Next
+ action = MovePtr(x=+1,y=+1);
+ };
+
+ interpret.repeat= False;
+
+
+ // New Keysym Actions.
+ //
+ interpret Pointer_Button_Dflt {
+ action= PointerButton(button=default);
+ };
+ interpret Pointer_Button1 {
+ action= PointerButton(button=1);
+ };
+ interpret Pointer_Button2 {
+ action= PointerButton(button=2);
+ };
+ interpret Pointer_Button3 {
+ action= PointerButton(button=3);
+ };
+ interpret Pointer_DblClick_Dflt {
+ action= PointerButton(button=default,count=2);
+ };
+ interpret Pointer_DblClick1 {
+ action= PointerButton(button=1,count=2);
+ };
+ interpret Pointer_DblClick2 {
+ action= PointerButton(button=2,count=2);
+ };
+ interpret Pointer_DblClick3 {
+ action= PointerButton(button=3,count=2);
+ };
+ interpret Pointer_Drag_Dflt {
+ action= LockPointerButton(button=default);
+ };
+ interpret Pointer_Drag1 {
+ action= LockPointerButton(button=1);
+ };
+ interpret Pointer_Drag2 {
+ action= LockPointerButton(button=2);
+ };
+ interpret Pointer_Drag3 {
+ action= LockPointerButton(button=3);
+ };
+
+ interpret Pointer_EnableKeys {
+ action= LockControls(controls=MouseKeys);
+ };
+ interpret Pointer_Accelerate {
+ action= LockControls(controls=MouseKeysAccel);
+ };
+ interpret Pointer_DfltBtnNext {
+ action= SetPtrDflt(affect=defaultButton,button= +1);
+ };
+ interpret Pointer_DfltBtnPrev {
+ action= SetPtrDflt(affect=defaultButton,button= -1);
+ };
+
+
+ // Allow an indicator for MouseKeys.
+ indicator "Mouse Keys" {
+// !allowExplicit;
+ indicatorDrivesKeyboard;
+ controls= MouseKeys;
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/norepeat b/xorg-server/xkeyboard-config/compat/norepeat
index 07b0b7a60..1f47d7e17 100644
--- a/xorg-server/xkeyboard-config/compat/norepeat
+++ b/xorg-server/xkeyboard-config/compat/norepeat
@@ -1,11 +1,9 @@
-// $Xorg: norepeat,v 1.3 2000/08/17 19:54:34 cpqbld Exp $
-
-// Put any otherwise normal keys that you don't want to repeat in
-// this file
-
-default partial xkb_compatibility "norepeat" {
- interpret Return {
- action= NoAction();
- repeat= False;
- };
-};
+// Put any otherwise normal keys that you don't want to repeat in
+// this file
+
+default partial xkb_compatibility "norepeat" {
+ interpret Return {
+ action= NoAction();
+ repeat= False;
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/olpc b/xorg-server/xkeyboard-config/compat/olpc
index 001da12c1..b8fe667d2 100644
--- a/xorg-server/xkeyboard-config/compat/olpc
+++ b/xorg-server/xkeyboard-config/compat/olpc
@@ -1,52 +1,51 @@
-// $XKeyboardConfig$
-//
-// Created by Bernardo Innocenti <bernie@codewiz.org>
-//
-// Map the OLPC game keys to virtual modifiers
-//
-
-default xkb_compatibility "olpc" {
- include "complete"
-
- virtual_modifiers Square,Cross,Triangle,Circle;
-
- interpret KP_Home+Any {
- //useModMapMods= level1;
- virtualModifier= Square;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret KP_Home {
- action = SetMods(modifiers=Square);
- };
-
- interpret KP_Next+Any {
- //useModMapMods= level1;
- virtualModifier= Cross;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret KP_Next {
- action = SetMods(modifiers=Cross);
- };
-
- interpret KP_End+Any {
- //useModMapMods= level1;
- virtualModifier= Circle;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret KP_End {
- action = SetMods(modifiers=Circle);
- };
-
- interpret KP_Prior+Any {
- //useModMapMods= level1;
- virtualModifier= Triangle;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret KP_Prior {
- action = SetMods(modifiers=Triangle);
- };
-};
+//
+// Created by Bernardo Innocenti <bernie@codewiz.org>
+//
+// Map the OLPC game keys to virtual modifiers
+//
+
+default xkb_compatibility "olpc" {
+ include "complete"
+
+ virtual_modifiers Square,Cross,Triangle,Circle;
+
+ interpret KP_Home+Any {
+ //useModMapMods= level1;
+ virtualModifier= Square;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret KP_Home {
+ action = SetMods(modifiers=Square);
+ };
+
+ interpret KP_Next+Any {
+ //useModMapMods= level1;
+ virtualModifier= Cross;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret KP_Next {
+ action = SetMods(modifiers=Cross);
+ };
+
+ interpret KP_End+Any {
+ //useModMapMods= level1;
+ virtualModifier= Circle;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret KP_End {
+ action = SetMods(modifiers=Circle);
+ };
+
+ interpret KP_Prior+Any {
+ //useModMapMods= level1;
+ virtualModifier= Triangle;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret KP_Prior {
+ action = SetMods(modifiers=Triangle);
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/pc b/xorg-server/xkeyboard-config/compat/pc
index 5ce7d767d..14ba9c3cc 100644
--- a/xorg-server/xkeyboard-config/compat/pc
+++ b/xorg-server/xkeyboard-config/compat/pc
@@ -1,18 +1,17 @@
-// $Xorg: pc,v 1.3 2000/08/17 19:54:34 cpqbld Exp $
-default partial xkb_compatibility "pc" {
-
- // Sets the "Alt" virtual modifier
-
- virtual_modifiers Alt;
-
- setMods.clearLocks= True;
- interpret Alt_L+Any {
- virtualModifier= Alt;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret Alt_R+Any {
- virtualModifier= Alt;
- action = SetMods(modifiers=modMapMods);
- };
-};
+default partial xkb_compatibility "pc" {
+
+ // Sets the "Alt" virtual modifier
+
+ virtual_modifiers Alt;
+
+ setMods.clearLocks= True;
+ interpret Alt_L+Any {
+ virtualModifier= Alt;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Alt_R+Any {
+ virtualModifier= Alt;
+ action = SetMods(modifiers=modMapMods);
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/pc98 b/xorg-server/xkeyboard-config/compat/pc98
index 23f3f7987..93a620036 100644
--- a/xorg-server/xkeyboard-config/compat/pc98
+++ b/xorg-server/xkeyboard-config/compat/pc98
@@ -1,62 +1,55 @@
-// $Xorg: pc98,v 1.3 2000/08/17 19:54:34 cpqbld Exp $
-
-
-
-
-// $XFree86: xc/programs/xkbcomp/compat/pc98,v 3.1 1997/10/26 13:25:33 dawes Exp $
-
-// Minimal set of symbol interpretations to provide
-// reasonable default behavior (Num lock, shift and
-// caps lock and mode switch) and set up the
-// automatic updating of common keyboard LEDs.
-
-default xkb_compatibility "basic" {
- virtual_modifiers NumLock,AltGr;
-
- interpret.repeat= False;
- setMods.clearLocks= True;
- latchMods.clearLocks= True;
- latchMods.latchToLock= True;
-
- interpret Shift_Lock+AnyOf(Shift+Lock) {
- action= LockMods(modifiers=Shift);
- };
-
-// interpret Any+Lock {
-// action= LockMods(modifiers=Lock);
-// };
-
- interpret Num_Lock+Any {
- virtualModifier= NumLock;
- action= LockMods(modifiers=NumLock);
- };
-
- interpret Mode_switch {
- useModMapMods= level1;
- virtualModifier= AltGr;
- action= SetGroup(group=2,clearLocks);
- };
-
- interpret Any + Any {
- action= SetMods(modifiers=modMapMods);
- };
-
- group 2 = AltGr;
- group 3 = AltGr;
- group 4 = AltGr;
-
- indicator.allowExplicit= False;
- indicator "Caps Lock" {
- whichModState= Locked;
- modifiers= Lock;
- };
- indicator "Num Lock" {
- whichModState= Locked;
- modifiers= NumLock;
- };
- indicator "Shift Lock" {
- whichModState= Locked;
- modifiers= Shift;
- };
- indicator.allowExplicit= True;
-};
+// Minimal set of symbol interpretations to provide
+// reasonable default behavior (Num lock, shift and
+// caps lock and mode switch) and set up the
+// automatic updating of common keyboard LEDs.
+
+default xkb_compatibility "basic" {
+ virtual_modifiers NumLock,AltGr;
+
+ interpret.repeat= False;
+ setMods.clearLocks= True;
+ latchMods.clearLocks= True;
+ latchMods.latchToLock= True;
+
+ interpret Shift_Lock+AnyOf(Shift+Lock) {
+ action= LockMods(modifiers=Shift);
+ };
+
+// interpret Any+Lock {
+// action= LockMods(modifiers=Lock);
+// };
+
+ interpret Num_Lock+Any {
+ virtualModifier= NumLock;
+ action= LockMods(modifiers=NumLock);
+ };
+
+ interpret Mode_switch {
+ useModMapMods= level1;
+ virtualModifier= AltGr;
+ action= SetGroup(group=2,clearLocks);
+ };
+
+ interpret Any + Any {
+ action= SetMods(modifiers=modMapMods);
+ };
+
+ group 2 = AltGr;
+ group 3 = AltGr;
+ group 4 = AltGr;
+
+ indicator.allowExplicit= False;
+ indicator "Caps Lock" {
+ whichModState= Locked;
+ modifiers= Lock;
+ };
+ indicator "Num Lock" {
+ whichModState= Locked;
+ modifiers= NumLock;
+ };
+ indicator "Shift Lock" {
+ whichModState= Locked;
+ modifiers= Shift;
+ };
+ indicator.allowExplicit= True;
+};
diff --git a/xorg-server/xkeyboard-config/compat/xfree86 b/xorg-server/xkeyboard-config/compat/xfree86
index 2da65fd6a..c511ae264 100644
--- a/xorg-server/xkeyboard-config/compat/xfree86
+++ b/xorg-server/xkeyboard-config/compat/xfree86
@@ -1,57 +1,56 @@
-// $XFree86$
-// XFree86 special keysyms
-
-default partial xkb_compatibility "basic" {
-
- interpret.repeat= True;
-
- interpret XF86_Switch_VT_1 {
- action = SwitchScreen(Screen=1, !SameServer);
- };
- interpret XF86_Switch_VT_2 {
- action = SwitchScreen(Screen=2, !SameServer);
- };
- interpret XF86_Switch_VT_3 {
- action = SwitchScreen(Screen=3, !SameServer);
- };
- interpret XF86_Switch_VT_4 {
- action = SwitchScreen(Screen=4, !SameServer);
- };
- interpret XF86_Switch_VT_5 {
- action = SwitchScreen(Screen=5, !SameServer);
- };
- interpret XF86_Switch_VT_6 {
- action = SwitchScreen(Screen=6, !SameServer);
- };
- interpret XF86_Switch_VT_7 {
- action = SwitchScreen(Screen=7, !SameServer);
- };
- interpret XF86_Switch_VT_8 {
- action = SwitchScreen(Screen=8, !SameServer);
- };
- interpret XF86_Switch_VT_9 {
- action = SwitchScreen(Screen=9, !SameServer);
- };
- interpret XF86_Switch_VT_10 {
- action = SwitchScreen(Screen=10, !SameServer);
- };
- interpret XF86_Switch_VT_11 {
- action = SwitchScreen(Screen=11, !SameServer);
- };
- interpret XF86_Switch_VT_12 {
- action = SwitchScreen(Screen=12, !SameServer);
- };
-
- interpret XF86_Ungrab {
- action = Private(type=0x86, data="Ungrab");
- };
- interpret XF86_ClearGrab {
- action = Private(type=0x86, data="ClsGrb");
- };
- interpret XF86_Next_VMode {
- action = Private(type=0x86, data="+VMode");
- };
- interpret XF86_Prev_VMode {
- action = Private(type=0x86, data="-VMode");
- };
-};
+// XFree86 special keysyms
+
+default partial xkb_compatibility "basic" {
+
+ interpret.repeat= True;
+
+ interpret XF86_Switch_VT_1 {
+ action = SwitchScreen(Screen=1, !SameServer);
+ };
+ interpret XF86_Switch_VT_2 {
+ action = SwitchScreen(Screen=2, !SameServer);
+ };
+ interpret XF86_Switch_VT_3 {
+ action = SwitchScreen(Screen=3, !SameServer);
+ };
+ interpret XF86_Switch_VT_4 {
+ action = SwitchScreen(Screen=4, !SameServer);
+ };
+ interpret XF86_Switch_VT_5 {
+ action = SwitchScreen(Screen=5, !SameServer);
+ };
+ interpret XF86_Switch_VT_6 {
+ action = SwitchScreen(Screen=6, !SameServer);
+ };
+ interpret XF86_Switch_VT_7 {
+ action = SwitchScreen(Screen=7, !SameServer);
+ };
+ interpret XF86_Switch_VT_8 {
+ action = SwitchScreen(Screen=8, !SameServer);
+ };
+ interpret XF86_Switch_VT_9 {
+ action = SwitchScreen(Screen=9, !SameServer);
+ };
+ interpret XF86_Switch_VT_10 {
+ action = SwitchScreen(Screen=10, !SameServer);
+ };
+ interpret XF86_Switch_VT_11 {
+ action = SwitchScreen(Screen=11, !SameServer);
+ };
+ interpret XF86_Switch_VT_12 {
+ action = SwitchScreen(Screen=12, !SameServer);
+ };
+
+ interpret XF86_Ungrab {
+ action = Private(type=0x86, data="Ungrab");
+ };
+ interpret XF86_ClearGrab {
+ action = Private(type=0x86, data="ClsGrb");
+ };
+ interpret XF86_Next_VMode {
+ action = Private(type=0x86, data="+VMode");
+ };
+ interpret XF86_Prev_VMode {
+ action = Private(type=0x86, data="-VMode");
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/xtest b/xorg-server/xkeyboard-config/compat/xtest
index a35ced915..6700bedd6 100644
--- a/xorg-server/xkeyboard-config/compat/xtest
+++ b/xorg-server/xkeyboard-config/compat/xtest
@@ -1,58 +1,57 @@
-// $Xorg: xtest,v 1.3 2000/08/17 19:54:34 cpqbld Exp $
-default xkb_compatibility "xtest" {
-
- // Minimal set of symbol interpretations to provide
- // reasonable behavior for testing. The X Test
- // Suite assumes that it can set any modifier by
- // simulating a KeyPress and clear it by simulating
- // a KeyRelease. Because of the way that XKB
- // implements locking/latching modifiers, this
- // approach fails in some cases (typically the
- // lock or num lock modifiers). These symbol
- // interpretations make all modifier keys just
- // set the corresponding modifier so that xtest
- // will see the behavior it expects.
-
- virtual_modifiers NumLock,AltGr;
-
- interpret.repeat= False;
- setMods.clearLocks= True;
- latchMods.clearLocks= True;
- latchMods.latchToLock= False;
-
- interpret Shift_Lock+AnyOf(Shift+Lock) {
- action= SetMods(modifiers=Shift);
- };
-
- interpret Num_Lock+Any {
- virtualModifier= NumLock;
- action= SetMods(modifiers=NumLock);
- };
-
- interpret Mode_switch {
- useModMapMods= level1;
- virtualModifier= AltGr;
- action= SetGroup(group=2);
- };
-
- interpret Any + Any {
- action= SetMods(modifiers=modMapMods);
- };
-
- group 2 = AltGr;
- group 3 = AltGr;
- group 4 = AltGr;
-
- indicator.allowExplicit= False;
- indicator "Caps Lock" {
- modifiers= Lock;
- };
- indicator "Num Lock" {
- modifiers= NumLock;
- };
- indicator "Shift Lock" {
- whichModState= Locked;
- modifiers= Shift;
- };
- indicator.allowExplicit= True;
-};
+default xkb_compatibility "xtest" {
+
+ // Minimal set of symbol interpretations to provide
+ // reasonable behavior for testing. The X Test
+ // Suite assumes that it can set any modifier by
+ // simulating a KeyPress and clear it by simulating
+ // a KeyRelease. Because of the way that XKB
+ // implements locking/latching modifiers, this
+ // approach fails in some cases (typically the
+ // lock or num lock modifiers). These symbol
+ // interpretations make all modifier keys just
+ // set the corresponding modifier so that xtest
+ // will see the behavior it expects.
+
+ virtual_modifiers NumLock,AltGr;
+
+ interpret.repeat= False;
+ setMods.clearLocks= True;
+ latchMods.clearLocks= True;
+ latchMods.latchToLock= False;
+
+ interpret Shift_Lock+AnyOf(Shift+Lock) {
+ action= SetMods(modifiers=Shift);
+ };
+
+ interpret Num_Lock+Any {
+ virtualModifier= NumLock;
+ action= SetMods(modifiers=NumLock);
+ };
+
+ interpret Mode_switch {
+ useModMapMods= level1;
+ virtualModifier= AltGr;
+ action= SetGroup(group=2);
+ };
+
+ interpret Any + Any {
+ action= SetMods(modifiers=modMapMods);
+ };
+
+ group 2 = AltGr;
+ group 3 = AltGr;
+ group 4 = AltGr;
+
+ indicator.allowExplicit= False;
+ indicator "Caps Lock" {
+ modifiers= Lock;
+ };
+ indicator "Num Lock" {
+ modifiers= NumLock;
+ };
+ indicator "Shift Lock" {
+ whichModState= Locked;
+ modifiers= Shift;
+ };
+ indicator.allowExplicit= True;
+};
diff --git a/xorg-server/xkeyboard-config/docs/README.enhancing b/xorg-server/xkeyboard-config/docs/README.enhancing
index 024ea146e..88d6a4edf 100644
--- a/xorg-server/xkeyboard-config/docs/README.enhancing
+++ b/xorg-server/xkeyboard-config/docs/README.enhancing
@@ -1,525 +1,520 @@
- How to further enhance XKB configuration
-
- Kamil Toman, Ivan U. Pascal
-
- 25 November 2002
-
- Abstract
-
- This guide is aimed to relieve one's labour to create a new (inter-
- nationalized) keyboard layout. Unlike other documents this guide
- accents the keymap developer's point of view.
-
-1. Overview
-
-The developer of a new layout should read the xkb protocol specification (The
-X Keyboard Extension: Protocol Specification
-<URL:http://xfree86.org/current/XKBproto.pdf>) at least to clarify for
-himself some xkb-specific terms used in this document and elsewhere in xkb
-configuration. Also it shows wise to understand how the X server and a client
-digest their keyboard inputs (with and without xkb).
-
-A useful source is also Ivan Pascal's text about xkb configuration
-<URL:http://www.tsu.ru/~pascal/en/xkb> often referenced throughout this docu-
-ment.
-
-Note that this document covers only enhancements which are to be made to
-XFree86 version 4.3.x and above.
-
-2. The Basics
-
-At the startup (or at later at user's command) X server starts its xkb key-
-board module extension and reads data from a compiled configuration file.
-
-This compiled configuration file is prepared by the program xkbcomp which
-behaves altogether as an ordinary compiler (see man xkbcomp). Its input are
-human readable xkb configuration files which are verified and then composed
-into a useful xkb configuration. Users don't need to mess with xkbcomp them-
-selves, for them it is invisible. Usually, it is started upon X server
-startup.
-
-As you probably already know, the xkb configuration consists of five main
-modules:
-
- Keycodes
- Tables that defines translation from keyboard scan codes into
- reasonable symbolic names, maximum, minimum legal keycodes, sym-
- bolic aliases and description of physically present LED-indica-
- tors. The primary sence of this component is to allow definitions
- of maps of symbols (see below) to be independent of physical key-
- board scancodes. There are two main naming conventions for sym-
- bolic names (always four bytes long):
-
- o names which express some traditional meaning like <SPCE>
- (stands for space bar) or
-
- o names which express some relative positioning on a key-
- board, for example <AE01> (an exclamation mark on US key-
- boards), on the right there are keys <AE02>, <AE03> etc.
-
- Types
- Types describe how the produced key is changed by active modi-
- fiers (like Shift, Control, Alt, ...). There are several prede-
- fined types which cover most of used combinations.
-
- Compat
- Compatibility component defines internal behaviour of modifiers.
- Using compat component you can assign various actions (elabo-
- rately described in xkb specification) to key events. This is
- also the place where LED-indicators behaviour is defined.
-
- Symbols
- For i18n purposes, this is the most important table. It defines
- what values (=symbols) are assigned to what keycodes (represented
- by their symbolic name, see above). There may be defined more
- than one value for each key and then it depends on a key type and
- on modifiers state (respective compat component) which value will
- be the resulting one.
-
- Geometry
- Geometry files aren't used by xkb itself but they may be used by
- some external programs to depict a keyboard image.
-
-All these components have the files located in xkb configuration tree in sub-
-directories with the same names (usually in /usr/lib/X11/xkb).
-
-3. Enhancing XKB Configuration
-
-Most of xkb enhancements concerns a need to define new output symbols for the
-some input key events. In other words, a need to define a new symbol map (for
-a new language, standard or just to feel more comfortable when typing text).
-
-What do you need to do? Generally, you have to define following things:
-
- o the map of symbols itself
-
- o the rules to allow users to select the new mapping
-
- o the description of the new layout
-
-First of all, it is good to go through existing layouts and to examine them
-if there is something you could easily adjust to fit your needs. Even if
-there is nothing similar you may get some ideas about basic concepts and used
-tricks.
-
-3.1 Levels And Groups
-
-Since XFree86 4.3.0 you can use multi-layout concept of xkb configuration.
-Though it is still in boundaries of xkb protocol and general ideas, the
-keymap designer must obey new rules when creating new maps. In exchange we
-get a more powerful and cleaner configuration system.
-
-Remember that it is the application which must decide which symbol matches
-which keycode according to effective modifier state. The X server itself
-sends only an input event message to. Of course, usually the general inter-
-pretation is processed by Xlib, Xaw, Motif, Qt, Gtk and similar libraries.
-The X server only supplies its mapping table (usually upon an application
-startup).
-
-You can think of the X server's symbol table as of a irregular table where
-each keycode has its row and where each combination of modifiers determines
-exactly one column. The resulting cell then gives the proper symbolic value.
-Not all keycodes need to bind different values for different combination of
-modifiers. <ENTER> key, for instance, usually doesn't depend on any modi-
-fiers so it its row has only one column defined.
-
-Note that in XKB there is no prior assumption that certain modifiers are
-bound to certain columns. By editing proper files (see keytypes (section 4.2,
-page 1)) this mapping can be changed as well.
-
-Unlike the original X protocol the XKB approach is far more flexible. It is
-comfortable to add one additional XKB term - group. You can think of a group
-as of a vector of columns per each keycode (naturally the dimension of this
-vector may differ for different keycodes). What is it good for? The group is
-not very useful unless you intend to use more than one logically different
-set of symbols (like more than one alphabet) defined in a single mapping ta-
-ble. But then, the group has a natural meaning - each symbol set has its own
-group and changing it means selecting a different one. XKB approach allows
-up to four different groups. The columns inside each group are called (shift)
-levels. The X server knows the current group and reports it together with
-modifier set and with a keycode in key events.
-
-To sum it up:
-
- o for each keycode XKB keyboard map contains up to four one-dimensional
- tables - groups (logically different symbol sets)
-
- o for each group of a keycode XKB keyboard map contains some columns -
- shift levels (values reached by combinations of Shift, Ctrl, Alt, ...
- modifiers)
-
- o different keycodes can have different number of groups
-
- o different groups of one keycode can have different number of shift lev-
- els
-
- o the current group number is tracked by X server
-
-It is clear that if you sanely define levels, groups and sanely bind modi-
-fiers and associated actions you can have simultaneously loaded up to four
-different symbol sets where each of them would reside in its own group.
-
-The multi-layout concept provides a facility to manipulate xkb groups and
-symbol definitions in a way that allows almost arbitrary composition of pre-
-defined symbol tables. To keep it fully functional you have to:
-
- o define all symbols only in the first group
-
- o (re)define any modifiers with extra care to avoid strange (anisometric)
- behaviour
-
-4. Defining New Layouts
-
-See Some Words About XKB internals <URL:http://www.tsu.ru/~pas-
-cal/en/xkb/internals.html> for explanation of used xkb terms and problems
-addressed by XKB extension.
-
-See Common notes about XKB configuration files language
-<URL:http://www.tsu.ru/~pascal/en/xkb/gram-common.html> for more precise
-explanation of syntax of xkb configuration files.
-
-4.1 Predefined XKB Symbol Sets
-
-If you are about to define some European symbol map extension, you might want
-to use on of four predefined latin alphabet layouts.
-
-Okay, let's assume you want extend an existing keymap and you want to over-
-ride a few keys. Let's take a simple U.K. keyboard as an example (defined in
-pc/gb):
-
- partial default alphanumeric_keys
- xkb_symbols "basic" {
- include "pc/latin"
-
- name[Group1]="Great Britain";
-
- key <AE02> { [ 2, quotedbl, twosuperior, oneeighth ] };
- key <AE03> { [ 3, sterling, threesuperior, sterling ] };
- key <AC11> { [apostrophe, at, dead_circumflex, dead_caron] };
- key <TLDE> { [ grave, notsign, bar, bar ] };
- key <BKSL> { [numbersign, asciitilde, dead_grave, dead_breve ] };
- key <RALT> { type[Group1]="TWO_LEVEL",
- [ ISO_Level3_Shift, Multi_key ] };
-
- modifier_map Mod5 { <RALT> };
- };
-
-It defines a new layout in basic variant as an extension of common latin
-alphabet layout. The layout (symbol set) name is set to "Great Britain".
-Then there are redefinitions of a few keycodes and a modifiers binding. As
-you can see the number of shift levels is the same for <AE02>, <AE03>,
-<AC11>, <TLDE> and <BKSL> keys but it differs from number of shift levels of
-<RALT>.
-
-Note that the <RALT> key itself is a binding key for Mod5 and that it serves
-like a shift modifier for LevelThree, together with Shift as a multi-key. It
-is a good habit to respect this rule in a new similar layout.
-
-Okay, you could now define more variants of your new layout besides basic
-simply by including (augmenting/overriding/...) the basic definition and
-altering what may be needed.
-
-4.2 Key Types
-
-The differences in the number of columns (shift levels) are caused by a dif-
-ferent types of keys (see the types definition in section basics). Most key-
-codes have implicitly set the keytype in the included "pc/latin" file to
-"FOUR_LEVEL_ALPHABETIC". The only exception is <RALT> keycode which is
-explicitly set "TWO_LEVEL" keytype.
-
-All those names refer to pre-defined shift level schemes. Usually you can
-choose a suitable shift level scheme from default types scheme list in proper
-xkb component's subdirectory.
-
-The most used schemes are:
-
- ONE_LEVEL
- The key does not depend on any modifiers. The symbol from first
- level is always chosen.
-
- TWO_LEVEL
- The key uses a modifier Shift and may have two possible values.
- The second level may be chosen by Shift modifier. If Lock modi-
- fier (usually Caps-lock) applies the symbol is further processed
- using system-specific capitalization rules. If both Shift+Lock
- modifier apply the symbol from the second level is taken and cap-
- italization rules are applied (and usually have no effect).
-
- ALPHABETIC
- The key uses modifiers Shift and Lock. It may have two possible
- values. The second level may be chosen by Shift modifier. When
- Lock modifier applies, the symbol from the first level is taken
- and further processed using system-specific capitalization rules.
- If both Shift+Lock modifier apply the symbol from the first level
- is taken and no capitalization rules applied. This is often
- called shift-cancels-caps behaviour.
-
- THREE_LEVEL
- Is the same as TWO_LEVEL but it considers an extra modifier -
- LevelThree which can be used to gain the symbol value from the
- third level. If both Shift+LevelThree modifiers apply the value
- from the third level is also taken. As in TWO_LEVEL, the Lock
- modifier doesn't influence the resulting level. Only Shift and
- LevelThree are taken into that consideration. If the Lock modi-
- fier is active capitalization rules are applied on the resulting
- symbol.
-
- FOUR_LEVEL
- Is the same as THREE_LEVEL but unlike LEVEL_THREE if both
- Shift+LevelThree modifiers apply the symbol is taken from the
- fourth level.
-
- FOUR_LEVEL_ALPHABETIC
- Is similar to FOUR_LEVEL but also defines shift-cancels-caps
- behaviour as in ALPHABETIC. If Lock+LevelThree apply the symbol
- from the third level is taken and the capitalization rules are
- applied. If Lock+Shift+LevelThree apply the symbol from the
- third level is taken and no capitalization rules are applied.
-
- KEYPAD
- As the name suggest this scheme is primarily used for numeric
- keypads. The scheme considers two modifiers - Shift and NumLock.
- If none of modifiers applies the symbol from the first level is
- taken. If either Shift or NumLock modifiers apply the symbol from
- the second level is taken. If both Shift+NumLock modifiers apply
- the symbol from the first level is taken. Again, shift-cancels-
- caps variant.
-
- FOUR_LEVEL_KEYPAD
- Is similar to KEYPAD scheme but considers also LevelThree modi-
- fier. If LevelThree modifier applies the symbol from the third
- level is taken. If Shift+LevelThree or NumLock+LevelThree apply
- the symbol from the fourth level is taken. If all Shift+Num-
- Lock+LevelThree modifiers apply the symbol from the third level
- is taken. This also, shift-cancels-caps variant.
-
- FOUR_LEVEL_MIXED_KEYPAD
- A four-level keypad scheme where the first two levels are similar
- to the KEYPAD scheme (NumLock+Shift)
- LevelThree acts as an override providing access to two Shift-ed
- levels. When LevelThree is active we totally ignore NumLock state
- Intended for the digit area of the keypad
-
- FOUR_LEVEL_X
- A four-level scheme where the base level accepts no modifier,
- LevelThree provides two more Shift-ed levels like in the previous
- scheme, and Ctrl+Alt controls the fourth level
- Intended for the operator part of a keypad, though since NumLock
- plays no part, it is not keypad-specific
-
-Besides that, there are several schemes for special purposes:
-
- PC_CONTROL_LEVEL2
- It is similar to TWO_LEVEL scheme but it considers the Control
- modifier rather than Shift. That means, the symbol from the sec-
- ond level is chosen by Control rather than by Shift.
-
- PC_ALT_LEVEL2
- It is similar to TWO_LEVEL scheme but it considers the Alt modi-
- fier rather than Shift. That means, the symbol from the second
- level is chosen by Alt rather than by Shift.
-
- CTRL+ALT
- The key uses modifiers Alt and Control. It may have two possible
- values. If only one modifier (Alt or Control) applies the symbol
- from the first level is chosen. Only if both Alt+Control modi-
- fiers apply the symbol from the second level is chosen.
-
- SHIFT+ALT
- The key uses modifiers Shift and Alt. It may have two possible
- values. If only one modifier (Alt or Shift) applies the symbol
- from the first level is chosen. Only if both Alt+Shift modifiers
- apply the symbol from the second level is chosen.
-
-If needed, special caps schemes may be used. They redefine the standard
-behaviour of all *ALPHABETIC types. The layouts (maps of symbols) with keys
-defined in respective types then automatically change their behaviour accord-
-ingly. Possible redefinitions are:
-
- o internal
-
- o internal_nocancel
-
- o shift
-
- o shift_nocancel
-
-None of these schemes should be used directly. They are defined merely for
-'caps:' xkb options (used to globally change the layouts behaviour).
-
-Don't alter any of existing key types. If you need a different behaviour cre-
-ate a new one.
-
-4.2.1 More On Definitions Of Types
-
-When the XKB software deals with a separate type description it gets a com-
-plete list of modifiers that should be taken into account from the 'modi-
-fiers=<list of modifiers>' list and expects that a set of 'map[<combination
-of modifiers>]=<list of modifiers>' instructions that contain the mapping for
-each combination of modifiers mentioned in that list. Modifiers that are not
-explicitly listed are NOT taken into account when the resulting shift level
-is computed. If some combination is omitted the program (subroutine) should
-choose the first level for this combination (a quite reasonable behavior).
-
-Lets consider an example with two modifiers ModOne and ModTwo:
-
- type "..." {
- modifiers = ModOne+ModTwo;
- map[None] = Level1;
- map[ModOne] = Level2;
- };
-
-In this case the map statements for ModTwo only and ModOne+ModTwo are omit-
-ted. It means that if the ModTwo is active the subroutine can't found
-explicit mapping for such combination an will use the default level i.e.
-Level1.
-
-But in the case the type described as:
-
- type "..." {
- modifiers = ModOne;
- map[None] = Level1;
- map[ModOne] = Level2;
- };
-
-the ModTwo will not be taken into account and the resulting level depends on
-the ModOne state only. That means, ModTwo alone produces the Level1 but the
-combination ModOne+ModTwo produces the Level2 as well as ModOne alone.
-
-What does it mean if the second modifier is the Lock? It means that in the
-first case (the Lock itself is included in the list of modifiers but combina-
-tions with this modifier aren't mentioned in the map statements) the internal
-capitalization rules will be applied to the symbol from the first level. But
-in the second case the capitalization will be applied to the symbol chosen
-accordingly to he first modifier - and this can be the symbol from the first
-as well as from the second level.
-
-Usually, all modifiers introduced in 'modifiers=<list of modifiers>' list are
-used for shift level calculation and then discarded. Sometimes this is not
-desirable. If you want to use a modifier for shift level calculation but you
-don't want to discard it, you may list in 'preserve[<combination of modi-
-fiers>]=<list of modifiers>'. That means, for a given combination all listed
-modifiers will be preserved. If the Lock modifier is preserved then the
-resulting symbol is passed to internal capitalization routine regardless
-whether it has been used for a shift level calculation or not.
-
-Any key type description can use both real and virtual modifiers. Since real
-modifiers always have standard names it is not necessary to explicitly
-declare them. Virtual modifiers can have arbitrary names and can be declared
-(prior using them) directly in key type definition:
-
- virtual_modifiers <comma-separated list of modifiers> ;
-
-as seen in for example basic, pc or mousekeys key type definitions.
-
-4.3 Rules
-
-Once you are finished with your symbol map you need to add it to rules file.
-The rules file describes how all the five basic keycodes, types, compat, sym-
-bols and geometry components should be composed to give a sensible resulting
-xkb configuration.
-
-The main advantage of rules over formerly used keymaps is a possibility to
-simply parameterize (once) fixed patterns of configurations and thus to ele-
-gantly allow substitutions of various local configurations into predefined
-templates.
-
-A pattern in a rules file (often located in /usr/lib/X11/xkb/rules) can be
-parameterized with four other arguments: Model, Layout, Variant and Options.
-For most cases parameters model and layout should be sufficient for choosing
-a functional keyboard mapping.
-
-The rules file itself is composed of pattern lines and lines with rules. The
-pattern line starts with an exclamation mark ('!') and describes how will the
-xkb interpret the following lines (rules). A sample rules file looks like
-this:
-
- ! model = keycodes
- macintosh_old = macintosh
- ...
- * = xfree86
-
- ! model = symbols
- hp = +inet(%m)
- microsoftpro = +inet(%m)
- geniuscomfy = +inet(%m)
-
- ! model layout[1] = symbols
- macintosh us = macintosh/us%(v[1])
- * * = pc/pc(%m)+pc/%l[1]%(v[1])
-
- ! model layout[2] = symbols
- macintosh us = +macintosh/us[2]%(v[2]):2
- * * = +pc/%l[2]%(v[2]):2
-
- ! option = types
- caps:internal = +caps(internal)
- caps:internal_nocancel = +caps(internal_nocancel)
-
-Each rule defines what certain combination of values on the left side of
-equal sign ('=') results in. For example a (keyboard) model macintosh_old
-instructs xkb to take definitions of keycodes from file keycodes/macintosh
-while the rest of models (represented by a wild card '*') instructs it to
-take them from file keycodes/xfree86. The wild card represents all possible
-values on the left side which were not found in any of the previous rules.
-The more specialized (more complete) rules have higher precedence than gen-
-eral ones, i.e. the more general rules supply reasonable default values.
-
-As you can see some lines contain substitution parameters - the parameters
-preceded by the percent sign ('%'). The first alphabetical character after
-the percent sign expands to the value which has been found on the left side.
-For example +%l%(v) expands into +cz(bksl) if the respective values on the
-left side were cz layout in its bksl variant. More, if the layout resp. vari-
-ant parameter is followed by a pair of brackets ('[', ']') it means that xkb
-should place the layout resp. variant into specified xkb group. If the brack-
-ets are omitted the first group is the default value.
-
-So the second block of rules enhances symbol definitions for some particular
-keyboard models with extra keys (for internet, multimedia, ...) . Other mod-
-els are left intact. Similarly, the last block overrides some key type defi-
-nitions, so the common global behaviour ''shift cancels caps'' or ''shift
-doesn't cancel caps'' can be selected. The rest of rules produces special
-symbols for each variant us layout of macintosh keyboard and standard pc sym-
-bols in appropriate variants as a default.
-
-4.4 Descriptive Files of Rules
-
-Now you just need to add a detailed description to <rules>.xml description
-file so the other users (and external programs which often parse this file)
-know what is your work about.
-
-4.4.1 Old Descriptive Files
-
-The formerly used descriptive files were named <rules>.lst Its structure is
-very simple and quite self descriptive but such simplicity had also some cav-
-ities, for example there was no way how to describe local variants of layouts
-and there were problems with the localization of descriptions. To preserve
-compatibility with some older programs, new XML descriptive files can be con-
-verted to old format '.lst'.
-
-For each parameter of rules file should be described its meaning. For the
-rules file described above the .lst file could look like:
-
- ! model
- pc104 Generic 104-key PC
- microsoft Microsoft Natural
- pc98 PC-98xx Series
- macintosh Original Macintosh
- ...
-
- ! layout
- us U.S. English
- cz Czech
- de German
- ...
-
- ! option
- caps:internal uses internal capitalization. Shift cancels Caps
- caps:internal_nocancel uses internal capitalization. Shift doesn't cancel Caps
-
-And that should be it. Enjoy creating your own xkb mapping.
-
- Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/XKB-Enhancing.sgml,v 1.2 dawes Exp $
-
-
-$XFree86: xc/programs/xkbcomp/README.enhancing,v 1.5 2003/10/19 19:57:44 dawes Exp $
+ How to further enhance XKB configuration
+
+ Kamil Toman, Ivan U. Pascal
+
+ 25 November 2002
+
+ Abstract
+
+ This guide is aimed to relieve one's labour to create a new (inter-
+ nationalized) keyboard layout. Unlike other documents this guide
+ accents the keymap developer's point of view.
+
+1. Overview
+
+The developer of a new layout should read the xkb protocol specification (The
+X Keyboard Extension: Protocol Specification
+<URL:http://xfree86.org/current/XKBproto.pdf>) at least to clarify for
+himself some xkb-specific terms used in this document and elsewhere in xkb
+configuration. Also it shows wise to understand how the X server and a client
+digest their keyboard inputs (with and without xkb).
+
+A useful source is also Ivan Pascal's text about xkb configuration
+<URL:http://www.tsu.ru/~pascal/en/xkb> often referenced throughout this docu-
+ment.
+
+Note that this document covers only enhancements which are to be made to
+XFree86 version 4.3.x and above.
+
+2. The Basics
+
+At the startup (or at later at user's command) X server starts its xkb key-
+board module extension and reads data from a compiled configuration file.
+
+This compiled configuration file is prepared by the program xkbcomp which
+behaves altogether as an ordinary compiler (see man xkbcomp). Its input are
+human readable xkb configuration files which are verified and then composed
+into a useful xkb configuration. Users don't need to mess with xkbcomp them-
+selves, for them it is invisible. Usually, it is started upon X server
+startup.
+
+As you probably already know, the xkb configuration consists of five main
+modules:
+
+ Keycodes
+ Tables that defines translation from keyboard scan codes into
+ reasonable symbolic names, maximum, minimum legal keycodes, sym-
+ bolic aliases and description of physically present LED-indica-
+ tors. The primary sence of this component is to allow definitions
+ of maps of symbols (see below) to be independent of physical key-
+ board scancodes. There are two main naming conventions for sym-
+ bolic names (always four bytes long):
+
+ o names which express some traditional meaning like <SPCE>
+ (stands for space bar) or
+
+ o names which express some relative positioning on a key-
+ board, for example <AE01> (an exclamation mark on US key-
+ boards), on the right there are keys <AE02>, <AE03> etc.
+
+ Types
+ Types describe how the produced key is changed by active modi-
+ fiers (like Shift, Control, Alt, ...). There are several prede-
+ fined types which cover most of used combinations.
+
+ Compat
+ Compatibility component defines internal behaviour of modifiers.
+ Using compat component you can assign various actions (elabo-
+ rately described in xkb specification) to key events. This is
+ also the place where LED-indicators behaviour is defined.
+
+ Symbols
+ For i18n purposes, this is the most important table. It defines
+ what values (=symbols) are assigned to what keycodes (represented
+ by their symbolic name, see above). There may be defined more
+ than one value for each key and then it depends on a key type and
+ on modifiers state (respective compat component) which value will
+ be the resulting one.
+
+ Geometry
+ Geometry files aren't used by xkb itself but they may be used by
+ some external programs to depict a keyboard image.
+
+All these components have the files located in xkb configuration tree in sub-
+directories with the same names (usually in /usr/lib/X11/xkb).
+
+3. Enhancing XKB Configuration
+
+Most of xkb enhancements concerns a need to define new output symbols for the
+some input key events. In other words, a need to define a new symbol map (for
+a new language, standard or just to feel more comfortable when typing text).
+
+What do you need to do? Generally, you have to define following things:
+
+ o the map of symbols itself
+
+ o the rules to allow users to select the new mapping
+
+ o the description of the new layout
+
+First of all, it is good to go through existing layouts and to examine them
+if there is something you could easily adjust to fit your needs. Even if
+there is nothing similar you may get some ideas about basic concepts and used
+tricks.
+
+3.1 Levels And Groups
+
+Since XFree86 4.3.0 you can use multi-layout concept of xkb configuration.
+Though it is still in boundaries of xkb protocol and general ideas, the
+keymap designer must obey new rules when creating new maps. In exchange we
+get a more powerful and cleaner configuration system.
+
+Remember that it is the application which must decide which symbol matches
+which keycode according to effective modifier state. The X server itself
+sends only an input event message to. Of course, usually the general inter-
+pretation is processed by Xlib, Xaw, Motif, Qt, Gtk and similar libraries.
+The X server only supplies its mapping table (usually upon an application
+startup).
+
+You can think of the X server's symbol table as of a irregular table where
+each keycode has its row and where each combination of modifiers determines
+exactly one column. The resulting cell then gives the proper symbolic value.
+Not all keycodes need to bind different values for different combination of
+modifiers. <ENTER> key, for instance, usually doesn't depend on any modi-
+fiers so it its row has only one column defined.
+
+Note that in XKB there is no prior assumption that certain modifiers are
+bound to certain columns. By editing proper files (see keytypes (section 4.2,
+page 1)) this mapping can be changed as well.
+
+Unlike the original X protocol the XKB approach is far more flexible. It is
+comfortable to add one additional XKB term - group. You can think of a group
+as of a vector of columns per each keycode (naturally the dimension of this
+vector may differ for different keycodes). What is it good for? The group is
+not very useful unless you intend to use more than one logically different
+set of symbols (like more than one alphabet) defined in a single mapping ta-
+ble. But then, the group has a natural meaning - each symbol set has its own
+group and changing it means selecting a different one. XKB approach allows
+up to four different groups. The columns inside each group are called (shift)
+levels. The X server knows the current group and reports it together with
+modifier set and with a keycode in key events.
+
+To sum it up:
+
+ o for each keycode XKB keyboard map contains up to four one-dimensional
+ tables - groups (logically different symbol sets)
+
+ o for each group of a keycode XKB keyboard map contains some columns -
+ shift levels (values reached by combinations of Shift, Ctrl, Alt, ...
+ modifiers)
+
+ o different keycodes can have different number of groups
+
+ o different groups of one keycode can have different number of shift lev-
+ els
+
+ o the current group number is tracked by X server
+
+It is clear that if you sanely define levels, groups and sanely bind modi-
+fiers and associated actions you can have simultaneously loaded up to four
+different symbol sets where each of them would reside in its own group.
+
+The multi-layout concept provides a facility to manipulate xkb groups and
+symbol definitions in a way that allows almost arbitrary composition of pre-
+defined symbol tables. To keep it fully functional you have to:
+
+ o define all symbols only in the first group
+
+ o (re)define any modifiers with extra care to avoid strange (anisometric)
+ behaviour
+
+4. Defining New Layouts
+
+See Some Words About XKB internals <URL:http://www.tsu.ru/~pas-
+cal/en/xkb/internals.html> for explanation of used xkb terms and problems
+addressed by XKB extension.
+
+See Common notes about XKB configuration files language
+<URL:http://www.tsu.ru/~pascal/en/xkb/gram-common.html> for more precise
+explanation of syntax of xkb configuration files.
+
+4.1 Predefined XKB Symbol Sets
+
+If you are about to define some European symbol map extension, you might want
+to use on of four predefined latin alphabet layouts.
+
+Okay, let's assume you want extend an existing keymap and you want to over-
+ride a few keys. Let's take a simple U.K. keyboard as an example (defined in
+pc/gb):
+
+ partial default alphanumeric_keys
+ xkb_symbols "basic" {
+ include "pc/latin"
+
+ name[Group1]="Great Britain";
+
+ key <AE02> { [ 2, quotedbl, twosuperior, oneeighth ] };
+ key <AE03> { [ 3, sterling, threesuperior, sterling ] };
+ key <AC11> { [apostrophe, at, dead_circumflex, dead_caron] };
+ key <TLDE> { [ grave, notsign, bar, bar ] };
+ key <BKSL> { [numbersign, asciitilde, dead_grave, dead_breve ] };
+ key <RALT> { type[Group1]="TWO_LEVEL",
+ [ ISO_Level3_Shift, Multi_key ] };
+
+ modifier_map Mod5 { <RALT> };
+ };
+
+It defines a new layout in basic variant as an extension of common latin
+alphabet layout. The layout (symbol set) name is set to "Great Britain".
+Then there are redefinitions of a few keycodes and a modifiers binding. As
+you can see the number of shift levels is the same for <AE02>, <AE03>,
+<AC11>, <TLDE> and <BKSL> keys but it differs from number of shift levels of
+<RALT>.
+
+Note that the <RALT> key itself is a binding key for Mod5 and that it serves
+like a shift modifier for LevelThree, together with Shift as a multi-key. It
+is a good habit to respect this rule in a new similar layout.
+
+Okay, you could now define more variants of your new layout besides basic
+simply by including (augmenting/overriding/...) the basic definition and
+altering what may be needed.
+
+4.2 Key Types
+
+The differences in the number of columns (shift levels) are caused by a dif-
+ferent types of keys (see the types definition in section basics). Most key-
+codes have implicitly set the keytype in the included "pc/latin" file to
+"FOUR_LEVEL_ALPHABETIC". The only exception is <RALT> keycode which is
+explicitly set "TWO_LEVEL" keytype.
+
+All those names refer to pre-defined shift level schemes. Usually you can
+choose a suitable shift level scheme from default types scheme list in proper
+xkb component's subdirectory.
+
+The most used schemes are:
+
+ ONE_LEVEL
+ The key does not depend on any modifiers. The symbol from first
+ level is always chosen.
+
+ TWO_LEVEL
+ The key uses a modifier Shift and may have two possible values.
+ The second level may be chosen by Shift modifier. If Lock modi-
+ fier (usually Caps-lock) applies the symbol is further processed
+ using system-specific capitalization rules. If both Shift+Lock
+ modifier apply the symbol from the second level is taken and cap-
+ italization rules are applied (and usually have no effect).
+
+ ALPHABETIC
+ The key uses modifiers Shift and Lock. It may have two possible
+ values. The second level may be chosen by Shift modifier. When
+ Lock modifier applies, the symbol from the first level is taken
+ and further processed using system-specific capitalization rules.
+ If both Shift+Lock modifier apply the symbol from the first level
+ is taken and no capitalization rules applied. This is often
+ called shift-cancels-caps behaviour.
+
+ THREE_LEVEL
+ Is the same as TWO_LEVEL but it considers an extra modifier -
+ LevelThree which can be used to gain the symbol value from the
+ third level. If both Shift+LevelThree modifiers apply the value
+ from the third level is also taken. As in TWO_LEVEL, the Lock
+ modifier doesn't influence the resulting level. Only Shift and
+ LevelThree are taken into that consideration. If the Lock modi-
+ fier is active capitalization rules are applied on the resulting
+ symbol.
+
+ FOUR_LEVEL
+ Is the same as THREE_LEVEL but unlike LEVEL_THREE if both
+ Shift+LevelThree modifiers apply the symbol is taken from the
+ fourth level.
+
+ FOUR_LEVEL_ALPHABETIC
+ Is similar to FOUR_LEVEL but also defines shift-cancels-caps
+ behaviour as in ALPHABETIC. If Lock+LevelThree apply the symbol
+ from the third level is taken and the capitalization rules are
+ applied. If Lock+Shift+LevelThree apply the symbol from the
+ third level is taken and no capitalization rules are applied.
+
+ KEYPAD
+ As the name suggest this scheme is primarily used for numeric
+ keypads. The scheme considers two modifiers - Shift and NumLock.
+ If none of modifiers applies the symbol from the first level is
+ taken. If either Shift or NumLock modifiers apply the symbol from
+ the second level is taken. If both Shift+NumLock modifiers apply
+ the symbol from the first level is taken. Again, shift-cancels-
+ caps variant.
+
+ FOUR_LEVEL_KEYPAD
+ Is similar to KEYPAD scheme but considers also LevelThree modi-
+ fier. If LevelThree modifier applies the symbol from the third
+ level is taken. If Shift+LevelThree or NumLock+LevelThree apply
+ the symbol from the fourth level is taken. If all Shift+Num-
+ Lock+LevelThree modifiers apply the symbol from the third level
+ is taken. This also, shift-cancels-caps variant.
+
+ FOUR_LEVEL_MIXED_KEYPAD
+ A four-level keypad scheme where the first two levels are similar
+ to the KEYPAD scheme (NumLock+Shift)
+ LevelThree acts as an override providing access to two Shift-ed
+ levels. When LevelThree is active we totally ignore NumLock state
+ Intended for the digit area of the keypad
+
+ FOUR_LEVEL_X
+ A four-level scheme where the base level accepts no modifier,
+ LevelThree provides two more Shift-ed levels like in the previous
+ scheme, and Ctrl+Alt controls the fourth level
+ Intended for the operator part of a keypad, though since NumLock
+ plays no part, it is not keypad-specific
+
+Besides that, there are several schemes for special purposes:
+
+ PC_CONTROL_LEVEL2
+ It is similar to TWO_LEVEL scheme but it considers the Control
+ modifier rather than Shift. That means, the symbol from the sec-
+ ond level is chosen by Control rather than by Shift.
+
+ PC_ALT_LEVEL2
+ It is similar to TWO_LEVEL scheme but it considers the Alt modi-
+ fier rather than Shift. That means, the symbol from the second
+ level is chosen by Alt rather than by Shift.
+
+ CTRL+ALT
+ The key uses modifiers Alt and Control. It may have two possible
+ values. If only one modifier (Alt or Control) applies the symbol
+ from the first level is chosen. Only if both Alt+Control modi-
+ fiers apply the symbol from the second level is chosen.
+
+ SHIFT+ALT
+ The key uses modifiers Shift and Alt. It may have two possible
+ values. If only one modifier (Alt or Shift) applies the symbol
+ from the first level is chosen. Only if both Alt+Shift modifiers
+ apply the symbol from the second level is chosen.
+
+If needed, special caps schemes may be used. They redefine the standard
+behaviour of all *ALPHABETIC types. The layouts (maps of symbols) with keys
+defined in respective types then automatically change their behaviour accord-
+ingly. Possible redefinitions are:
+
+ o internal
+
+ o internal_nocancel
+
+ o shift
+
+ o shift_nocancel
+
+None of these schemes should be used directly. They are defined merely for
+'caps:' xkb options (used to globally change the layouts behaviour).
+
+Don't alter any of existing key types. If you need a different behaviour cre-
+ate a new one.
+
+4.2.1 More On Definitions Of Types
+
+When the XKB software deals with a separate type description it gets a com-
+plete list of modifiers that should be taken into account from the 'modi-
+fiers=<list of modifiers>' list and expects that a set of 'map[<combination
+of modifiers>]=<list of modifiers>' instructions that contain the mapping for
+each combination of modifiers mentioned in that list. Modifiers that are not
+explicitly listed are NOT taken into account when the resulting shift level
+is computed. If some combination is omitted the program (subroutine) should
+choose the first level for this combination (a quite reasonable behavior).
+
+Lets consider an example with two modifiers ModOne and ModTwo:
+
+ type "..." {
+ modifiers = ModOne+ModTwo;
+ map[None] = Level1;
+ map[ModOne] = Level2;
+ };
+
+In this case the map statements for ModTwo only and ModOne+ModTwo are omit-
+ted. It means that if the ModTwo is active the subroutine can't found
+explicit mapping for such combination an will use the default level i.e.
+Level1.
+
+But in the case the type described as:
+
+ type "..." {
+ modifiers = ModOne;
+ map[None] = Level1;
+ map[ModOne] = Level2;
+ };
+
+the ModTwo will not be taken into account and the resulting level depends on
+the ModOne state only. That means, ModTwo alone produces the Level1 but the
+combination ModOne+ModTwo produces the Level2 as well as ModOne alone.
+
+What does it mean if the second modifier is the Lock? It means that in the
+first case (the Lock itself is included in the list of modifiers but combina-
+tions with this modifier aren't mentioned in the map statements) the internal
+capitalization rules will be applied to the symbol from the first level. But
+in the second case the capitalization will be applied to the symbol chosen
+accordingly to he first modifier - and this can be the symbol from the first
+as well as from the second level.
+
+Usually, all modifiers introduced in 'modifiers=<list of modifiers>' list are
+used for shift level calculation and then discarded. Sometimes this is not
+desirable. If you want to use a modifier for shift level calculation but you
+don't want to discard it, you may list in 'preserve[<combination of modi-
+fiers>]=<list of modifiers>'. That means, for a given combination all listed
+modifiers will be preserved. If the Lock modifier is preserved then the
+resulting symbol is passed to internal capitalization routine regardless
+whether it has been used for a shift level calculation or not.
+
+Any key type description can use both real and virtual modifiers. Since real
+modifiers always have standard names it is not necessary to explicitly
+declare them. Virtual modifiers can have arbitrary names and can be declared
+(prior using them) directly in key type definition:
+
+ virtual_modifiers <comma-separated list of modifiers> ;
+
+as seen in for example basic, pc or mousekeys key type definitions.
+
+4.3 Rules
+
+Once you are finished with your symbol map you need to add it to rules file.
+The rules file describes how all the five basic keycodes, types, compat, sym-
+bols and geometry components should be composed to give a sensible resulting
+xkb configuration.
+
+The main advantage of rules over formerly used keymaps is a possibility to
+simply parameterize (once) fixed patterns of configurations and thus to ele-
+gantly allow substitutions of various local configurations into predefined
+templates.
+
+A pattern in a rules file (often located in /usr/lib/X11/xkb/rules) can be
+parameterized with four other arguments: Model, Layout, Variant and Options.
+For most cases parameters model and layout should be sufficient for choosing
+a functional keyboard mapping.
+
+The rules file itself is composed of pattern lines and lines with rules. The
+pattern line starts with an exclamation mark ('!') and describes how will the
+xkb interpret the following lines (rules). A sample rules file looks like
+this:
+
+ ! model = keycodes
+ macintosh_old = macintosh
+ ...
+ * = xfree86
+
+ ! model = symbols
+ hp = +inet(%m)
+ microsoftpro = +inet(%m)
+ geniuscomfy = +inet(%m)
+
+ ! model layout[1] = symbols
+ macintosh us = macintosh/us%(v[1])
+ * * = pc/pc(%m)+pc/%l[1]%(v[1])
+
+ ! model layout[2] = symbols
+ macintosh us = +macintosh/us[2]%(v[2]):2
+ * * = +pc/%l[2]%(v[2]):2
+
+ ! option = types
+ caps:internal = +caps(internal)
+ caps:internal_nocancel = +caps(internal_nocancel)
+
+Each rule defines what certain combination of values on the left side of
+equal sign ('=') results in. For example a (keyboard) model macintosh_old
+instructs xkb to take definitions of keycodes from file keycodes/macintosh
+while the rest of models (represented by a wild card '*') instructs it to
+take them from file keycodes/xfree86. The wild card represents all possible
+values on the left side which were not found in any of the previous rules.
+The more specialized (more complete) rules have higher precedence than gen-
+eral ones, i.e. the more general rules supply reasonable default values.
+
+As you can see some lines contain substitution parameters - the parameters
+preceded by the percent sign ('%'). The first alphabetical character after
+the percent sign expands to the value which has been found on the left side.
+For example +%l%(v) expands into +cz(bksl) if the respective values on the
+left side were cz layout in its bksl variant. More, if the layout resp. vari-
+ant parameter is followed by a pair of brackets ('[', ']') it means that xkb
+should place the layout resp. variant into specified xkb group. If the brack-
+ets are omitted the first group is the default value.
+
+So the second block of rules enhances symbol definitions for some particular
+keyboard models with extra keys (for internet, multimedia, ...) . Other mod-
+els are left intact. Similarly, the last block overrides some key type defi-
+nitions, so the common global behaviour ''shift cancels caps'' or ''shift
+doesn't cancel caps'' can be selected. The rest of rules produces special
+symbols for each variant us layout of macintosh keyboard and standard pc sym-
+bols in appropriate variants as a default.
+
+4.4 Descriptive Files of Rules
+
+Now you just need to add a detailed description to <rules>.xml description
+file so the other users (and external programs which often parse this file)
+know what is your work about.
+
+4.4.1 Old Descriptive Files
+
+The formerly used descriptive files were named <rules>.lst Its structure is
+very simple and quite self descriptive but such simplicity had also some cav-
+ities, for example there was no way how to describe local variants of layouts
+and there were problems with the localization of descriptions. To preserve
+compatibility with some older programs, new XML descriptive files can be con-
+verted to old format '.lst'.
+
+For each parameter of rules file should be described its meaning. For the
+rules file described above the .lst file could look like:
+
+ ! model
+ pc104 Generic 104-key PC
+ microsoft Microsoft Natural
+ pc98 PC-98xx Series
+ macintosh Original Macintosh
+ ...
+
+ ! layout
+ us U.S. English
+ cz Czech
+ de German
+ ...
+
+ ! option
+ caps:internal uses internal capitalization. Shift cancels Caps
+ caps:internal_nocancel uses internal capitalization. Shift doesn't cancel Caps
+
+And that should be it. Enjoy creating your own xkb mapping.
diff --git a/xorg-server/xkeyboard-config/geometry/amiga b/xorg-server/xkeyboard-config/geometry/amiga
index 357c4c0e1..79793eabf 100644
--- a/xorg-server/xkeyboard-config/geometry/amiga
+++ b/xorg-server/xkeyboard-config/geometry/amiga
@@ -1,270 +1,264 @@
-// $Xorg: amiga,v 1.3 2000/08/17 19:54:35 cpqbld Exp $
-
-
-
-// $XFree86: xc/programs/xkbcomp/geometry/amiga,v 3.2 1997/10/26 13:25:34 dawes Exp $
-
-default xkb_geometry "usa1" {
-
- description= "Amiga (usa1)";
- width= 490;
- height= 175;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "FCTS" { { [ 23,18] }, { [2,1], [ 21,17] } };
- shape "TLDE" { { [ 28,18] }, { [2,1], [ 21,17] } };
- shape "TABK" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "CTRL" { { [ 23,18] }, { [2,1], [ 21,17] } };
- shape "CAPS" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "RTRN" {
- approx = { [ 16, 0], [42,37] },
- { [16, 0], [42, 0], [42,37],
- [ 0,37], [ 0,19], [16,19] },
- { [18, 1], [40, 1], [40,36],
- [ 2,36], [ 2,20], [18,20] } };
- shape "LFSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
- shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
- shape "MODK" { { [ 23,18] }, { [2,1], [ 21,17] } };
- shape "SPCE" { { [172,18] }, { [2,1], [170,17] } };
- shape "DELE" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
-
- section.left= 22;
- row.left= 1;
- key.shape= "FCTS";
- key.gap= 1;
- section "Function" {
- top= 28;
- row {
- top= 1;
- keys { { <ESC>, shape="NORM" },
- { <FK01>, 9 }, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 9 }, <FK07>, <FK08>, <FK09>, <FK10>
- };
- };
- }; // End of "Function" section
-
- key.shape= "NORM";
- section "Alpha" {
- top= 56;
- row {
- top= 1;
- keys { { <TLDE>, shape="TLDE" },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- <BKSL>, { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN", -15 }
- };
- };
- row {
- top= 39;
- keys { { <LCTL>, "CTRL" }, { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- keys { { <LALT>, 10 }, <LAMI>,
- { <SPCE>, "SPCE" },
- <RAMI>, <RALT>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 56;
- left= 326;
- row {
- top= 1;
- key.shape = "DELE";
- keys { <DELE>, <HELP> };
- };
- row {
- top= 39;
- left = 20;
- keys { <UP> };
- };
- row {
- top= 58;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 56;
- left= 392;
- row {
- top= 1;
- keys { <KPLP>, <KPRP>, <KPDV>, <KPMU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, <KPAD> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDC> };
- };
- }; // End of "Keypad" section
-
-};
-
-xkb_geometry "de" {
-
- description= "Amiga (de)";
- width= 490;
- height= 175;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "FCTS" { { [ 23,18] }, { [2,1], [ 21,17] } };
- shape "TLDE" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "TABK" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "CTRL" { { [ 23,18] }, { [2,1], [ 21,17] } };
- shape "CAPS" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "RTRN" {
- { [ 0, 0], [28,0], [28,37], [5,37], [5,18], [ 0,18] },
- { [ 2, 1], [26,1], [26,36], [7,36], [7,17], [ 2,17] } };
- shape "LFSH" { { [ 32,18] }, { [2,1], [ 29,17] } };
- shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
- shape "MODK" { { [ 23,18] }, { [2,1], [ 21,17] } };
- shape "SPCE" { { [172,18] }, { [2,1], [170,17] } };
- shape "DELE" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
-
- section.left= 22;
- row.left= 1;
- key.shape= "FCTS";
- key.gap= 1;
- section "Function" {
- top= 28;
- row {
- top= 1;
- keys { { <ESC>, shape="NORM" },
- { <FK01>, 9 }, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 9 }, <FK07>, <FK08>, <FK09>, <FK10>
- };
- };
- }; // End of "Function" section
-
- key.shape= "NORM";
- section "Alpha" {
- top= 56;
- row {
- top= 1;
- keys { { <TLDE>, shape="TLDE" },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- <BKSL>, { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 39;
- keys { { <LCTL>, "CTRL" }, { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <AC12>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH" },
- <LSGT>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- keys { { <LALT>, 14 }, <LAMI>,
- { <SPCE>, "SPCE" },
- <RAMI>, <RALT>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 56;
- left= 326;
- row {
- top= 1;
- key.shape = "DELE";
- keys { <DELE>, <HELP> };
- };
- row {
- top= 39;
- left = 20;
- keys { <UP> };
- };
- row {
- top= 58;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 56;
- left= 392;
- row {
- top= 1;
- keys { <KPLP>, <KPRP>, <KPDV>, <KPMU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, <KPAD> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDC> };
- };
- }; // End of "Keypad" section
-
-};
+default xkb_geometry "usa1" {
+
+ description= "Amiga (usa1)";
+ width= 490;
+ height= 175;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "FCTS" { { [ 23,18] }, { [2,1], [ 21,17] } };
+ shape "TLDE" { { [ 28,18] }, { [2,1], [ 21,17] } };
+ shape "TABK" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "CTRL" { { [ 23,18] }, { [2,1], [ 21,17] } };
+ shape "CAPS" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "RTRN" {
+ approx = { [ 16, 0], [42,37] },
+ { [16, 0], [42, 0], [42,37],
+ [ 0,37], [ 0,19], [16,19] },
+ { [18, 1], [40, 1], [40,36],
+ [ 2,36], [ 2,20], [18,20] } };
+ shape "LFSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
+ shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
+ shape "MODK" { { [ 23,18] }, { [2,1], [ 21,17] } };
+ shape "SPCE" { { [172,18] }, { [2,1], [170,17] } };
+ shape "DELE" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
+
+ section.left= 22;
+ row.left= 1;
+ key.shape= "FCTS";
+ key.gap= 1;
+ section "Function" {
+ top= 28;
+ row {
+ top= 1;
+ keys { { <ESC>, shape="NORM" },
+ { <FK01>, 9 }, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 9 }, <FK07>, <FK08>, <FK09>, <FK10>
+ };
+ };
+ }; // End of "Function" section
+
+ key.shape= "NORM";
+ section "Alpha" {
+ top= 56;
+ row {
+ top= 1;
+ keys { { <TLDE>, shape="TLDE" },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ <BKSL>, { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN", -15 }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <LCTL>, "CTRL" }, { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ keys { { <LALT>, 10 }, <LAMI>,
+ { <SPCE>, "SPCE" },
+ <RAMI>, <RALT>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 56;
+ left= 326;
+ row {
+ top= 1;
+ key.shape = "DELE";
+ keys { <DELE>, <HELP> };
+ };
+ row {
+ top= 39;
+ left = 20;
+ keys { <UP> };
+ };
+ row {
+ top= 58;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 56;
+ left= 392;
+ row {
+ top= 1;
+ keys { <KPLP>, <KPRP>, <KPDV>, <KPMU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, <KPAD> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDC> };
+ };
+ }; // End of "Keypad" section
+
+};
+
+xkb_geometry "de" {
+
+ description= "Amiga (de)";
+ width= 490;
+ height= 175;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "FCTS" { { [ 23,18] }, { [2,1], [ 21,17] } };
+ shape "TLDE" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "TABK" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "CTRL" { { [ 23,18] }, { [2,1], [ 21,17] } };
+ shape "CAPS" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "RTRN" {
+ { [ 0, 0], [28,0], [28,37], [5,37], [5,18], [ 0,18] },
+ { [ 2, 1], [26,1], [26,36], [7,36], [7,17], [ 2,17] } };
+ shape "LFSH" { { [ 32,18] }, { [2,1], [ 29,17] } };
+ shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
+ shape "MODK" { { [ 23,18] }, { [2,1], [ 21,17] } };
+ shape "SPCE" { { [172,18] }, { [2,1], [170,17] } };
+ shape "DELE" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
+
+ section.left= 22;
+ row.left= 1;
+ key.shape= "FCTS";
+ key.gap= 1;
+ section "Function" {
+ top= 28;
+ row {
+ top= 1;
+ keys { { <ESC>, shape="NORM" },
+ { <FK01>, 9 }, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 9 }, <FK07>, <FK08>, <FK09>, <FK10>
+ };
+ };
+ }; // End of "Function" section
+
+ key.shape= "NORM";
+ section "Alpha" {
+ top= 56;
+ row {
+ top= 1;
+ keys { { <TLDE>, shape="TLDE" },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ <BKSL>, { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <LCTL>, "CTRL" }, { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <AC12>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH" },
+ <LSGT>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ keys { { <LALT>, 14 }, <LAMI>,
+ { <SPCE>, "SPCE" },
+ <RAMI>, <RALT>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 56;
+ left= 326;
+ row {
+ top= 1;
+ key.shape = "DELE";
+ keys { <DELE>, <HELP> };
+ };
+ row {
+ top= 39;
+ left = 20;
+ keys { <UP> };
+ };
+ row {
+ top= 58;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 56;
+ left= 392;
+ row {
+ top= 1;
+ keys { <KPLP>, <KPRP>, <KPDV>, <KPMU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, <KPAD> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDC> };
+ };
+ }; // End of "Keypad" section
+
+};
diff --git a/xorg-server/xkeyboard-config/geometry/ataritt b/xorg-server/xkeyboard-config/geometry/ataritt
index e53cd94c2..5b035131a 100644
--- a/xorg-server/xkeyboard-config/geometry/ataritt
+++ b/xorg-server/xkeyboard-config/geometry/ataritt
@@ -1,257 +1,251 @@
-// $Xorg: ataritt,v 1.3 2000/08/17 19:54:35 cpqbld Exp $
-
-
-
-// $XFree86: xc/programs/xkbcomp/geometry/ataritt,v 3.2 1997/10/26 13:25:34 dawes Exp $
-
-default xkb_geometry "us" {
-
- description= "Atari TT (us)";
- width= 480;
- height= 173;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "RTRN" { approx = { [0,19], [32,37] },
- { [ 14, 0], [32, 0], [32,37], [0,37], [0,19], [14,19] },
- { [ 16, 1], [30, 1], [30,36], [2,36], [2,20], [16,20] } };
- shape "CTRL" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
- shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "SPCE" { { [172,18] }, { [2,1], [170,17] } };
- shape "FCTS" { { [ 28,10] }, { [2,1], [ 26,9] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
-
- section.left= 21;
- row.left= 1;
- key.shape = "NORM";
- key.gap= 1;
- section "Function" {
- top= 36;
- key.shape= "FCTS";
- row {
- top= 1;
- keys { <FK01>, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 63;
- row {
- top= 1;
- keys { <ESC>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, <TLDE>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN", -13 }, <DELE>
- };
- };
- row {
- top= 39;
- keys { { <LCTL>, "CTRL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <BKSL>, 34 }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- keys { { <ALT>, 24 },
- { <SPCE>, "SPCE" },
- <CAPS>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 63;
- left= 319;
- row {
- top= 1;
- key.shape = "BKSP";
- keys { <HELP>, <UNDO> };
- };
- row {
- top= 20;
- keys { <INS>, <UP>, <HOME> };
- };
- row {
- top= 39;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 63;
- left= 381;
- row {
- top= 1;
- keys { <KPLP>, <KPRP>, <KPDV>, <KPMU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, <KPAD> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDC> };
- };
- }; // End of "Keypad" section
-
-};
-
-xkb_geometry "de" {
-
- description= "Atari TT (de)";
- width= 480;
- height= 173;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "BKSP" { { [ 27,18] }, { [2,1], [ 25,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [ 25,17] } };
- shape "RTRN" { approx = { [0,19], [32,37] },
- { [ 14, 0], [32, 0], [32,37], [0,37], [0,19], [14,19] },
- { [ 16, 1], [30, 1], [30,36], [2,36], [2,20], [16,20] } };
- shape "CTRL" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "LFSH" { { [ 23,18] }, { [2,1], [ 21,17] } };
- shape "RTSH" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
- shape "FCTS" { { [ 28,11] }, { [2,1], [ 26,10] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
-
- section.left= 21;
- row.left= 1;
- key.shape = "NORM";
- key.gap= 1;
- section "Function" {
- top= 36;
- key.shape= "FCTS";
- row {
- top= 1;
- keys { <FK01>, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 63;
- row {
- top= 1;
- keys { <ESC>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, <TLDE>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN", -13 }, <DELE>
- };
- };
- row {
- top= 39;
- keys { { <LCTL>, "CTRL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <BKSL>, 34 }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH" }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>,
- <AB05>, <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- keys { { <ALT>, 24 }, { <SPCE>, "SPCE" }, <CAPS>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 63;
- left= 319;
- row {
- top= 1;
- key.shape = "BKSP";
- keys { <HELP>, <UNDO> };
- };
- row {
- top= 20;
- keys { <INS>, <UP>, <HOME> };
- };
- row {
- top= 39;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 63;
- left= 381;
- row {
- top= 1;
- keys { <KPLP>, <KPRP>, <KPDV>, <KPMU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, <KPAD> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDC> };
- };
- }; // End of "Keypad" section
-
-};
+default xkb_geometry "us" {
+
+ description= "Atari TT (us)";
+ width= 480;
+ height= 173;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "RTRN" { approx = { [0,19], [32,37] },
+ { [ 14, 0], [32, 0], [32,37], [0,37], [0,19], [14,19] },
+ { [ 16, 1], [30, 1], [30,36], [2,36], [2,20], [16,20] } };
+ shape "CTRL" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
+ shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "SPCE" { { [172,18] }, { [2,1], [170,17] } };
+ shape "FCTS" { { [ 28,10] }, { [2,1], [ 26,9] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
+
+ section.left= 21;
+ row.left= 1;
+ key.shape = "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 36;
+ key.shape= "FCTS";
+ row {
+ top= 1;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 63;
+ row {
+ top= 1;
+ keys { <ESC>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, <TLDE>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN", -13 }, <DELE>
+ };
+ };
+ row {
+ top= 39;
+ keys { { <LCTL>, "CTRL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <BKSL>, 34 }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ keys { { <ALT>, 24 },
+ { <SPCE>, "SPCE" },
+ <CAPS>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 63;
+ left= 319;
+ row {
+ top= 1;
+ key.shape = "BKSP";
+ keys { <HELP>, <UNDO> };
+ };
+ row {
+ top= 20;
+ keys { <INS>, <UP>, <HOME> };
+ };
+ row {
+ top= 39;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 63;
+ left= 381;
+ row {
+ top= 1;
+ keys { <KPLP>, <KPRP>, <KPDV>, <KPMU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, <KPAD> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDC> };
+ };
+ }; // End of "Keypad" section
+
+};
+
+xkb_geometry "de" {
+
+ description= "Atari TT (de)";
+ width= 480;
+ height= 173;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "BKSP" { { [ 27,18] }, { [2,1], [ 25,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [ 25,17] } };
+ shape "RTRN" { approx = { [0,19], [32,37] },
+ { [ 14, 0], [32, 0], [32,37], [0,37], [0,19], [14,19] },
+ { [ 16, 1], [30, 1], [30,36], [2,36], [2,20], [16,20] } };
+ shape "CTRL" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "LFSH" { { [ 23,18] }, { [2,1], [ 21,17] } };
+ shape "RTSH" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
+ shape "FCTS" { { [ 28,11] }, { [2,1], [ 26,10] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
+
+ section.left= 21;
+ row.left= 1;
+ key.shape = "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 36;
+ key.shape= "FCTS";
+ row {
+ top= 1;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 63;
+ row {
+ top= 1;
+ keys { <ESC>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, <TLDE>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN", -13 }, <DELE>
+ };
+ };
+ row {
+ top= 39;
+ keys { { <LCTL>, "CTRL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <BKSL>, 34 }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH" }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>,
+ <AB05>, <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ keys { { <ALT>, 24 }, { <SPCE>, "SPCE" }, <CAPS>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 63;
+ left= 319;
+ row {
+ top= 1;
+ key.shape = "BKSP";
+ keys { <HELP>, <UNDO> };
+ };
+ row {
+ top= 20;
+ keys { <INS>, <UP>, <HOME> };
+ };
+ row {
+ top= 39;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 63;
+ left= 381;
+ row {
+ top= 1;
+ keys { <KPLP>, <KPRP>, <KPDV>, <KPMU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, <KPAD> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDC> };
+ };
+ }; // End of "Keypad" section
+
+};
diff --git a/xorg-server/xkeyboard-config/geometry/chicony b/xorg-server/xkeyboard-config/geometry/chicony
index 9bdd15b00..d43fb1b4a 100644
--- a/xorg-server/xkeyboard-config/geometry/chicony
+++ b/xorg-server/xkeyboard-config/geometry/chicony
@@ -1,190 +1,189 @@
-// -*- indent-tabs-mode: nil -*-
-// $XFree86: xc/programs/xkbcomp/geometry/chicony,v 1.1 2003/05/29 12:41:57 pascal Exp $
-
-// Created by Alexander Pohoyda <alexander.pohoyda@gmx.net>
-// Geometry specification for Chicony KB-9820 keyboard.
-
-// 86 keys
-default xkb_geometry "us" {
- description = "Chicony KB-9820 infra-red keyboard";
- width = 350;
- height = 180;
- //baseColor = "grey60";
- labelColor = "white";
-
- shape "EDGE" { cornerRadius = 25,
- { [0, 8], [142.5, 0], [202.5, 0], [347, 8],
- [347, 60], [327, 100], [322, 160],
- [202.5, 165], [142.5, 165],
- [25, 160], [20, 100], [0, 60] } };
- shape "KEYS" { cornerRadius = 2, { [271, 109] } };
- shape "MOUS" { cornerRadius = 12, { [24, 24] } };
- shape "MOUS2" { cornerRadius = 9, { [18, 18] } };
- shape "BTNS" { cornerRadius = 5, { [10, 10] } };
-
- solid "Edges" {
- top = 0;
- left = 0;
- shape = "EDGE";
- color = "grey60";
- };
-
- solid "KeyPanel" {
- shape = "KEYS";
- left = 38;
- top = 22;
- color = "black";
- };
-
- solid "Mouse" {
- shape = "MOUS";
- left = 315;
- top = 30;
- color = "grey30";
- };
-
- outline "Mouse2" {
- shape = "MOUS2";
- left = 318;
- top = 33;
- color = "black";
- };
-
- solid "Button1" {
- shape = "BTNS";
- left = 10;
- top = 32;
- color = "grey30";
- };
-
- solid "Button2" {
- shape = "BTNS";
- left = 20;
- top = 42;
- color = "grey30";
- };
-
- outline "Buttons" {
- shape = "MOUS";
- left = 8;
- top = 30;
- color = "black";
- };
-
- shape.cornerRadius = 1;
- shape "ESC" { { [17, 12] }, { [1.5, 0], [15.5, 10] } };
- shape "SMALL" { { [15, 12] }, { [1.5, 0], [13.5, 10] } };
- shape "THIN" { { [14, 18] }, { [2, 0], [12, 15] } };
- shape "NARR" { { [16, 18] }, { [2, 0], [14, 15] } };
- shape "NORM" { { [17, 18] }, { [2, 0], [15, 15] } };
- shape "WIDER" { { [18, 18] }, { [2, 0], [16, 15] } };
- shape "CAPS" { { [22, 18] }, { [2, 0], [20, 15] } };
- shape "RTSH" { { [23, 18] }, { [2, 0], [21, 15] } };
- shape "WIDEST" { { [30, 18] }, { [2, 0], [28, 15] } };
- shape "SPCE" { { [68, 18] }, { [2, 0], [66, 15] } };
-
- section "Function" {
- key.shape = "SMALL";
- key.gap = 0.79;
- key.color = "grey60";
- left = 38;
- top = 22;
- row {
- top = 1;
- keys { { <ESC>, shape="ESC", 1 },
- { <FK01>, 1.5 }, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>, <FK11>, <FK12>,
- <NMLK>, <PRSC>, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Control" {
- key.shape = "NORM";
- key.gap = 1;
- key.color = "grey60";
- left = 38;
- top = 111;
- row {
- top = 1;
- keys { <EASY>, <LCTL>, <LWIN>, <LALT>,
- { <SPCE>, shape="SPCE" },
- <RALT>,
- { <RWIN>, shape="THIN" },
- { <MENU>, shape="THIN" },
- { <INS>, shape="THIN" },
- { <DELE>, shape="THIN" } };
- };
- }; // End of "Control" section
-
- section "Editing" {
- key.shape = "NORM";
- key.gap = 1;
- key.color = "grey60";
- left = 291;
- top = 34;
- row.vertical = True;
- row {
- top = 1;
- keys { <HOME>, <PGUP>, <PGDN>, <END> };
- };
- }; // End of "Editing" section
-
- section "Navigation" {
- key.gap = 1;
- key.shape = "NARR";
- key.color = "grey60";
- left = 257;
- top = 92;
- row {
- left = 16;
- top = 1;
- keys { <UP> };
- };
- row {
- top = 20;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Navigation" section
-
- section "Alpha" {
- key.gap = 1;
- key.shape = "NORM";
- key.color = "grey60";
- left = 38;
- top = 35;
- row {
- top = 1;
- keys { { <TLDE>, shape="NARR" },
- <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, { <BKSP>, shape="WIDER" }
- };
- };
- row {
- top = 20;
- keys { <TAB>,
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, <AD13>
- };
- };
- row {
- top = 39;
- keys { { <CAPS>, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, shape="WIDEST" }
- };
- };
- row {
- top = 58;
- keys { { <LFSH>, shape="WIDEST" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, shape="RTSH" }
- };
- };
- }; // End of "Alpha" section
-};
+// -*- indent-tabs-mode: nil -*-
+
+// Created by Alexander Pohoyda <alexander.pohoyda@gmx.net>
+// Geometry specification for Chicony KB-9820 keyboard.
+
+// 86 keys
+default xkb_geometry "us" {
+ description = "Chicony KB-9820 infra-red keyboard";
+ width = 350;
+ height = 180;
+ //baseColor = "grey60";
+ labelColor = "white";
+
+ shape "EDGE" { cornerRadius = 25,
+ { [0, 8], [142.5, 0], [202.5, 0], [347, 8],
+ [347, 60], [327, 100], [322, 160],
+ [202.5, 165], [142.5, 165],
+ [25, 160], [20, 100], [0, 60] } };
+ shape "KEYS" { cornerRadius = 2, { [271, 109] } };
+ shape "MOUS" { cornerRadius = 12, { [24, 24] } };
+ shape "MOUS2" { cornerRadius = 9, { [18, 18] } };
+ shape "BTNS" { cornerRadius = 5, { [10, 10] } };
+
+ solid "Edges" {
+ top = 0;
+ left = 0;
+ shape = "EDGE";
+ color = "grey60";
+ };
+
+ solid "KeyPanel" {
+ shape = "KEYS";
+ left = 38;
+ top = 22;
+ color = "black";
+ };
+
+ solid "Mouse" {
+ shape = "MOUS";
+ left = 315;
+ top = 30;
+ color = "grey30";
+ };
+
+ outline "Mouse2" {
+ shape = "MOUS2";
+ left = 318;
+ top = 33;
+ color = "black";
+ };
+
+ solid "Button1" {
+ shape = "BTNS";
+ left = 10;
+ top = 32;
+ color = "grey30";
+ };
+
+ solid "Button2" {
+ shape = "BTNS";
+ left = 20;
+ top = 42;
+ color = "grey30";
+ };
+
+ outline "Buttons" {
+ shape = "MOUS";
+ left = 8;
+ top = 30;
+ color = "black";
+ };
+
+ shape.cornerRadius = 1;
+ shape "ESC" { { [17, 12] }, { [1.5, 0], [15.5, 10] } };
+ shape "SMALL" { { [15, 12] }, { [1.5, 0], [13.5, 10] } };
+ shape "THIN" { { [14, 18] }, { [2, 0], [12, 15] } };
+ shape "NARR" { { [16, 18] }, { [2, 0], [14, 15] } };
+ shape "NORM" { { [17, 18] }, { [2, 0], [15, 15] } };
+ shape "WIDER" { { [18, 18] }, { [2, 0], [16, 15] } };
+ shape "CAPS" { { [22, 18] }, { [2, 0], [20, 15] } };
+ shape "RTSH" { { [23, 18] }, { [2, 0], [21, 15] } };
+ shape "WIDEST" { { [30, 18] }, { [2, 0], [28, 15] } };
+ shape "SPCE" { { [68, 18] }, { [2, 0], [66, 15] } };
+
+ section "Function" {
+ key.shape = "SMALL";
+ key.gap = 0.79;
+ key.color = "grey60";
+ left = 38;
+ top = 22;
+ row {
+ top = 1;
+ keys { { <ESC>, shape="ESC", 1 },
+ { <FK01>, 1.5 }, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>, <FK11>, <FK12>,
+ <NMLK>, <PRSC>, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Control" {
+ key.shape = "NORM";
+ key.gap = 1;
+ key.color = "grey60";
+ left = 38;
+ top = 111;
+ row {
+ top = 1;
+ keys { <EASY>, <LCTL>, <LWIN>, <LALT>,
+ { <SPCE>, shape="SPCE" },
+ <RALT>,
+ { <RWIN>, shape="THIN" },
+ { <MENU>, shape="THIN" },
+ { <INS>, shape="THIN" },
+ { <DELE>, shape="THIN" } };
+ };
+ }; // End of "Control" section
+
+ section "Editing" {
+ key.shape = "NORM";
+ key.gap = 1;
+ key.color = "grey60";
+ left = 291;
+ top = 34;
+ row.vertical = True;
+ row {
+ top = 1;
+ keys { <HOME>, <PGUP>, <PGDN>, <END> };
+ };
+ }; // End of "Editing" section
+
+ section "Navigation" {
+ key.gap = 1;
+ key.shape = "NARR";
+ key.color = "grey60";
+ left = 257;
+ top = 92;
+ row {
+ left = 16;
+ top = 1;
+ keys { <UP> };
+ };
+ row {
+ top = 20;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Navigation" section
+
+ section "Alpha" {
+ key.gap = 1;
+ key.shape = "NORM";
+ key.color = "grey60";
+ left = 38;
+ top = 35;
+ row {
+ top = 1;
+ keys { { <TLDE>, shape="NARR" },
+ <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, { <BKSP>, shape="WIDER" }
+ };
+ };
+ row {
+ top = 20;
+ keys { <TAB>,
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, <AD13>
+ };
+ };
+ row {
+ top = 39;
+ keys { { <CAPS>, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, shape="WIDEST" }
+ };
+ };
+ row {
+ top = 58;
+ keys { { <LFSH>, shape="WIDEST" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, shape="RTSH" }
+ };
+ };
+ }; // End of "Alpha" section
+};
diff --git a/xorg-server/xkeyboard-config/geometry/dell b/xorg-server/xkeyboard-config/geometry/dell
index 064f8e6e5..4fd6479f7 100644
--- a/xorg-server/xkeyboard-config/geometry/dell
+++ b/xorg-server/xkeyboard-config/geometry/dell
@@ -1,645 +1,644 @@
-// $Xorg: dell,v 1.4 2001/02/09 02:05:49 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-default xkb_geometry "dell101" {
-
- description= "Dell 101";
- width= 470;
- height= 210;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
- shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } };
- shape "CAPS" { { [ 33,18] }, { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } };
- shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } };
- shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
- shape "SPCE" { { [133,18] }, { [2,1], [131,16] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
-
- shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 52;
- left= 377;
- color= "grey10";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 67;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 382; };
- indicator "Caps Lock" { left= 407; };
- indicator "Scroll Lock" { left= 433; };
- text.top= 55;
- text.color= "black";
- text "NumLockLabel" { left= 378; text="Num\nLock"; };
- text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 52;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 8 }, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 91;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 21 },
- { <SPCE>, "SPCE", color="white" },
- <RALT>, { <RCTL>, 21 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 91;
- left= 312;
- key.color= "grey20";
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 91;
- left= 376;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "default" geometry
-
-
-xkb_geometry "dell65" {
-};
-
-xkb_geometry "dell65x" {
-
- description= "Dell 101";
- width= 470;
- height= 210;
- color="grey10";
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
- shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } };
- shape "CAPS" { { [ 33,18] }, { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } };
- shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } };
- shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
- shape "SPCE" { { [133,18] }, { [2,1], [131,16] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
-
- shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 52;
- left= 377;
- color= "grey10";
- };
-
- shape "BACKGROUND" { cornerRadius=5, { [ 470, 210 ] } };
- solid "Background" {
- shape= "BACKGROUND";
- top= 0;
- left= 0;
- color= "grey10";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 67;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 382; };
- indicator "Caps Lock" { left= 407; };
- indicator "Scroll Lock" { left= 433; };
- text.top= 55;
- text.color= "black";
- text "NumLockLabel" { left= 378; text="Num\nLock"; };
- text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 52;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 8 }, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 91;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 21 },
- { <SPCE>, "SPCE", color="white" },
- <RALT>, { <RCTL>, 21 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 91;
- left= 312;
- key.color= "grey20";
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 91;
- left= 376;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-};
-
-
-//
-// Dell Precision M65
-//
-
-xkb_geometry "dellm65" {
-
- description= "Dell Precision M65";
- width= 308;
- height= 152;
- baseColor = "grey20";
- labelColor = "white";
-
- shape "BACKGROUND" { cornerRadius = 3, { [ 308, 152 ] } };
- shape "BACKGROUND2" { cornerRadius = 2, { [ 7, 22 ],
- [ 171, 22 ],
- [ 171, 10 ],
- [ 301, 10 ],
- [ 301, 148 ],
- [ 244, 148 ],
- [ 244, 132 ],
- [ 7, 132] } };
- solid "Background" {
- shape = "BACKGROUND";
- top = 0;
- left = 0;
- color = "grey20";
- };
- solid "Background2" {
- shape = "BACKGROUND2";
- top = 0;
- left = 0;
- color = "black";
- };
-
- shape "LEDS" { cornerRadius = 4, { [ 26, 8 ] } };
- shape "LED" { cornerRadius = 0, { [ 4, 4 ] } };
- solid "LedPanel" {
- shape = "LEDS";
- top = 8;
- left = 69;
- color = "grey20";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "gray20";
- indicator.top= 10;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 72; };
- indicator "Caps Lock" { left= 80; };
- indicator "Scroll Lock" { left= 88; };
-
- shape "MEDIA" { cornerRadius = 5, { [ 2, 2], [ 12, 12 ] } };
- shape "POWER" { cornerRadius = 7, { [ 14, 14 ] } };
-
- section "Media" {
- top = 5;
- left = 102;
- width = 60;
- height = 14;
- key.color="grey30";
- key.shape = "MEDIA";
- row {
- top = 0;
- keys {
- <I2E>, <I30>, <I20>, { <I04>, shape = "POWER", gap = 3 }
- };
- };
- };
-
-
- shape "FKEY" { cornerRadius = 1, { [ 18, 12 ] }, { [ 1, 1 ], [ 17, 10 ] } };
-
- section "Function" {
- top = 12;
- left = 8;
- width = 290;
- height = 24;
- key.color = "grey80";
- key.shape = "FKEY";
- key.gap = 0;
- row {
- top = 0;
- keys { { <MENU>, 165 }, <PRSC>, <NMLK>, <PAUS>,
- { <INS>, 1 }, <HOME>, <PGUP> };
- };
- row {
- top = 12;
- keys { <ESC>, { <FK01>, 1 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 1 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 1 }, <FK10>, <FK11>, <FK12>,
- { <DELE>, 1 }, <END>, <PGDN> };
- };
- };
-
- shape "AKEY" { cornerRadius = 1, { [ 19, 19 ] }, { [ 2, 1 ], [ 17, 15 ] } };
- shape "BKSP" { cornerRadius = 1, { [ 44, 19 ] }, { [ 2, 1 ], [ 42, 15 ] } };
- shape "TABK" { cornerRadius = 1, { [ 31, 19 ] }, { [ 2, 1 ], [ 29, 15 ] } };
- shape "BKSL" { cornerRadius = 1, { [ 31, 19 ] }, { [ 2, 1 ], [ 29, 15 ] } };
- shape "CAPS" { cornerRadius = 1, { [ 34, 19 ] }, { [ 2, 1 ], [ 32, 15 ] } };
- shape "RTRN" { cornerRadius = 1, { [ 47, 19 ] }, { [ 2, 1 ], [ 45, 15 ] } };
- shape "LFSH" { cornerRadius = 1, { [ 44, 19 ] }, { [ 2, 1 ], [ 42, 15 ] } };
- shape "RTSH" { cornerRadius = 1, { [ 56, 19 ] }, { [ 2, 1 ], [ 54, 15 ] } };
- shape "LCTL" { cornerRadius = 1, { [ 31, 19 ] }, { [ 2, 1 ], [ 29, 15 ] } };
- shape "LALT" { cornerRadius = 1, { [ 25, 19 ] }, { [ 2, 1 ], [ 23, 15 ] } };
- shape "RCTL" { cornerRadius = 1, { [ 25, 19 ] }, { [ 2, 1 ], [ 23, 15 ] } };
- shape "SPCE" { cornerRadius = 1, { [ 96, 19 ] }, { [ 2, 1 ], [ 94, 15 ] } };
-
-
- section "Alpha" {
- top = 36;
- left = 8;
- width = 290;
- height = 21;
- key.color = "grey80";
- key.shape = "AKEY";
- key.gap = 0;
- row {
- top = 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, { <BKSP>, 1, "BKSP" } };
- };
- row {
- top = 20;
- keys { { <TAB>, "TABK" },
- { <AD01>, 1 }, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, 1, "BKSL" } };
- };
- row {
- top = 39;
- keys { { <CAPS>, "CAPS" },
- { <AC01>, 1 }, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, 1, "RTRN" } };
- };
- row {
- top = 58;
- keys { { <LFSH>, "LFSH" },
- { <AB01>, 1 }, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, 1, "RTSH" } };
- };
- row {
- top = 77;
- keys { { <LCTL>, "LCTL" }, { <LWIN>, 20 }, { <LALT>, "LALT" },
- { <SPCE>, "SPCE" }, <RALT>, { <RCTL>, "RCTL" } };
- };
- };
-
- shape "SKEY" { cornerRadius = 1, { [ 18, 17 ] }, { [ 2, 1 ], [ 16, 13 ] } };
- section "Arrows" {
- top = 113;
- left = 243;
- width = 54;
- height = 36;
-
- key.color = "grey80";
- key.shape = "SKEY";
- row {
- top = 0;
- left = 20;
-
- keys { <UP> };
- };
-
- row {
- top = 17;
- left = 2;
-
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- };
-
- shape "STIK" { cornerRadius = 4, { [ 7, 7 ] } };
-
- solid "STIK" {
- priority = 255;
- color = "blue";
- shape = "STIK";
- top = 90;
- left = 135;
- };
-};
-
-xkb_geometry "latitude" {
- description="Dell Latitude";
- width=304.2; height=219.1;
-
- baseColor="grey"; labelColor="white";
-
- alias <AC00> =<CAPS>;
- alias <AA00> =<LCTL>;
-
- shape "EXTERNAL" {corner=3,
- {[0,0], [302,0], [302,154], [174,154], [174,198], [166,216], [107,216], [100,198], [100,154], [0,154]}};
- solid "external" {shape="EXTERNAL"; top=1.1; left=1.1; color="grey10"; priority=10;};
-
- shape "INTERNAL" {corner=3,
- {[0,13], [162.2,13], [162.2,0], [286,0], [286,138], [230,138], [230,124], [163,124], [163,138], [96,138], [96,124], [0,124]}};
- solid "internal" {shape="INTERNAL"; top=7; left=8.5; color="black"; priority=20;};
-
- shape "TOUCHPAD" {corner=2, {[68,40]}};
- solid "touchpad" {shape="TOUCHPAD"; top=153; left=104; color="grey20"; priority=20;};
-
- shape "TOUCHPADBUTTONS" {corner=1,
- {[0,0], [33.5,0], [33.5,16], [6,16]},
- {[34.5,0], [68,0], [61, 16], [34.5,16]}};
- solid "touchleft" {shape="TOUCHPADBUTTONS"; top=198; left=104; color="grey20"; priority=20;};
-
- shape "NIPPLE" {corner=3, {[7.5,7.5]}};
- solid "nipple" {shape="NIPPLE"; top=87; left=134; color="blue"; priority=200;};
- shape "NIPPLEBUTTONS" {corner=2, {[32.5,13]}, {[33.5,0],[66,13]}};
- solid "nipplebuttons" {shape="NIPPLEBUTTONS"; top=131; left=105; color="grey20"; priority=20;};
-
- shape "FILLINGS" {corner=1.5, {[19,15]}, {[38,0],[55,15]}};
- solid "fillings" {shape="FILLINGS"; top=112; left=238; color="grey"; priority=200;};
-
- shape "FUNC" {corner=1.5, {[16.3,12]}, {[2,0.5], [14,10]}};
- shape "ESC" {corner=1.5, {[18,12]}, {[2,0.5], [16,10]}};
- shape "BKSP" {corner=1.5, {[36.5,18]}, {[3,0.5], [33.5,14]}};
-
- section "Function" {key.color="grey"; priority=100; top=9; left=10; width=290; height=28;
- row {top=0; left=161.1; keys {{<MENU>,"FUNC",1.1}, {<PRSC>,"FUNC",1.1}, {<NMLK>,"FUNC",1.1},
- {<PAUS>,"FUNC",1.1}, {<INS>,"FUNC",2.5}, {<HOME>,"FUNC",1.1}, {<PGUP>,"FUNC",1.1}};};
- row {top=12.5; left=0; keys {{<ESC>,"ESC",0},
- {<FK01>,"FUNC",2.7}, {<FK02>,"FUNC",1.1}, {<FK03>,"FUNC",1.1}, {<FK04>,"FUNC",1.1},
- {<FK05>,"FUNC",2.5}, {<FK06>,"FUNC",1.1}, {<FK07>,"FUNC",1.1}, {<FK08>,"FUNC",1.1},
- {<FK09>,"FUNC",2.5}, {<FK10>,"FUNC",1.1}, {<FK11>,"FUNC",1.1}, {<FK12>,"FUNC",1.1},
- {<DELE>,"FUNC",2.5}, {<END>, "FUNC",1.1}, {<PGDN>,"FUNC",1.1}};};
- }; // End of "Function" section
-
- shape "NORM" {corner=1.5, {[18,18]}, {[3,0.5], [14.8,14]}};
- shape "TABK" {corner=1.5, {[28,18]}, {[3,0.5], [25,14]}};
- shape "CAPS" {corner=1.5, {[32,18]}, {[3,0.5], [22,14]}};
- shape "LFSH" {corner=1.5, {[23,18]}, {[3,0.5], [20,14]}};
- shape "RTSH" {corner=1.5, {[50,18]}, {[3,1], [47,14]}};
- shape "RTRN" {corner=1.5, {[0,0],[26.5,0],[26.5,37],[4,37],[4,18],[0,18]},
- {[3,0.5], [23.5,0.5], [23.5,33], [7,33], [7,14], [3,14]}};
- shape "SPCE" {corner=1.5,{[95,18]}, {[3,0.5],[92,14]}};
- shape "LCTL" {corner=1.5, {[27,18]}, {[3,0.5],[24,14]}};
- shape "LALT" {corner=1.5, {[22,18]}, {[3,0.5],[19,14]}};
- shape "WIN" {corner=1.5, {[18,18]}, {[3,0.5],[15,14]}};
-
- section "Alpha" {key.color="grey"; priority=100; top=36; left=10; width=290; height=18;
- row {top=0; left=0; keys {{<TLDE>, "NORM", 0}, {<AE01>, "NORM", 1}, {<AE02>, "NORM", 1}, {<AE03>, "NORM", 1},
- {<AE04>, "NORM", 1}, {<AE05>, "NORM", 1}, {<AE06>, "NORM", 1}, {<AE07>, "NORM", 1}, {<AE08>, "NORM", 1},
- {<AE09>, "NORM", 1}, {<AE10>, "NORM", 1}, {<AE11>, "NORM", 1}, {<AE12>, "NORM", 1}, {<BKSP>, "BKSP", 1}};};
- row {top=19; left=0; keys {{<TAB>, "TABK", 0}, {<AD01>, "NORM", 1}, {<AD02>, "NORM", 1}, {<AD03>, "NORM", 1},
- {<AD04>, "NORM", 1}, {<AD05>, "NORM", 1}, {<AD06>, "NORM", 1}, {<AD07>, "NORM", 1}, {<AD08>, "NORM", 1},
- {<AD09>, "NORM", 1}, {<AD10>, "NORM", 1}, {<AD11>, "NORM", 1}, {<AD12>, "NORM", 1}, {<RTRN>, "RTRN", 1}};};
- row {top=38; left=0; keys {{<CAPS>, "CAPS", 0}, {<AC01>, "NORM", 1}, {<AC02>, "NORM", 1}, {<AC03>, "NORM", 1},
- {<AC04>, "NORM", 1}, {<AC05>, "NORM", 1}, {<AC06>, "NORM", 1}, {<AC07>, "NORM", 1}, {<AC08>, "NORM", 1},
- {<AC09>, "NORM", 1}, {<AC10>, "NORM", 1}, {<AC11>, "NORM", 1}, {<AC12>, "NORM", 1}};};
- // TODO There's a weird <> key here, check it out:
- row {top=57; left=0; keys {{<LFSH>, "LFSH", 0}, {<AB01>, "NORM", 1}, {<AB02>, "NORM", 1}, {<AB03>, "NORM", 1},
- {<AB04>, "NORM", 1}, {<AB05>, "NORM", 1}, {<AB06>, "NORM", 1}, {<AB07>, "NORM", 1}, {<AB08>, "NORM", 1},
- {<AB09>, "NORM", 1}, {<AB10>, "NORM", 1}, {<AB11>, "NORM", 1}, {<RTSH>, "RTSH", 1}};};
- row {top=76; left=0; keys {{<LCTL>, "LCTL", 0}, {<FN>, "WIN", 1},{<LWIN>, "WIN", 1}, {<LALT>, "LALT", 1},
- {<SPCE>, "SPCE", 1}, {<RALT>, "WIN", 1},{<RCTL>, "LALT", 1}};};
- }; // End of "Alpha" section
-
- shape "ARROW" {corner=1.5, {[17,15]}, {[2,0.5],[15,13]}};
- section "Arrows" {key.color="grey"; priority=110; top=112; left=240; width=43; height=31;
- row {top=0; left=18; keys {{<UP>, "ARROW", 0}};};
- row {top=16; left=0; keys {{<LEFT>, "ARROW", 0}, {<DOWN>, "ARROW", 1}, {<RGHT>, "ARROW", 1}};};
- }; // End of "Arrows" section
-
- shape "LEDS" {corner=3, {[25,7]}};
- solid "leds" {shape="LEDS"; top=5.7; left=69; color="grey"; priority=10;};
- shape "LED" {corner=0, {[0,1.5], [3,4.5]}, {[0.5,1.5], [1,0] , [2,0], [2.5,1.5]}};
- indicator.onColor="green";
- indicator.offColor="grey";
- indicator.top=7;
- indicator.shape="LED";
- indicator.priority=200;
- indicator "Num Lock" {left=72;};
- indicator "Caps Lock" {left=80;};
- indicator "Scroll Lock" {left=88;};
-
- text "LATITUDE" {left=10; top=7; text="L A T I T U D E | D620";};
-
- shape "ROUND" {corner=5, {[10,10]}};
- shape "POWER" {corner=7, {[15,15]}};
- section "Topbuttons" {key.color="grey"; priority=110; top=2; left=100;
- row {top=2; left=0; keys {{<VLUP>, "ROUND", 0}, {<VLDN>, "ROUND", 3}, {<MUTE>, "ROUND", 3}};};
- row {top=0; left=45; keys {{<POWR>, "POWER", 0}};};
- }; // End of "TopButtons" section
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+default xkb_geometry "dell101" {
+
+ description= "Dell 101";
+ width= 470;
+ height= 210;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
+ shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } };
+ shape "CAPS" { { [ 33,18] }, { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } };
+ shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } };
+ shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
+ shape "SPCE" { { [133,18] }, { [2,1], [131,16] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
+
+ shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 52;
+ left= 377;
+ color= "grey10";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 67;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 382; };
+ indicator "Caps Lock" { left= 407; };
+ indicator "Scroll Lock" { left= 433; };
+ text.top= 55;
+ text.color= "black";
+ text "NumLockLabel" { left= 378; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 52;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 8 }, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 91;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 21 },
+ { <SPCE>, "SPCE", color="white" },
+ <RALT>, { <RCTL>, 21 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 91;
+ left= 312;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 91;
+ left= 376;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "default" geometry
+
+
+xkb_geometry "dell65" {
+};
+
+xkb_geometry "dell65x" {
+
+ description= "Dell 101";
+ width= 470;
+ height= 210;
+ color="grey10";
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
+ shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } };
+ shape "CAPS" { { [ 33,18] }, { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } };
+ shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } };
+ shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
+ shape "SPCE" { { [133,18] }, { [2,1], [131,16] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
+
+ shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 52;
+ left= 377;
+ color= "grey10";
+ };
+
+ shape "BACKGROUND" { cornerRadius=5, { [ 470, 210 ] } };
+ solid "Background" {
+ shape= "BACKGROUND";
+ top= 0;
+ left= 0;
+ color= "grey10";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 67;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 382; };
+ indicator "Caps Lock" { left= 407; };
+ indicator "Scroll Lock" { left= 433; };
+ text.top= 55;
+ text.color= "black";
+ text "NumLockLabel" { left= 378; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 52;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 8 }, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 91;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 21 },
+ { <SPCE>, "SPCE", color="white" },
+ <RALT>, { <RCTL>, 21 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 91;
+ left= 312;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 91;
+ left= 376;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+};
+
+
+//
+// Dell Precision M65
+//
+
+xkb_geometry "dellm65" {
+
+ description= "Dell Precision M65";
+ width= 308;
+ height= 152;
+ baseColor = "grey20";
+ labelColor = "white";
+
+ shape "BACKGROUND" { cornerRadius = 3, { [ 308, 152 ] } };
+ shape "BACKGROUND2" { cornerRadius = 2, { [ 7, 22 ],
+ [ 171, 22 ],
+ [ 171, 10 ],
+ [ 301, 10 ],
+ [ 301, 148 ],
+ [ 244, 148 ],
+ [ 244, 132 ],
+ [ 7, 132] } };
+ solid "Background" {
+ shape = "BACKGROUND";
+ top = 0;
+ left = 0;
+ color = "grey20";
+ };
+ solid "Background2" {
+ shape = "BACKGROUND2";
+ top = 0;
+ left = 0;
+ color = "black";
+ };
+
+ shape "LEDS" { cornerRadius = 4, { [ 26, 8 ] } };
+ shape "LED" { cornerRadius = 0, { [ 4, 4 ] } };
+ solid "LedPanel" {
+ shape = "LEDS";
+ top = 8;
+ left = 69;
+ color = "grey20";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "gray20";
+ indicator.top= 10;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 72; };
+ indicator "Caps Lock" { left= 80; };
+ indicator "Scroll Lock" { left= 88; };
+
+ shape "MEDIA" { cornerRadius = 5, { [ 2, 2], [ 12, 12 ] } };
+ shape "POWER" { cornerRadius = 7, { [ 14, 14 ] } };
+
+ section "Media" {
+ top = 5;
+ left = 102;
+ width = 60;
+ height = 14;
+ key.color="grey30";
+ key.shape = "MEDIA";
+ row {
+ top = 0;
+ keys {
+ <I2E>, <I30>, <I20>, { <I04>, shape = "POWER", gap = 3 }
+ };
+ };
+ };
+
+
+ shape "FKEY" { cornerRadius = 1, { [ 18, 12 ] }, { [ 1, 1 ], [ 17, 10 ] } };
+
+ section "Function" {
+ top = 12;
+ left = 8;
+ width = 290;
+ height = 24;
+ key.color = "grey80";
+ key.shape = "FKEY";
+ key.gap = 0;
+ row {
+ top = 0;
+ keys { { <MENU>, 165 }, <PRSC>, <NMLK>, <PAUS>,
+ { <INS>, 1 }, <HOME>, <PGUP> };
+ };
+ row {
+ top = 12;
+ keys { <ESC>, { <FK01>, 1 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 1 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 1 }, <FK10>, <FK11>, <FK12>,
+ { <DELE>, 1 }, <END>, <PGDN> };
+ };
+ };
+
+ shape "AKEY" { cornerRadius = 1, { [ 19, 19 ] }, { [ 2, 1 ], [ 17, 15 ] } };
+ shape "BKSP" { cornerRadius = 1, { [ 44, 19 ] }, { [ 2, 1 ], [ 42, 15 ] } };
+ shape "TABK" { cornerRadius = 1, { [ 31, 19 ] }, { [ 2, 1 ], [ 29, 15 ] } };
+ shape "BKSL" { cornerRadius = 1, { [ 31, 19 ] }, { [ 2, 1 ], [ 29, 15 ] } };
+ shape "CAPS" { cornerRadius = 1, { [ 34, 19 ] }, { [ 2, 1 ], [ 32, 15 ] } };
+ shape "RTRN" { cornerRadius = 1, { [ 47, 19 ] }, { [ 2, 1 ], [ 45, 15 ] } };
+ shape "LFSH" { cornerRadius = 1, { [ 44, 19 ] }, { [ 2, 1 ], [ 42, 15 ] } };
+ shape "RTSH" { cornerRadius = 1, { [ 56, 19 ] }, { [ 2, 1 ], [ 54, 15 ] } };
+ shape "LCTL" { cornerRadius = 1, { [ 31, 19 ] }, { [ 2, 1 ], [ 29, 15 ] } };
+ shape "LALT" { cornerRadius = 1, { [ 25, 19 ] }, { [ 2, 1 ], [ 23, 15 ] } };
+ shape "RCTL" { cornerRadius = 1, { [ 25, 19 ] }, { [ 2, 1 ], [ 23, 15 ] } };
+ shape "SPCE" { cornerRadius = 1, { [ 96, 19 ] }, { [ 2, 1 ], [ 94, 15 ] } };
+
+
+ section "Alpha" {
+ top = 36;
+ left = 8;
+ width = 290;
+ height = 21;
+ key.color = "grey80";
+ key.shape = "AKEY";
+ key.gap = 0;
+ row {
+ top = 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, { <BKSP>, 1, "BKSP" } };
+ };
+ row {
+ top = 20;
+ keys { { <TAB>, "TABK" },
+ { <AD01>, 1 }, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, 1, "BKSL" } };
+ };
+ row {
+ top = 39;
+ keys { { <CAPS>, "CAPS" },
+ { <AC01>, 1 }, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, 1, "RTRN" } };
+ };
+ row {
+ top = 58;
+ keys { { <LFSH>, "LFSH" },
+ { <AB01>, 1 }, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, 1, "RTSH" } };
+ };
+ row {
+ top = 77;
+ keys { { <LCTL>, "LCTL" }, { <LWIN>, 20 }, { <LALT>, "LALT" },
+ { <SPCE>, "SPCE" }, <RALT>, { <RCTL>, "RCTL" } };
+ };
+ };
+
+ shape "SKEY" { cornerRadius = 1, { [ 18, 17 ] }, { [ 2, 1 ], [ 16, 13 ] } };
+ section "Arrows" {
+ top = 113;
+ left = 243;
+ width = 54;
+ height = 36;
+
+ key.color = "grey80";
+ key.shape = "SKEY";
+ row {
+ top = 0;
+ left = 20;
+
+ keys { <UP> };
+ };
+
+ row {
+ top = 17;
+ left = 2;
+
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ };
+
+ shape "STIK" { cornerRadius = 4, { [ 7, 7 ] } };
+
+ solid "STIK" {
+ priority = 255;
+ color = "blue";
+ shape = "STIK";
+ top = 90;
+ left = 135;
+ };
+};
+
+xkb_geometry "latitude" {
+ description="Dell Latitude";
+ width=304.2; height=219.1;
+
+ baseColor="grey"; labelColor="white";
+
+ alias <AC00> =<CAPS>;
+ alias <AA00> =<LCTL>;
+
+ shape "EXTERNAL" {corner=3,
+ {[0,0], [302,0], [302,154], [174,154], [174,198], [166,216], [107,216], [100,198], [100,154], [0,154]}};
+ solid "external" {shape="EXTERNAL"; top=1.1; left=1.1; color="grey10"; priority=10;};
+
+ shape "INTERNAL" {corner=3,
+ {[0,13], [162.2,13], [162.2,0], [286,0], [286,138], [230,138], [230,124], [163,124], [163,138], [96,138], [96,124], [0,124]}};
+ solid "internal" {shape="INTERNAL"; top=7; left=8.5; color="black"; priority=20;};
+
+ shape "TOUCHPAD" {corner=2, {[68,40]}};
+ solid "touchpad" {shape="TOUCHPAD"; top=153; left=104; color="grey20"; priority=20;};
+
+ shape "TOUCHPADBUTTONS" {corner=1,
+ {[0,0], [33.5,0], [33.5,16], [6,16]},
+ {[34.5,0], [68,0], [61, 16], [34.5,16]}};
+ solid "touchleft" {shape="TOUCHPADBUTTONS"; top=198; left=104; color="grey20"; priority=20;};
+
+ shape "NIPPLE" {corner=3, {[7.5,7.5]}};
+ solid "nipple" {shape="NIPPLE"; top=87; left=134; color="blue"; priority=200;};
+ shape "NIPPLEBUTTONS" {corner=2, {[32.5,13]}, {[33.5,0],[66,13]}};
+ solid "nipplebuttons" {shape="NIPPLEBUTTONS"; top=131; left=105; color="grey20"; priority=20;};
+
+ shape "FILLINGS" {corner=1.5, {[19,15]}, {[38,0],[55,15]}};
+ solid "fillings" {shape="FILLINGS"; top=112; left=238; color="grey"; priority=200;};
+
+ shape "FUNC" {corner=1.5, {[16.3,12]}, {[2,0.5], [14,10]}};
+ shape "ESC" {corner=1.5, {[18,12]}, {[2,0.5], [16,10]}};
+ shape "BKSP" {corner=1.5, {[36.5,18]}, {[3,0.5], [33.5,14]}};
+
+ section "Function" {key.color="grey"; priority=100; top=9; left=10; width=290; height=28;
+ row {top=0; left=161.1; keys {{<MENU>,"FUNC",1.1}, {<PRSC>,"FUNC",1.1}, {<NMLK>,"FUNC",1.1},
+ {<PAUS>,"FUNC",1.1}, {<INS>,"FUNC",2.5}, {<HOME>,"FUNC",1.1}, {<PGUP>,"FUNC",1.1}};};
+ row {top=12.5; left=0; keys {{<ESC>,"ESC",0},
+ {<FK01>,"FUNC",2.7}, {<FK02>,"FUNC",1.1}, {<FK03>,"FUNC",1.1}, {<FK04>,"FUNC",1.1},
+ {<FK05>,"FUNC",2.5}, {<FK06>,"FUNC",1.1}, {<FK07>,"FUNC",1.1}, {<FK08>,"FUNC",1.1},
+ {<FK09>,"FUNC",2.5}, {<FK10>,"FUNC",1.1}, {<FK11>,"FUNC",1.1}, {<FK12>,"FUNC",1.1},
+ {<DELE>,"FUNC",2.5}, {<END>, "FUNC",1.1}, {<PGDN>,"FUNC",1.1}};};
+ }; // End of "Function" section
+
+ shape "NORM" {corner=1.5, {[18,18]}, {[3,0.5], [14.8,14]}};
+ shape "TABK" {corner=1.5, {[28,18]}, {[3,0.5], [25,14]}};
+ shape "CAPS" {corner=1.5, {[32,18]}, {[3,0.5], [22,14]}};
+ shape "LFSH" {corner=1.5, {[23,18]}, {[3,0.5], [20,14]}};
+ shape "RTSH" {corner=1.5, {[50,18]}, {[3,1], [47,14]}};
+ shape "RTRN" {corner=1.5, {[0,0],[26.5,0],[26.5,37],[4,37],[4,18],[0,18]},
+ {[3,0.5], [23.5,0.5], [23.5,33], [7,33], [7,14], [3,14]}};
+ shape "SPCE" {corner=1.5,{[95,18]}, {[3,0.5],[92,14]}};
+ shape "LCTL" {corner=1.5, {[27,18]}, {[3,0.5],[24,14]}};
+ shape "LALT" {corner=1.5, {[22,18]}, {[3,0.5],[19,14]}};
+ shape "WIN" {corner=1.5, {[18,18]}, {[3,0.5],[15,14]}};
+
+ section "Alpha" {key.color="grey"; priority=100; top=36; left=10; width=290; height=18;
+ row {top=0; left=0; keys {{<TLDE>, "NORM", 0}, {<AE01>, "NORM", 1}, {<AE02>, "NORM", 1}, {<AE03>, "NORM", 1},
+ {<AE04>, "NORM", 1}, {<AE05>, "NORM", 1}, {<AE06>, "NORM", 1}, {<AE07>, "NORM", 1}, {<AE08>, "NORM", 1},
+ {<AE09>, "NORM", 1}, {<AE10>, "NORM", 1}, {<AE11>, "NORM", 1}, {<AE12>, "NORM", 1}, {<BKSP>, "BKSP", 1}};};
+ row {top=19; left=0; keys {{<TAB>, "TABK", 0}, {<AD01>, "NORM", 1}, {<AD02>, "NORM", 1}, {<AD03>, "NORM", 1},
+ {<AD04>, "NORM", 1}, {<AD05>, "NORM", 1}, {<AD06>, "NORM", 1}, {<AD07>, "NORM", 1}, {<AD08>, "NORM", 1},
+ {<AD09>, "NORM", 1}, {<AD10>, "NORM", 1}, {<AD11>, "NORM", 1}, {<AD12>, "NORM", 1}, {<RTRN>, "RTRN", 1}};};
+ row {top=38; left=0; keys {{<CAPS>, "CAPS", 0}, {<AC01>, "NORM", 1}, {<AC02>, "NORM", 1}, {<AC03>, "NORM", 1},
+ {<AC04>, "NORM", 1}, {<AC05>, "NORM", 1}, {<AC06>, "NORM", 1}, {<AC07>, "NORM", 1}, {<AC08>, "NORM", 1},
+ {<AC09>, "NORM", 1}, {<AC10>, "NORM", 1}, {<AC11>, "NORM", 1}, {<AC12>, "NORM", 1}};};
+ // TODO There's a weird <> key here, check it out:
+ row {top=57; left=0; keys {{<LFSH>, "LFSH", 0}, {<AB01>, "NORM", 1}, {<AB02>, "NORM", 1}, {<AB03>, "NORM", 1},
+ {<AB04>, "NORM", 1}, {<AB05>, "NORM", 1}, {<AB06>, "NORM", 1}, {<AB07>, "NORM", 1}, {<AB08>, "NORM", 1},
+ {<AB09>, "NORM", 1}, {<AB10>, "NORM", 1}, {<AB11>, "NORM", 1}, {<RTSH>, "RTSH", 1}};};
+ row {top=76; left=0; keys {{<LCTL>, "LCTL", 0}, {<FN>, "WIN", 1},{<LWIN>, "WIN", 1}, {<LALT>, "LALT", 1},
+ {<SPCE>, "SPCE", 1}, {<RALT>, "WIN", 1},{<RCTL>, "LALT", 1}};};
+ }; // End of "Alpha" section
+
+ shape "ARROW" {corner=1.5, {[17,15]}, {[2,0.5],[15,13]}};
+ section "Arrows" {key.color="grey"; priority=110; top=112; left=240; width=43; height=31;
+ row {top=0; left=18; keys {{<UP>, "ARROW", 0}};};
+ row {top=16; left=0; keys {{<LEFT>, "ARROW", 0}, {<DOWN>, "ARROW", 1}, {<RGHT>, "ARROW", 1}};};
+ }; // End of "Arrows" section
+
+ shape "LEDS" {corner=3, {[25,7]}};
+ solid "leds" {shape="LEDS"; top=5.7; left=69; color="grey"; priority=10;};
+ shape "LED" {corner=0, {[0,1.5], [3,4.5]}, {[0.5,1.5], [1,0] , [2,0], [2.5,1.5]}};
+ indicator.onColor="green";
+ indicator.offColor="grey";
+ indicator.top=7;
+ indicator.shape="LED";
+ indicator.priority=200;
+ indicator "Num Lock" {left=72;};
+ indicator "Caps Lock" {left=80;};
+ indicator "Scroll Lock" {left=88;};
+
+ text "LATITUDE" {left=10; top=7; text="L A T I T U D E | D620";};
+
+ shape "ROUND" {corner=5, {[10,10]}};
+ shape "POWER" {corner=7, {[15,15]}};
+ section "Topbuttons" {key.color="grey"; priority=110; top=2; left=100;
+ row {top=2; left=0; keys {{<VLUP>, "ROUND", 0}, {<VLDN>, "ROUND", 3}, {<MUTE>, "ROUND", 3}};};
+ row {top=0; left=45; keys {{<POWR>, "POWER", 0}};};
+ }; // End of "TopButtons" section
+};
diff --git a/xorg-server/xkeyboard-config/geometry/digital_vndr/lk b/xorg-server/xkeyboard-config/geometry/digital_vndr/lk
index 1ccd33163..fb6b2c72c 100644
--- a/xorg-server/xkeyboard-config/geometry/digital_vndr/lk
+++ b/xorg-server/xkeyboard-config/geometry/digital_vndr/lk
@@ -1,730 +1,728 @@
-// $Xorg: lk,v 1.3 2000/08/17 19:54:36 cpqbld Exp $
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//Permission is hereby granted, free of charge, to any person obtaining
-//a copy of this software and associated documentation files (the
-//"Software"), to deal in the Software without restriction, including
-//without limitation the rights to use, copy, modify, merge, publish,
-//distribute, sublicense, and sell copies of the Software, and to
-//permit persons to whom the Software is furnished to do so, subject to
-//the following conditions:
-//
-//The above copyright notice and this permission notice shall be included
-//in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
-//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
-//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of the Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log: lk,v
-// Revision 1.2 1996/06/18 09:12:47 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.6.2 1995/08/18 21:15:16 William_Walker
-// Upgrade XKB to Protocol Rev. 0.64
-// [1995/08/18 20:41:46 William_Walker]
-//
-// Revision 1.1.2.5 1995/08/11 19:35:47 William_Walker
-// Sync up with Erik's pool.
-// [1995/08/11 18:35:58 William_Walker]
-//
-// Revision 1.1.2.4 1995/06/27 12:17:28 William_Walker
-// Rename <TLDE> to ISO9995 compliant <AE00>.
-// [1995/06/26 20:23:07 William_Walker]
-//
-// Revision 1.1.2.3 1995/06/09 20:54:36 William_Walker
-// Add VT105 layout support and ISO group support
-// [1995/06/09 20:40:38 William_Walker]
-//
-// Revision 1.1.2.2 1995/06/05 19:21:16 William_Walker
-// New file. I love keymaps.
-// [1995/06/05 18:05:43 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: lk,v Revision: 1.2 (DEC) Date: 1996/01/24 12:16:00
-//
-xkb_geometry "lk201" {
- width = 530;
- height = 170;
- shape.cornerRadius = 1;
-
- shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
- shape "RTRN" {
- approx = { [0,0],[23,19] },
- { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] },
- { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] }
- };
- shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
- shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
- shape "MED" { { [28,19] }, { [3,2], [25,16] } };
- shape "CAPS" { { [28,19] }, { [3,2], [18,16] } };
- shape "SPCE" { { [171,19] },{ [3,2], [168,16]} };
- shape "LEDS" { [ 30,15] };
- shape "LED" { [ 5, 2] };
-
- section.left= 27;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- section "Function" { top = 20;
- row { top = 1;
- keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 19 }, <FK07>, <FK08>, <FK09>, <FK10>,
- { <FK11>, 19 }, <FK12>, <FK13>, <FK14>,
- { <FK17>, 98 }, <FK18>, <FK19>, <FK20>
- };
- };
- };
-
- section "Editing" { top = 20; left = 350;
- row { top = 1;
- keys { <HELP>, { <DO>, "LONG" } };
- };
- row { top = 41;
- keys { <FIND>, <INS>, <DELE> };
- };
- row { top = 61;
- keys { <SELE>, <PGUP>, <PGDN> };
- };
- row { top = 81; left = 20;
- keys { <UP> };
- };
- row { top = 101;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- };
-
- section "Keypad" { top = 60; left = 426;
- row { top = 1;
- keys { <KPF1>, <KPF2>, <KPF3>, <KPF4> };
- };
- row { top = 21;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row { top = 41;
- keys { <KP4>, <KP5>, <KP6>, <KPCO> };
- };
- row { top = 61;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
- };
- row { top = 81;
- keys { { <KP0>, "LONG" }, <KPDL> };
- };
- };
-
- section "Alpha" { top = 60;
- row { top = 1; left = 15;
- keys { <AE00>,
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "MED" }
- };
- };
- row { top = 21; left = 15;
- keys { { <TAB>, "MED" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
-
- };
- row { top = 41;
- keys { <LCTL>,
- { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
- };
- };
- row { top = 61;
- keys { { <LFSH>, "LONG" },
- <AB00>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "LONG" }
- };
- };
- row { top = 81; left = 26;
- keys { { <LCMP>, "LONG" },
- { <SPCE>, "SPCE" }
- };
- };
- };
-
- section.left = 341;
- section.top = 3;
-
- section "Indicators" {
- indicator.onColor = "#00ff00";
- indicator.offColor= "#001000";
- indicator.top = 10;
- indicator.shape= "LED";
- indicator "Scroll Lock" { left = 9; };
- indicator "Caps Lock" { left = 27; };
- indicator "Compose" { left = 45; };
- indicator "Wait" { left = 63; };
- text.top = 4;
- text.color = "black";
- text "HoldScreenLabel" {left = 5; text="Hold\n"; };
- text "CapsLockLabel" {left = 23; text="Lock\n"; };
- text "ComposeLabel" {left = 37; text="Compose\n"; };
- text "WaitLabel" {left = 60; text="Wait\n"; };
- };
-};
-
-xkb_geometry "lk401" {
-
- width = 480;
- height = 180;
- shape.cornerRadius = 1;
-
- shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
- shape "RTRN" {
- approx = { [0,0],[23,19] },
- { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] },
- { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] }
- };
- shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
- shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
- shape "MED" { { [28,19] }, { [3,2], [25,16] } };
- shape "CAPS" { { [28,19] }, { [3,2], [18,16] } };
- shape "SPCE" { { [131,19] },{ [3,2], [128,16]} };
- shape "LEDS" { [ 36,15] };
- shape "LED" { [ 5, 2] };
-
- section.left= 17;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- text "Logo" {left = 20; top = 10; text="digital\n"; };
-
- section "Function" { top = 20;
- row { top = 1;
- keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 15 }, <FK07>, <FK08>, <FK09>, <FK10>,
- { <FK11>, 15 }, <FK12>, <FK13>, <FK14>,
- { <FK17>, 75 }, <FK18>, <FK19>, <FK20>
- };
- };
- };
-
- section "Editing" { top = 20; left = 320;
- row { top = 1;
- keys { <HELP>, { <DO>, "LONG" } };
- };
- row { top = 41;
- keys { <FIND>, <INS>, <DELE> };
- };
- row { top = 61;
- keys { <SELE>, <PGUP>, <PGDN> };
- };
- row { top = 81; left= 20;
- keys { <UP> };
- };
- row { top = 101;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- };
-
- section "Keypad" { top = 60; left = 385;
- row { top = 1;
- keys { <KPF1>, <KPF2>, <KPF3>, <KPF4> };
- };
- row {
- top = 21;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row { top = 41;
- keys { <KP4>, <KP5>, <KP6>, <KPCO> };
- };
- row { top = 61;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
- };
- row { top = 81;
- keys { { <KP0>, "LONG" }, <KPDL> };
- };
- };
-
- section "Alpha" { top = 60;
- row { top = 1; left = 15;
- keys { <AE00>,
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "MED" }
- };
- };
- row { top = 21; left = 15;
- keys { { <TAB>, "MED" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
-
- };
- row { top = 41;
- keys { <LCTL>,
- { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
- };
- };
- row { top = 61;
- keys { { <LFSH>, "LONG" },
- <AB00>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "LONG" }
- };
- };
- row { top = 81; left = 29;
- keys { { <LCMP>, "MED" },
- { <LALT>, "MED" },
- { <SPCE>, "SPCE" },
- { <RALT>, "MED" },
- { <RCMP>, "MED" }
- };
- };
- };
-
- section.left = 69;
- section.top = 3;
- section "Indicators" {
- solid "led_panel" { top = 0; left = 0;
- cornerRadius = 1;
- shape = "LEDS";
- color = "grey";
- };
- indicator.onColor = "#00ff00";
- indicator.offColor= "#001000";
- indicator.shape = "LED";
- indicator.top = 1;
- indicator "Scroll Lock" { left = 3; };
- indicator "Caps Lock" { left = 22; };
- };
- section "IndicatorLabels" {
- text.top = 4;
- text.color = "black";
- text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
- text "CapsLockLabel" {left = 22; text="Caps\nLock"; };
- };
-};
-
-xkb_geometry "lk450" {
-
- width = 480;
- height = 180;
- shape.cornerRadius = 1;
-
- shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
- shape "RTRN" {
- approx = { [0,0],[23,19] },
- { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] },
- { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] }
- };
- shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
- shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
- shape "MED" { { [28,19] }, { [3,2], [25,16] } };
- shape "CAPS" { { [28,19] }, { [3,2], [18,16] } };
- shape "SPCE" { { [131,19] },{ [3,2], [128,16]} };
- shape "LEDS" { [ 36,15] };
- shape "LED" { [ 5, 2] };
-
- section.left= 17;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- text "Logo" {left = 20; top = 10; text="digital\n"; };
-
- section "Function" { top = 20;
- row { top = 1;
- keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 15 }, <FK07>, <FK08>, <FK09>, <FK10>,
- { <FK11>, 15 }, <FK12>, <FK13>, <FK14>,
- { <FK17>, 75 }, <FK18>, <FK19>, <FK20>
- };
- };
- };
-
- section "Editing" { top = 20; left = 320;
- row { top = 1;
- keys { <HELP>, { <DO>, "LONG" } };
- };
- row { top = 41;
- keys { <FIND>, <INS>, <DELE> };
- };
- row { top = 61;
- keys { <SELE>, <PGUP>, <PGDN> };
- };
- row { top = 81; left= 20;
- keys { <UP> };
- };
- row { top = 101;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- };
-
- section "Keypad" { top = 60; left = 385;
- row { top = 1;
- keys { <KPF1>, <KPF2>, <KPF3>, <KPF4> };
- };
- row {
- top = 21;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row { top = 41;
- keys { <KP4>, <KP5>, <KP6>, <KPCO> };
- };
- row { top = 61;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
- };
- row { top = 81;
- keys { { <KP0>, "LONG" }, <KPDL> };
- };
- };
-
- section "Alpha" { top = 60;
- row { top = 1; left = 15;
- keys { <AE00>,
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "MED" }
- };
- };
- row { top = 21; left = 15;
- keys { { <TAB>, "MED" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
-
- };
- row { top = 41;
- keys { <LCTL>,
- { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
- };
- };
- row { top = 61;
- keys { { <LFSH>, "LONG" },
- <AB00>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "LONG" }
- };
- };
- row { top = 81; left = 29;
- keys { { <LCMP>, "MED" },
- { <LALT>, "MED" },
- { <SPCE>, "SPCE" },
- { <RALT>, "MED" },
- { <RCMP>, "MED" }
- };
- };
- };
-
- section.left = 69;
- section.top = 3;
- section "Indicators" {
- solid "led_panel" { top = 0; left = 0;
- cornerRadius = 1;
- shape = "LEDS";
- color = "grey";
- };
- indicator.onColor = "#00ff00";
- indicator.offColor= "#001000";
- indicator.shape = "LED";
- indicator.top = 1;
- indicator "Scroll Lock" { left = 3; };
- indicator "Caps Lock" { left = 22; };
- };
- section "IndicatorLabels" {
- text.top = 4;
- text.color = "black";
- text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
- text "CapsLockLabel" {left = 22; text="Caps\nLock"; };
- };
-};
-
-xkb_geometry "lk401bj"
-{
- width = 480;
- height = 180;
- shape.cornerRadius = 1;
-
- shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
- shape "RTRN" {
- approx = { [0,0],[23,19] },
- { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] },
- { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] }
- };
- shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
- shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
- shape "MED" { { [28,19] }, { [3,2], [25,16] } };
- shape "CAPS" { { [28,19] }, { [3,2], [18,16] } };
- shape "SPCE" { { [131,19] },{ [3,2], [128,16]} };
- shape "LEDS" { [ 30,15] };
- shape "LED" { [ 5, 2] };
-
- section.left= 17;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- text "Logo" {left = 20; top = 10; text="digital\n"; };
-
- section "Function" { top = 20;
- row { top = 1;
- keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 15 }, <FK07>, <FK08>, <FK09>, <FK10>,
- { <FK11>, 15 }, <FK12>, <FK13>, <FK14>,
- { <FK17>, 75 }, <FK18>, <FK19>, <FK20>
- };
- };
- };
-
- section "Editing" { top = 20; left = 320;
- row { top = 1;
- keys { <HELP>, { <DO>, "LONG" } };
- };
- row { top = 41;
- keys { <FIND>, <INS>, <DELE> };
- };
- row { top = 61;
- keys { <SELE>, <PGUP>, <PGDN> };
- };
- row { top = 81; left = 20;
- keys { <UP> };
- };
- row { top = 101;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- };
-
- section "Keypad" { top = 60; left = 385;
- row { top = 1;
- keys { <PF1>, <PF2>, <PF3>, <PF4> };
- };
- row { top = 21;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row { top = 41;
- keys { <KP4>, <KP5>, <KP6>, <KPCO> };
- };
- row { top = 61;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
- };
- row { top = 81;
- keys { { <KP0>, "LONG" }, <KPDL> };
- };
- };
-
- section "Alpha" { top = 60;
- row { top = 1; left = 15;
- keys { <AE00>,
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "MED" }
- };
- };
- row { top = 21; left = 15;
- keys { { <TAB>, "MED" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
- };
- row { top = 41;
- keys { <LCTL>,
- { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
- };
- };
- row { top = 61;
- keys { { <LFSH>, "LONG" },
- <AB00>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "LONG" }
- };
- };
- row { top = 81; left = 29;
- keys { { <LCMP>, "MED" },
- { <LALT>, "MED" },
- { <SPCE>, "SPCE" },
- { <RALT>, "MED" },
- { <RCMP>, "MED" }
- };
- };
- };
-
- section.left = 69;
- section.top = 3;
-
- section "Indicators" {
- solid "led_panel" { top = 0; left = 0;
- cornerRadius = 1;
- shape = "LEDS";
- color = "grey";
- };
- indicator.onColor = "#00ff00";
- indicator.offColor= "#001000";
- indicator.top = 1;
- indicator.shape= "LED";
- indicator "Scroll Lock" { left = 3; };
- indicator "Caps Lock" { left = 22; };
- text.top = 4;
- text.color = "black";
- text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
- text "CapsLockLabel" {left = 19; text="Caps\nLock"; };
- };
-};
-
-xkb_geometry "lk401jj" {
-
- width = 460;
- height = 180;
- shape.cornerRadius = 1;
-
- shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
- shape "RTRN" {
- approx = { [0,0],[28,23] },
- { [0,0], [28,0], [28,39], [5,39], [5,19], [0,19] },
- { [3,2], [25,2], [25,36], [8,36], [8,16], [3,16] }
- };
- shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
- shape "LONG1" { { [32,19] }, { [3,2], [29,16] } };
- shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
- shape "MED" { { [28,19] }, { [3,2], [25,16] } };
- shape "MED1" { { [23,19] }, { [3,2], [20,16] } };
- shape "CTRL" { { [43,19] }, { [3,2], [38,16] } };
- shape "SPCE" { { [55,19] },{ [3,2], [53,16]} };
- shape "LEDS" { [ 56,15] };
- shape "LED" { [ 5, 2] };
-
- section.left = 5;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- text "Logo" {left = 7; top = 10; text="digital\n"; };
-
- section "Function" { top = 40;
- row { top = 1;
- keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 18 }, <FK07>, <FK08>, <FK09>, <FK10>,
- { <FK11>, 18 }, <FK12>, <FK13>, <FK14>,
- { <FK17>, 73 }, <FK18>, <FK19>, <FK20>
- };
- };
- };
-
- section "Editing" { top = 40; left = 313;
- row { top = 1;
- keys { <HELP>, { <DO>, "LONG" } };
- };
- row { top = 31;
- keys { <FIND>, <INS>, <DELE> };
- };
- row { top = 51;
- keys { <SELE>, <PGUP>, <PGDN> };
- };
- row { top = 71; left= 20;
- keys { <UP> };
- };
- row { top = 91;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- };
-
- section "Keypad" { top = 70; left = 377;
- row { top = 1;
- keys { <PF1>, <PF2>, <PF3>, <PF4> };
- };
- row { top = 21;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row { top = 41;
- keys { <KP4>, <KP5>, <KP6>, <KPCO> };
- };
- row { top = 61;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
- };
- row { top = 81;
- keys { { <KP0>, "LONG" }, <KPDL> };
- };
- };
-
- section "Alpha" { top = 70;
- row { top = 1; left = 7;
- keys { { <AE00>, "MED1" },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- <AB00>, { <BKSP>, "MED1" }
- };
- };
- row { top = 21; left = 7;
- keys { { <TAB>, "LONG1" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
- };
- row { top = 41;
- keys { { <LCTL>, "CTRL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
- };
- };
- row { top = 61;
- keys { <CAPS>, { <LFSH>, "LONG1" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- <AB11>, { <RTSH>, "MED" }
- };
- };
- row { top = 81; left = 7;
- keys { { <LCMP>, "LONG" },
- { <LALT>, "LONG" },
- { <MUHE>, "LONG" },
- { <SPCE>, "SPCE" },
- { <KANJ>, "LONG" },
- { <HIRA>, "LONG" },
- <RALT>, <RCMP>
- };
- };
- };
-
- section.left = 315;
- section.top = 20;
-
- section "Indicators" {
- solid "led_panel" { top = 0; left = 0;
- cornerRadius = 1;
- shape = "LEDS";
- color = "grey";
- };
- indicator.onColor = "#00ff00";
- indicator.offColor= "#001000";
- indicator.top = 11;
- indicator.shape= "LED";
- indicator "Scroll Lock" { left = 6; };
- indicator "Caps Lock" { left = 26; };
- text.top = 4;
- text.color = "black";
- text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
- text "CapsLockLabel" {left = 22; text="Caps\nLock"; };
- };
-};
-
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//Permission is hereby granted, free of charge, to any person obtaining
+//a copy of this software and associated documentation files (the
+//"Software"), to deal in the Software without restriction, including
+//without limitation the rights to use, copy, modify, merge, publish,
+//distribute, sublicense, and sell copies of the Software, and to
+//permit persons to whom the Software is furnished to do so, subject to
+//the following conditions:
+//
+//The above copyright notice and this permission notice shall be included
+//in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
+//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of the Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log: lk,v
+// Revision 1.2 1996/06/18 09:12:47 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.6.2 1995/08/18 21:15:16 William_Walker
+// Upgrade XKB to Protocol Rev. 0.64
+// [1995/08/18 20:41:46 William_Walker]
+//
+// Revision 1.1.2.5 1995/08/11 19:35:47 William_Walker
+// Sync up with Erik's pool.
+// [1995/08/11 18:35:58 William_Walker]
+//
+// Revision 1.1.2.4 1995/06/27 12:17:28 William_Walker
+// Rename <TLDE> to ISO9995 compliant <AE00>.
+// [1995/06/26 20:23:07 William_Walker]
+//
+// Revision 1.1.2.3 1995/06/09 20:54:36 William_Walker
+// Add VT105 layout support and ISO group support
+// [1995/06/09 20:40:38 William_Walker]
+//
+// Revision 1.1.2.2 1995/06/05 19:21:16 William_Walker
+// New file. I love keymaps.
+// [1995/06/05 18:05:43 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: lk,v Revision: 1.2 (DEC) Date: 1996/01/24 12:16:00
+//
+xkb_geometry "lk201" {
+ width = 530;
+ height = 170;
+ shape.cornerRadius = 1;
+
+ shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
+ shape "RTRN" {
+ approx = { [0,0],[23,19] },
+ { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] },
+ { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] }
+ };
+ shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
+ shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
+ shape "MED" { { [28,19] }, { [3,2], [25,16] } };
+ shape "CAPS" { { [28,19] }, { [3,2], [18,16] } };
+ shape "SPCE" { { [171,19] },{ [3,2], [168,16]} };
+ shape "LEDS" { [ 30,15] };
+ shape "LED" { [ 5, 2] };
+
+ section.left= 27;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ section "Function" { top = 20;
+ row { top = 1;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 19 }, <FK07>, <FK08>, <FK09>, <FK10>,
+ { <FK11>, 19 }, <FK12>, <FK13>, <FK14>,
+ { <FK17>, 98 }, <FK18>, <FK19>, <FK20>
+ };
+ };
+ };
+
+ section "Editing" { top = 20; left = 350;
+ row { top = 1;
+ keys { <HELP>, { <DO>, "LONG" } };
+ };
+ row { top = 41;
+ keys { <FIND>, <INS>, <DELE> };
+ };
+ row { top = 61;
+ keys { <SELE>, <PGUP>, <PGDN> };
+ };
+ row { top = 81; left = 20;
+ keys { <UP> };
+ };
+ row { top = 101;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ };
+
+ section "Keypad" { top = 60; left = 426;
+ row { top = 1;
+ keys { <KPF1>, <KPF2>, <KPF3>, <KPF4> };
+ };
+ row { top = 21;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row { top = 41;
+ keys { <KP4>, <KP5>, <KP6>, <KPCO> };
+ };
+ row { top = 61;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
+ };
+ row { top = 81;
+ keys { { <KP0>, "LONG" }, <KPDL> };
+ };
+ };
+
+ section "Alpha" { top = 60;
+ row { top = 1; left = 15;
+ keys { <AE00>,
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "MED" }
+ };
+ };
+ row { top = 21; left = 15;
+ keys { { <TAB>, "MED" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+
+ };
+ row { top = 41;
+ keys { <LCTL>,
+ { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
+ };
+ };
+ row { top = 61;
+ keys { { <LFSH>, "LONG" },
+ <AB00>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "LONG" }
+ };
+ };
+ row { top = 81; left = 26;
+ keys { { <LCMP>, "LONG" },
+ { <SPCE>, "SPCE" }
+ };
+ };
+ };
+
+ section.left = 341;
+ section.top = 3;
+
+ section "Indicators" {
+ indicator.onColor = "#00ff00";
+ indicator.offColor= "#001000";
+ indicator.top = 10;
+ indicator.shape= "LED";
+ indicator "Scroll Lock" { left = 9; };
+ indicator "Caps Lock" { left = 27; };
+ indicator "Compose" { left = 45; };
+ indicator "Wait" { left = 63; };
+ text.top = 4;
+ text.color = "black";
+ text "HoldScreenLabel" {left = 5; text="Hold\n"; };
+ text "CapsLockLabel" {left = 23; text="Lock\n"; };
+ text "ComposeLabel" {left = 37; text="Compose\n"; };
+ text "WaitLabel" {left = 60; text="Wait\n"; };
+ };
+};
+
+xkb_geometry "lk401" {
+
+ width = 480;
+ height = 180;
+ shape.cornerRadius = 1;
+
+ shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
+ shape "RTRN" {
+ approx = { [0,0],[23,19] },
+ { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] },
+ { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] }
+ };
+ shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
+ shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
+ shape "MED" { { [28,19] }, { [3,2], [25,16] } };
+ shape "CAPS" { { [28,19] }, { [3,2], [18,16] } };
+ shape "SPCE" { { [131,19] },{ [3,2], [128,16]} };
+ shape "LEDS" { [ 36,15] };
+ shape "LED" { [ 5, 2] };
+
+ section.left= 17;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ text "Logo" {left = 20; top = 10; text="digital\n"; };
+
+ section "Function" { top = 20;
+ row { top = 1;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 15 }, <FK07>, <FK08>, <FK09>, <FK10>,
+ { <FK11>, 15 }, <FK12>, <FK13>, <FK14>,
+ { <FK17>, 75 }, <FK18>, <FK19>, <FK20>
+ };
+ };
+ };
+
+ section "Editing" { top = 20; left = 320;
+ row { top = 1;
+ keys { <HELP>, { <DO>, "LONG" } };
+ };
+ row { top = 41;
+ keys { <FIND>, <INS>, <DELE> };
+ };
+ row { top = 61;
+ keys { <SELE>, <PGUP>, <PGDN> };
+ };
+ row { top = 81; left= 20;
+ keys { <UP> };
+ };
+ row { top = 101;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ };
+
+ section "Keypad" { top = 60; left = 385;
+ row { top = 1;
+ keys { <KPF1>, <KPF2>, <KPF3>, <KPF4> };
+ };
+ row {
+ top = 21;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row { top = 41;
+ keys { <KP4>, <KP5>, <KP6>, <KPCO> };
+ };
+ row { top = 61;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
+ };
+ row { top = 81;
+ keys { { <KP0>, "LONG" }, <KPDL> };
+ };
+ };
+
+ section "Alpha" { top = 60;
+ row { top = 1; left = 15;
+ keys { <AE00>,
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "MED" }
+ };
+ };
+ row { top = 21; left = 15;
+ keys { { <TAB>, "MED" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+
+ };
+ row { top = 41;
+ keys { <LCTL>,
+ { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
+ };
+ };
+ row { top = 61;
+ keys { { <LFSH>, "LONG" },
+ <AB00>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "LONG" }
+ };
+ };
+ row { top = 81; left = 29;
+ keys { { <LCMP>, "MED" },
+ { <LALT>, "MED" },
+ { <SPCE>, "SPCE" },
+ { <RALT>, "MED" },
+ { <RCMP>, "MED" }
+ };
+ };
+ };
+
+ section.left = 69;
+ section.top = 3;
+ section "Indicators" {
+ solid "led_panel" { top = 0; left = 0;
+ cornerRadius = 1;
+ shape = "LEDS";
+ color = "grey";
+ };
+ indicator.onColor = "#00ff00";
+ indicator.offColor= "#001000";
+ indicator.shape = "LED";
+ indicator.top = 1;
+ indicator "Scroll Lock" { left = 3; };
+ indicator "Caps Lock" { left = 22; };
+ };
+ section "IndicatorLabels" {
+ text.top = 4;
+ text.color = "black";
+ text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
+ text "CapsLockLabel" {left = 22; text="Caps\nLock"; };
+ };
+};
+
+xkb_geometry "lk450" {
+
+ width = 480;
+ height = 180;
+ shape.cornerRadius = 1;
+
+ shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
+ shape "RTRN" {
+ approx = { [0,0],[23,19] },
+ { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] },
+ { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] }
+ };
+ shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
+ shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
+ shape "MED" { { [28,19] }, { [3,2], [25,16] } };
+ shape "CAPS" { { [28,19] }, { [3,2], [18,16] } };
+ shape "SPCE" { { [131,19] },{ [3,2], [128,16]} };
+ shape "LEDS" { [ 36,15] };
+ shape "LED" { [ 5, 2] };
+
+ section.left= 17;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ text "Logo" {left = 20; top = 10; text="digital\n"; };
+
+ section "Function" { top = 20;
+ row { top = 1;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 15 }, <FK07>, <FK08>, <FK09>, <FK10>,
+ { <FK11>, 15 }, <FK12>, <FK13>, <FK14>,
+ { <FK17>, 75 }, <FK18>, <FK19>, <FK20>
+ };
+ };
+ };
+
+ section "Editing" { top = 20; left = 320;
+ row { top = 1;
+ keys { <HELP>, { <DO>, "LONG" } };
+ };
+ row { top = 41;
+ keys { <FIND>, <INS>, <DELE> };
+ };
+ row { top = 61;
+ keys { <SELE>, <PGUP>, <PGDN> };
+ };
+ row { top = 81; left= 20;
+ keys { <UP> };
+ };
+ row { top = 101;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ };
+
+ section "Keypad" { top = 60; left = 385;
+ row { top = 1;
+ keys { <KPF1>, <KPF2>, <KPF3>, <KPF4> };
+ };
+ row {
+ top = 21;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row { top = 41;
+ keys { <KP4>, <KP5>, <KP6>, <KPCO> };
+ };
+ row { top = 61;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
+ };
+ row { top = 81;
+ keys { { <KP0>, "LONG" }, <KPDL> };
+ };
+ };
+
+ section "Alpha" { top = 60;
+ row { top = 1; left = 15;
+ keys { <AE00>,
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "MED" }
+ };
+ };
+ row { top = 21; left = 15;
+ keys { { <TAB>, "MED" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+
+ };
+ row { top = 41;
+ keys { <LCTL>,
+ { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
+ };
+ };
+ row { top = 61;
+ keys { { <LFSH>, "LONG" },
+ <AB00>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "LONG" }
+ };
+ };
+ row { top = 81; left = 29;
+ keys { { <LCMP>, "MED" },
+ { <LALT>, "MED" },
+ { <SPCE>, "SPCE" },
+ { <RALT>, "MED" },
+ { <RCMP>, "MED" }
+ };
+ };
+ };
+
+ section.left = 69;
+ section.top = 3;
+ section "Indicators" {
+ solid "led_panel" { top = 0; left = 0;
+ cornerRadius = 1;
+ shape = "LEDS";
+ color = "grey";
+ };
+ indicator.onColor = "#00ff00";
+ indicator.offColor= "#001000";
+ indicator.shape = "LED";
+ indicator.top = 1;
+ indicator "Scroll Lock" { left = 3; };
+ indicator "Caps Lock" { left = 22; };
+ };
+ section "IndicatorLabels" {
+ text.top = 4;
+ text.color = "black";
+ text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
+ text "CapsLockLabel" {left = 22; text="Caps\nLock"; };
+ };
+};
+
+xkb_geometry "lk401bj"
+{
+ width = 480;
+ height = 180;
+ shape.cornerRadius = 1;
+
+ shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
+ shape "RTRN" {
+ approx = { [0,0],[23,19] },
+ { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] },
+ { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] }
+ };
+ shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
+ shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
+ shape "MED" { { [28,19] }, { [3,2], [25,16] } };
+ shape "CAPS" { { [28,19] }, { [3,2], [18,16] } };
+ shape "SPCE" { { [131,19] },{ [3,2], [128,16]} };
+ shape "LEDS" { [ 30,15] };
+ shape "LED" { [ 5, 2] };
+
+ section.left= 17;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ text "Logo" {left = 20; top = 10; text="digital\n"; };
+
+ section "Function" { top = 20;
+ row { top = 1;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 15 }, <FK07>, <FK08>, <FK09>, <FK10>,
+ { <FK11>, 15 }, <FK12>, <FK13>, <FK14>,
+ { <FK17>, 75 }, <FK18>, <FK19>, <FK20>
+ };
+ };
+ };
+
+ section "Editing" { top = 20; left = 320;
+ row { top = 1;
+ keys { <HELP>, { <DO>, "LONG" } };
+ };
+ row { top = 41;
+ keys { <FIND>, <INS>, <DELE> };
+ };
+ row { top = 61;
+ keys { <SELE>, <PGUP>, <PGDN> };
+ };
+ row { top = 81; left = 20;
+ keys { <UP> };
+ };
+ row { top = 101;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ };
+
+ section "Keypad" { top = 60; left = 385;
+ row { top = 1;
+ keys { <PF1>, <PF2>, <PF3>, <PF4> };
+ };
+ row { top = 21;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row { top = 41;
+ keys { <KP4>, <KP5>, <KP6>, <KPCO> };
+ };
+ row { top = 61;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
+ };
+ row { top = 81;
+ keys { { <KP0>, "LONG" }, <KPDL> };
+ };
+ };
+
+ section "Alpha" { top = 60;
+ row { top = 1; left = 15;
+ keys { <AE00>,
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "MED" }
+ };
+ };
+ row { top = 21; left = 15;
+ keys { { <TAB>, "MED" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row { top = 41;
+ keys { <LCTL>,
+ { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
+ };
+ };
+ row { top = 61;
+ keys { { <LFSH>, "LONG" },
+ <AB00>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "LONG" }
+ };
+ };
+ row { top = 81; left = 29;
+ keys { { <LCMP>, "MED" },
+ { <LALT>, "MED" },
+ { <SPCE>, "SPCE" },
+ { <RALT>, "MED" },
+ { <RCMP>, "MED" }
+ };
+ };
+ };
+
+ section.left = 69;
+ section.top = 3;
+
+ section "Indicators" {
+ solid "led_panel" { top = 0; left = 0;
+ cornerRadius = 1;
+ shape = "LEDS";
+ color = "grey";
+ };
+ indicator.onColor = "#00ff00";
+ indicator.offColor= "#001000";
+ indicator.top = 1;
+ indicator.shape= "LED";
+ indicator "Scroll Lock" { left = 3; };
+ indicator "Caps Lock" { left = 22; };
+ text.top = 4;
+ text.color = "black";
+ text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
+ text "CapsLockLabel" {left = 19; text="Caps\nLock"; };
+ };
+};
+
+xkb_geometry "lk401jj" {
+
+ width = 460;
+ height = 180;
+ shape.cornerRadius = 1;
+
+ shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
+ shape "RTRN" {
+ approx = { [0,0],[28,23] },
+ { [0,0], [28,0], [28,39], [5,39], [5,19], [0,19] },
+ { [3,2], [25,2], [25,36], [8,36], [8,16], [3,16] }
+ };
+ shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
+ shape "LONG1" { { [32,19] }, { [3,2], [29,16] } };
+ shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
+ shape "MED" { { [28,19] }, { [3,2], [25,16] } };
+ shape "MED1" { { [23,19] }, { [3,2], [20,16] } };
+ shape "CTRL" { { [43,19] }, { [3,2], [38,16] } };
+ shape "SPCE" { { [55,19] },{ [3,2], [53,16]} };
+ shape "LEDS" { [ 56,15] };
+ shape "LED" { [ 5, 2] };
+
+ section.left = 5;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ text "Logo" {left = 7; top = 10; text="digital\n"; };
+
+ section "Function" { top = 40;
+ row { top = 1;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 18 }, <FK07>, <FK08>, <FK09>, <FK10>,
+ { <FK11>, 18 }, <FK12>, <FK13>, <FK14>,
+ { <FK17>, 73 }, <FK18>, <FK19>, <FK20>
+ };
+ };
+ };
+
+ section "Editing" { top = 40; left = 313;
+ row { top = 1;
+ keys { <HELP>, { <DO>, "LONG" } };
+ };
+ row { top = 31;
+ keys { <FIND>, <INS>, <DELE> };
+ };
+ row { top = 51;
+ keys { <SELE>, <PGUP>, <PGDN> };
+ };
+ row { top = 71; left= 20;
+ keys { <UP> };
+ };
+ row { top = 91;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ };
+
+ section "Keypad" { top = 70; left = 377;
+ row { top = 1;
+ keys { <PF1>, <PF2>, <PF3>, <PF4> };
+ };
+ row { top = 21;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row { top = 41;
+ keys { <KP4>, <KP5>, <KP6>, <KPCO> };
+ };
+ row { top = 61;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
+ };
+ row { top = 81;
+ keys { { <KP0>, "LONG" }, <KPDL> };
+ };
+ };
+
+ section "Alpha" { top = 70;
+ row { top = 1; left = 7;
+ keys { { <AE00>, "MED1" },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ <AB00>, { <BKSP>, "MED1" }
+ };
+ };
+ row { top = 21; left = 7;
+ keys { { <TAB>, "LONG1" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row { top = 41;
+ keys { { <LCTL>, "CTRL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
+ };
+ };
+ row { top = 61;
+ keys { <CAPS>, { <LFSH>, "LONG1" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ <AB11>, { <RTSH>, "MED" }
+ };
+ };
+ row { top = 81; left = 7;
+ keys { { <LCMP>, "LONG" },
+ { <LALT>, "LONG" },
+ { <MUHE>, "LONG" },
+ { <SPCE>, "SPCE" },
+ { <KANJ>, "LONG" },
+ { <HIRA>, "LONG" },
+ <RALT>, <RCMP>
+ };
+ };
+ };
+
+ section.left = 315;
+ section.top = 20;
+
+ section "Indicators" {
+ solid "led_panel" { top = 0; left = 0;
+ cornerRadius = 1;
+ shape = "LEDS";
+ color = "grey";
+ };
+ indicator.onColor = "#00ff00";
+ indicator.offColor= "#001000";
+ indicator.top = 11;
+ indicator.shape= "LED";
+ indicator "Scroll Lock" { left = 6; };
+ indicator "Caps Lock" { left = 26; };
+ text.top = 4;
+ text.color = "black";
+ text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
+ text "CapsLockLabel" {left = 22; text="Caps\nLock"; };
+ };
+};
diff --git a/xorg-server/xkeyboard-config/geometry/digital_vndr/pc b/xorg-server/xkeyboard-config/geometry/digital_vndr/pc
index ad4ffc655..45589fca0 100644
--- a/xorg-server/xkeyboard-config/geometry/digital_vndr/pc
+++ b/xorg-server/xkeyboard-config/geometry/digital_vndr/pc
@@ -1,350 +1,349 @@
-// $Xorg: pc,v 1.3 2000/08/17 19:54:36 cpqbld Exp $
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//Permission is hereby granted, free of charge, to any person obtaining
-//a copy of this software and associated documentation files (the
-//"Software"), to deal in the Software without restriction, including
-//without limitation the rights to use, copy, modify, merge, publish,
-//distribute, sublicense, and sell copies of the Software, and to
-//permit persons to whom the Software is furnished to do so, subject to
-//the following conditions:
-//
-//The above copyright notice and this permission notice shall be included
-//in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
-//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
-//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of the Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log: pc,v
-// Revision 1.2 1996/06/18 09:12:50 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.6.2 1995/08/18 21:15:18 William_Walker
-// Upgrade XKB to Protocol Rev. 0.64
-// [1995/08/18 20:41:49 William_Walker]
-//
-// Revision 1.1.2.4 1995/08/11 19:35:48 William_Walker
-// Sync up with Erik's pool.
-// [1995/08/11 18:36:03 William_Walker]
-//
-// Revision 1.1.2.3 1995/06/27 12:17:29 William_Walker
-// Rename <TLDE> to ISO9995 compliant <AE00>.
-// [1995/06/26 20:23:10 William_Walker]
-//
-// Revision 1.1.2.2 1995/06/05 19:21:19 William_Walker
-// New file. I love keymaps.
-// [1995/06/05 18:05:51 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: pc,v Revision: 1.2 (DEC) Date: 1996/02/02 14:40:25
-//
-partial xkb_geometry "common" {
- width = 480;
- height = 200;
-
- shape.cornerRadius = 1;
- shape "NORM" { primary = { [18,19] }, { [3,2], [15,16] } };
- shape "KP0" { primary = { [37,19] }, { [3,2], [34,16] } };
- shape "KPAD" { primary = { [18,39] }, { [3,2], [15,36] } };
- shape "LEDS" { [78,22] };
- shape "LED" { [5,2] };
-
- text.color = "black";
- section.left = 17;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- section "Function" { top = 40;
- row { top = 1;
- keys { <ESC>,
- { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 10 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 10 }, <FK10>, <FK11>, <FK12>
- };
- };
- };
-
- section "Editing" { top = 40; left = 308;
- row { top = 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row { top = 41;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row { top = 61;
- keys { <DELE>, <END>, <PGDN> };
- };
- row { top = 101; left = 20;
- keys { <UP> };
- };
- row { top = 121;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- };
-
- section "Keypad" { top = 80; left = 374;
- row { top = 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row { top = 21;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD" } };
- };
- row { top = 41;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row { top = 61;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD" } };
- };
- row { top = 81;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- };
-};
-
-partial xkb_geometry "leds_on_keys" {
- section.top = 40;
- section.left = 17;
- section "LedPanel" {
- indicator.onColor = "#00ff00";
- indicator.offColor = "#001000";
- indicator.shape = "LED";
- indicator "Scroll Lock" { left = 317; top = 5; };
- indicator "Num Lock" { left = 364; top = 45; };
- indicator "Caps Lock" { left = 10; top = 85; };
- };
-
- section.left = 375;
- section.top = 40;
- section "LogoPanel" {
- solid "logo_panel" { top = 0; left = 0;
- shape = "LEDS";
- color = "grey";
- };
- text "Logo" {left = 28; top = 10; text="digital\n"; };
- };
-};
-
-partial xkb_geometry "leds_alone" {
- section.left = 375;
- section.top = 40;
- section "Indicators" {
- solid "led_panel" { top = 0; left = 0;
- shape = "LEDS";
- color = "grey";
- };
- indicator.top = 16;
- indicator.onColor = "#00ff00";
- indicator.offColor = "#001000";
- indicator.shape = "LED";
- indicator "Num Lock" { left = 3; };
- indicator "Caps Lock" { left = 26; };
- indicator "Scroll Lock" { left = 50; };
- text "Logo" {left = 2; top = 3; text="digital\n"; };
- };
- section "IndicatorLabels" {
- text.top = 11;
- text "NumLockLabel" {left = 10; text="Num\nLock"; };
- text "CapsLockLabel" {left = 33; text="Caps\nLock"; };
- text "ScrollLockLabel" {left = 58; text="Scroll\nLock"; };
- };
-};
-
-xkb_geometry "pc101" {
- include "digital_vndr/pc(common)"
-
- shape.cornerRadius = 1;
- shape "BKSP" { primary = { [36,19] }, { [3,2], [33,16] } };
- shape "TABK" { primary = { [27,19] }, { [3,2], [24,16] } };
- shape "RTRN" { primary = { [41,19] }, { [3,2], [38,16] } };
- shape "CAPS" { primary = { [32,19] }, { [3,2], [29,16] } };
- shape "LFSH" { primary = { [41,19] }, { [3,2], [38,16] } };
- shape "RTSH" { primary = { [51,19] }, { [3,2], [49,16] } };
- shape "MODK" { primary = { [27,19] }, { [3,2], [24,16] } };
- shape "BKSL" { primary = { [27,19] }, { [3,2], [24,16] } };
- shape "SPCE" { primary = { [132,19] },{ [3,2], [129,16]} };
-
- section.left = 17;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- section "Alpha" { top = 80;
- row { top = 1;
- keys { <AE00>,
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }
- };
- };
- row { top = 21;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
-
- };
- row { top = 41;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row { top = 61;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, <AB06>,
- <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row { top = 81;
- key.shape = "MODK";
- keys { <LCTL>,
- { <LALT>, 20 },
- { <SPCE>, "SPCE" },
- <RALT>,
- { <RCTL>, 21 }
- };
- };
- };
-};
-
-xkb_geometry "pc102" {
- include "digital_vndr/pc(common)"
-
- shape.cornerRadius = 1;
- shape "BKSP" { primary = { [36,19] }, { [3,2], [33,16] } };
- shape "TABK" { primary = { [27,19] }, { [3,2], [24,16] } };
- shape "RTRN" {
- approx = { [0,0],[28,19] },
- { [0,0], [27,0], [27,39], [5,39], [5,19], [0,19] },
- { [3,2], [24,2], [24,36], [8,36], [8,16], [3,16] }
- };
- shape "CAPS" { primary = { [32,19] }, { [3,2], [29,16] } };
- shape "LFSH" { primary = { [22,19] }, { [3,2], [19,16] } };
- shape "RTSH" { primary = { [51,19] }, { [3,2], [49,16] } };
- shape "MODK" { primary = { [27,19] }, { [3,2], [24,16] } };
- shape "BKSL" { primary = { [27,19] }, { [3,2], [24,16] } };
- shape "SPCE" { primary = { [132,19] },{ [3,2], [129,16]} };
-
- section.left = 17;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- section "Alpha" { top = 80;
- row { top = 1;
- keys { <AE00>,
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }
- };
- };
- row { top = 21;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
-
- };
- row { top = 41;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <AC12>
- };
- };
- row { top = 61;
- keys { { <LFSH>, "LFSH" },
- <BKSL>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row { top = 81;
- key.shape = "MODK";
- keys { <LCTL>,
- { <LALT>, 20 },
- { <SPCE>, "SPCE" },
- <RALT>,
- { <RCTL>, 21 }
- };
- };
- };
-};
-
-xkb_geometry "pcxaj" {
- include "digital_vndr/pc(common)"
-
- shape.cornerRadius = 1;
- shape "BKSP" { primary = { [36,19] }, { [3,2], [33,16] } };
- shape "TABK" { primary = { [27,19] }, { [3,2], [24,16] } };
- shape "RTRN" { primary = { [22,19] }, { [3,2], [19,16] } };
- shape "CAPS" { primary = { [32,19] }, { [3,2], [29,16] } };
- shape "LFSH" { primary = { [41,19] }, { [3,2], [38,16] } };
- shape "RTSH" { primary = { [32,19] }, { [3,2], [29,16] } };
- shape "MODK" { primary = { [27,19] }, { [3,2], [24,16] } };
- shape "BKSL" { primary = { [27,19] }, { [3,2], [24,16] } };
- shape "SPCE" { primary = { [114,19]}, { [3,2], [111,16]} };
-
- section.left = 17;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- section "Alpha" { top = 80;
- row { top = 1;
- keys { <AE00>,
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }
- };
- };
- row { top = 21;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row { top = 41;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <AC12>,
- { <RTRN>, "RTRN" }
- };
- };
- row { top = 61;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, <AB06>,
- <AB07>, <AB08>, <AB09>, <AB10>, <AB11>,
- { <RTSH>, "RTSH" }
- };
- };
- row { top = 81;
- key.shape = "MODK";
- keys { <LCTL>, <LALT>,
- { <MUHE>, "NORM" },
- { <SPCE>, "SPCE" },
- { <KANJ>, "NORM" },
- { <HIRA>, "NORM" },
- <RALT>, <RCTL>
- };
- };
- };
-};
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//Permission is hereby granted, free of charge, to any person obtaining
+//a copy of this software and associated documentation files (the
+//"Software"), to deal in the Software without restriction, including
+//without limitation the rights to use, copy, modify, merge, publish,
+//distribute, sublicense, and sell copies of the Software, and to
+//permit persons to whom the Software is furnished to do so, subject to
+//the following conditions:
+//
+//The above copyright notice and this permission notice shall be included
+//in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
+//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of the Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log: pc,v
+// Revision 1.2 1996/06/18 09:12:50 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.6.2 1995/08/18 21:15:18 William_Walker
+// Upgrade XKB to Protocol Rev. 0.64
+// [1995/08/18 20:41:49 William_Walker]
+//
+// Revision 1.1.2.4 1995/08/11 19:35:48 William_Walker
+// Sync up with Erik's pool.
+// [1995/08/11 18:36:03 William_Walker]
+//
+// Revision 1.1.2.3 1995/06/27 12:17:29 William_Walker
+// Rename <TLDE> to ISO9995 compliant <AE00>.
+// [1995/06/26 20:23:10 William_Walker]
+//
+// Revision 1.1.2.2 1995/06/05 19:21:19 William_Walker
+// New file. I love keymaps.
+// [1995/06/05 18:05:51 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: pc,v Revision: 1.2 (DEC) Date: 1996/02/02 14:40:25
+//
+partial xkb_geometry "common" {
+ width = 480;
+ height = 200;
+
+ shape.cornerRadius = 1;
+ shape "NORM" { primary = { [18,19] }, { [3,2], [15,16] } };
+ shape "KP0" { primary = { [37,19] }, { [3,2], [34,16] } };
+ shape "KPAD" { primary = { [18,39] }, { [3,2], [15,36] } };
+ shape "LEDS" { [78,22] };
+ shape "LED" { [5,2] };
+
+ text.color = "black";
+ section.left = 17;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ section "Function" { top = 40;
+ row { top = 1;
+ keys { <ESC>,
+ { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 10 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 10 }, <FK10>, <FK11>, <FK12>
+ };
+ };
+ };
+
+ section "Editing" { top = 40; left = 308;
+ row { top = 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row { top = 41;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row { top = 61;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row { top = 101; left = 20;
+ keys { <UP> };
+ };
+ row { top = 121;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ };
+
+ section "Keypad" { top = 80; left = 374;
+ row { top = 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row { top = 21;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD" } };
+ };
+ row { top = 41;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row { top = 61;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD" } };
+ };
+ row { top = 81;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ };
+};
+
+partial xkb_geometry "leds_on_keys" {
+ section.top = 40;
+ section.left = 17;
+ section "LedPanel" {
+ indicator.onColor = "#00ff00";
+ indicator.offColor = "#001000";
+ indicator.shape = "LED";
+ indicator "Scroll Lock" { left = 317; top = 5; };
+ indicator "Num Lock" { left = 364; top = 45; };
+ indicator "Caps Lock" { left = 10; top = 85; };
+ };
+
+ section.left = 375;
+ section.top = 40;
+ section "LogoPanel" {
+ solid "logo_panel" { top = 0; left = 0;
+ shape = "LEDS";
+ color = "grey";
+ };
+ text "Logo" {left = 28; top = 10; text="digital\n"; };
+ };
+};
+
+partial xkb_geometry "leds_alone" {
+ section.left = 375;
+ section.top = 40;
+ section "Indicators" {
+ solid "led_panel" { top = 0; left = 0;
+ shape = "LEDS";
+ color = "grey";
+ };
+ indicator.top = 16;
+ indicator.onColor = "#00ff00";
+ indicator.offColor = "#001000";
+ indicator.shape = "LED";
+ indicator "Num Lock" { left = 3; };
+ indicator "Caps Lock" { left = 26; };
+ indicator "Scroll Lock" { left = 50; };
+ text "Logo" {left = 2; top = 3; text="digital\n"; };
+ };
+ section "IndicatorLabels" {
+ text.top = 11;
+ text "NumLockLabel" {left = 10; text="Num\nLock"; };
+ text "CapsLockLabel" {left = 33; text="Caps\nLock"; };
+ text "ScrollLockLabel" {left = 58; text="Scroll\nLock"; };
+ };
+};
+
+xkb_geometry "pc101" {
+ include "digital_vndr/pc(common)"
+
+ shape.cornerRadius = 1;
+ shape "BKSP" { primary = { [36,19] }, { [3,2], [33,16] } };
+ shape "TABK" { primary = { [27,19] }, { [3,2], [24,16] } };
+ shape "RTRN" { primary = { [41,19] }, { [3,2], [38,16] } };
+ shape "CAPS" { primary = { [32,19] }, { [3,2], [29,16] } };
+ shape "LFSH" { primary = { [41,19] }, { [3,2], [38,16] } };
+ shape "RTSH" { primary = { [51,19] }, { [3,2], [49,16] } };
+ shape "MODK" { primary = { [27,19] }, { [3,2], [24,16] } };
+ shape "BKSL" { primary = { [27,19] }, { [3,2], [24,16] } };
+ shape "SPCE" { primary = { [132,19] },{ [3,2], [129,16]} };
+
+ section.left = 17;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ section "Alpha" { top = 80;
+ row { top = 1;
+ keys { <AE00>,
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row { top = 21;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+
+ };
+ row { top = 41;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row { top = 61;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, <AB06>,
+ <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row { top = 81;
+ key.shape = "MODK";
+ keys { <LCTL>,
+ { <LALT>, 20 },
+ { <SPCE>, "SPCE" },
+ <RALT>,
+ { <RCTL>, 21 }
+ };
+ };
+ };
+};
+
+xkb_geometry "pc102" {
+ include "digital_vndr/pc(common)"
+
+ shape.cornerRadius = 1;
+ shape "BKSP" { primary = { [36,19] }, { [3,2], [33,16] } };
+ shape "TABK" { primary = { [27,19] }, { [3,2], [24,16] } };
+ shape "RTRN" {
+ approx = { [0,0],[28,19] },
+ { [0,0], [27,0], [27,39], [5,39], [5,19], [0,19] },
+ { [3,2], [24,2], [24,36], [8,36], [8,16], [3,16] }
+ };
+ shape "CAPS" { primary = { [32,19] }, { [3,2], [29,16] } };
+ shape "LFSH" { primary = { [22,19] }, { [3,2], [19,16] } };
+ shape "RTSH" { primary = { [51,19] }, { [3,2], [49,16] } };
+ shape "MODK" { primary = { [27,19] }, { [3,2], [24,16] } };
+ shape "BKSL" { primary = { [27,19] }, { [3,2], [24,16] } };
+ shape "SPCE" { primary = { [132,19] },{ [3,2], [129,16]} };
+
+ section.left = 17;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ section "Alpha" { top = 80;
+ row { top = 1;
+ keys { <AE00>,
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row { top = 21;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+
+ };
+ row { top = 41;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <AC12>
+ };
+ };
+ row { top = 61;
+ keys { { <LFSH>, "LFSH" },
+ <BKSL>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row { top = 81;
+ key.shape = "MODK";
+ keys { <LCTL>,
+ { <LALT>, 20 },
+ { <SPCE>, "SPCE" },
+ <RALT>,
+ { <RCTL>, 21 }
+ };
+ };
+ };
+};
+
+xkb_geometry "pcxaj" {
+ include "digital_vndr/pc(common)"
+
+ shape.cornerRadius = 1;
+ shape "BKSP" { primary = { [36,19] }, { [3,2], [33,16] } };
+ shape "TABK" { primary = { [27,19] }, { [3,2], [24,16] } };
+ shape "RTRN" { primary = { [22,19] }, { [3,2], [19,16] } };
+ shape "CAPS" { primary = { [32,19] }, { [3,2], [29,16] } };
+ shape "LFSH" { primary = { [41,19] }, { [3,2], [38,16] } };
+ shape "RTSH" { primary = { [32,19] }, { [3,2], [29,16] } };
+ shape "MODK" { primary = { [27,19] }, { [3,2], [24,16] } };
+ shape "BKSL" { primary = { [27,19] }, { [3,2], [24,16] } };
+ shape "SPCE" { primary = { [114,19]}, { [3,2], [111,16]} };
+
+ section.left = 17;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ section "Alpha" { top = 80;
+ row { top = 1;
+ keys { <AE00>,
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row { top = 21;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row { top = 41;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <AC12>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row { top = 61;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, <AB06>,
+ <AB07>, <AB08>, <AB09>, <AB10>, <AB11>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row { top = 81;
+ key.shape = "MODK";
+ keys { <LCTL>, <LALT>,
+ { <MUHE>, "NORM" },
+ { <SPCE>, "SPCE" },
+ { <KANJ>, "NORM" },
+ { <HIRA>, "NORM" },
+ <RALT>, <RCTL>
+ };
+ };
+ };
+};
diff --git a/xorg-server/xkeyboard-config/geometry/digital_vndr/unix b/xorg-server/xkeyboard-config/geometry/digital_vndr/unix
index 2ca477e82..6c13d4326 100644
--- a/xorg-server/xkeyboard-config/geometry/digital_vndr/unix
+++ b/xorg-server/xkeyboard-config/geometry/digital_vndr/unix
@@ -1,230 +1,227 @@
-// $Xorg: unix,v 1.3 2000/08/17 19:54:36 cpqbld Exp $
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//Permission is hereby granted, free of charge, to any person obtaining
-//a copy of this software and associated documentation files (the
-//"Software"), to deal in the Software without restriction, including
-//without limitation the rights to use, copy, modify, merge, publish,
-//distribute, sublicense, and sell copies of the Software, and to
-//permit persons to whom the Software is furnished to do so, subject to
-//the following conditions:
-//
-//The above copyright notice and this permission notice shall be included
-//in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
-//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
-//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of the Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log: unix,v
-// Revision 1.2 1996/06/18 09:12:53 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.2.3 1995/06/27 12:17:30 William_Walker
-// Rename <TLDE> to ISO9995 compliant <AE00>.
-// [1995/06/26 20:23:12 William_Walker]
-//
-// Revision 1.1.2.2 1995/06/05 19:21:23 William_Walker
-// New file. I love keymaps.
-// [1995/06/05 18:05:56 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: unix,v Revision: 1.2 (DEC) Date: 1996/01/24 12:16:
-//
-xkb_geometry "unix" {
-
- width = 340;
- height = 160;
- shape.cornerRadius = 1;
-
- shape "NORM" { primary = { [18,19] }, { [3,2], [15,16] } };
- shape "AE00" { primary = { [28,19] }, { [3,2], [25,16] } };
- shape "BKSP" { primary = { [46,19] }, { [3,2], [43,16] } };
- shape "TABK" { primary = { [37,19] }, { [3,2], [34,16] } };
- shape "CTRL" { primary = { [46,19] }, { [3,2], [43,16] } };
- shape "RTRN" { primary = { [46,19] }, { [3,2], [43,16] } };
- shape "SHFT" { primary = { [56,19] }, { [3,2], [53,16] } };
- shape "MODK" { primary = { [37,19] }, { [3,2], [34,16] } };
- shape "SPCE" { primary = { [132,19] },{ [3,2], [129,16]} };
-
- section.left= 17;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- text.color = "black";
- text "Logo" {left = 20; top = 10; text="digital\n"; };
-
- section "Function" { top = 30;
- row { top = 1;
- keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 20 }, <FK07>, <FK08>, <FK09>, <FK10>,
- { <LEFT>, 20 }, <DOWN>, <UP>, <RGHT>
- };
- };
- };
-
- section "Alpha" { top = 50;
- row { top = 1;
- keys { { <AE00>, "AE00" },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }
- };
- };
- row { top = 21;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- <BKSL>, <AB00>
- };
-
- };
- row { top = 41; left = -4;
- keys { { <LCTL>, "CTRL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row { top = 61; left = -4;
- keys { { <LFSH>, "SHFT" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, <AB06>,
- <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "SHFT" }
- };
- };
- solid "ExtendKey" { top = 81; left= 1;
- shape= "NORM";
- color= "grey20";
- };
- text.top = 89;
- text.color = "black";
- text "ExtendLabel" {left = 6; text="Ext\nend"; };
- row { top = 81; left = 19;
- key.shape = "MODK";
- keys { { <LCMP>, "NORM" }, <LALT>,
- { <SPCE>, "SPCE" },
- <RALT>, <RCMP>
- };
- };
- };
-};
-
-xkb_geometry "lk421jj" {
-
- width = 315;
- height = 170;
- shape.cornerRadius = 1;
-
- shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
- shape "RTRN" {
- approx = { [0,0],[28,23] },
- { [0,0], [28,0], [28,39], [5,39], [5,19], [0,19] },
- { [3,2], [25,2], [25,36], [8,36], [8,16], [3,16] }
- };
- shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
- shape "LONG1" { { [32,19] }, { [3,2], [29,16] } };
- shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
- shape "MED" { { [23,19] }, { [3,2], [20,16] } };
- shape "CTRL" { { [43,19] }, { [3,2], [38,16] } };
- shape "SPCE" { { [55,19] },{ [3,2], [53,16]} };
- shape "LEDS" { [ 56,15] };
- shape "LED" { [ 5, 2] };
-
- section.left = 5;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- text "Logo" {left = 7; top = 10; text="digital\n"; };
-
- section "Function" { top = 45;
- row { top = 1; left = 7;
- keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 18 }, <FK07>, <FK08>, <FK09>, <FK10>
- };
- };
- };
-
- section "Editing" { top = 45; left= 230;
- row { top = 1;
- keys { <LEFT>, <DOWN>, <UP>, <RGHT> };
- };
- };
-
- section "Alpha" { top = 65;
- row { top = 1; left = 7;
- keys { { <AE00>, "MED" },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- <AB00>, { <BKSP>, "MED" }
- };
- };
- row { top = 21; left = 7;
- keys { { <TAB>, "LONG1" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
- };
- row { top = 41;
- keys { { <LCTL>, "CTRL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
- };
- };
- row { top = 61;
- keys { <CAPS>, { <LFSH>, "LONG1" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- <AB11>, { <RTSH>, "LONG1" }
- };
- };
- row { top = 81; left = 7;
- keys { <AA00>, <LCMP>,
- { <LALT>, "LONG" },
- { <MUHE>, "LONG" },
- { <SPCE>, "SPCE" },
- { <KANJ>, "LONG" },
- { <HIRA>, "LONG" },
- <RALT>, <RCMP>
- };
- };
- };
-
- section.left = 233;
- section.top = 20;
-
- section "Indicators" {
- solid "led_panel" { top = 0; left = 0;
- cornerRadius = 1;
- shape = "LEDS";
- color = "grey";
- };
- indicator.onColor = "#00ff00";
- indicator.offColor= "#001000";
- indicator.top = 11;
- indicator.shape= "LED";
- indicator "Scroll Lock" { left = 6; };
- indicator "Caps Lock" { left = 26; };
- text.top = 3;
- text.color = "black";
- text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
- text "CapsLockLabel" {left = 22; text="Caps\nLock"; };
- };
-};
-
-
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//Permission is hereby granted, free of charge, to any person obtaining
+//a copy of this software and associated documentation files (the
+//"Software"), to deal in the Software without restriction, including
+//without limitation the rights to use, copy, modify, merge, publish,
+//distribute, sublicense, and sell copies of the Software, and to
+//permit persons to whom the Software is furnished to do so, subject to
+//the following conditions:
+//
+//The above copyright notice and this permission notice shall be included
+//in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
+//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of the Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log: unix,v
+// Revision 1.2 1996/06/18 09:12:53 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.2.3 1995/06/27 12:17:30 William_Walker
+// Rename <TLDE> to ISO9995 compliant <AE00>.
+// [1995/06/26 20:23:12 William_Walker]
+//
+// Revision 1.1.2.2 1995/06/05 19:21:23 William_Walker
+// New file. I love keymaps.
+// [1995/06/05 18:05:56 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: unix,v Revision: 1.2 (DEC) Date: 1996/01/24 12:16:
+//
+xkb_geometry "unix" {
+
+ width = 340;
+ height = 160;
+ shape.cornerRadius = 1;
+
+ shape "NORM" { primary = { [18,19] }, { [3,2], [15,16] } };
+ shape "AE00" { primary = { [28,19] }, { [3,2], [25,16] } };
+ shape "BKSP" { primary = { [46,19] }, { [3,2], [43,16] } };
+ shape "TABK" { primary = { [37,19] }, { [3,2], [34,16] } };
+ shape "CTRL" { primary = { [46,19] }, { [3,2], [43,16] } };
+ shape "RTRN" { primary = { [46,19] }, { [3,2], [43,16] } };
+ shape "SHFT" { primary = { [56,19] }, { [3,2], [53,16] } };
+ shape "MODK" { primary = { [37,19] }, { [3,2], [34,16] } };
+ shape "SPCE" { primary = { [132,19] },{ [3,2], [129,16]} };
+
+ section.left= 17;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ text.color = "black";
+ text "Logo" {left = 20; top = 10; text="digital\n"; };
+
+ section "Function" { top = 30;
+ row { top = 1;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 20 }, <FK07>, <FK08>, <FK09>, <FK10>,
+ { <LEFT>, 20 }, <DOWN>, <UP>, <RGHT>
+ };
+ };
+ };
+
+ section "Alpha" { top = 50;
+ row { top = 1;
+ keys { { <AE00>, "AE00" },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row { top = 21;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ <BKSL>, <AB00>
+ };
+
+ };
+ row { top = 41; left = -4;
+ keys { { <LCTL>, "CTRL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row { top = 61; left = -4;
+ keys { { <LFSH>, "SHFT" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, <AB06>,
+ <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "SHFT" }
+ };
+ };
+ solid "ExtendKey" { top = 81; left= 1;
+ shape= "NORM";
+ color= "grey20";
+ };
+ text.top = 89;
+ text.color = "black";
+ text "ExtendLabel" {left = 6; text="Ext\nend"; };
+ row { top = 81; left = 19;
+ key.shape = "MODK";
+ keys { { <LCMP>, "NORM" }, <LALT>,
+ { <SPCE>, "SPCE" },
+ <RALT>, <RCMP>
+ };
+ };
+ };
+};
+
+xkb_geometry "lk421jj" {
+
+ width = 315;
+ height = 170;
+ shape.cornerRadius = 1;
+
+ shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
+ shape "RTRN" {
+ approx = { [0,0],[28,23] },
+ { [0,0], [28,0], [28,39], [5,39], [5,19], [0,19] },
+ { [3,2], [25,2], [25,36], [8,36], [8,16], [3,16] }
+ };
+ shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
+ shape "LONG1" { { [32,19] }, { [3,2], [29,16] } };
+ shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
+ shape "MED" { { [23,19] }, { [3,2], [20,16] } };
+ shape "CTRL" { { [43,19] }, { [3,2], [38,16] } };
+ shape "SPCE" { { [55,19] },{ [3,2], [53,16]} };
+ shape "LEDS" { [ 56,15] };
+ shape "LED" { [ 5, 2] };
+
+ section.left = 5;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ text "Logo" {left = 7; top = 10; text="digital\n"; };
+
+ section "Function" { top = 45;
+ row { top = 1; left = 7;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 18 }, <FK07>, <FK08>, <FK09>, <FK10>
+ };
+ };
+ };
+
+ section "Editing" { top = 45; left= 230;
+ row { top = 1;
+ keys { <LEFT>, <DOWN>, <UP>, <RGHT> };
+ };
+ };
+
+ section "Alpha" { top = 65;
+ row { top = 1; left = 7;
+ keys { { <AE00>, "MED" },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ <AB00>, { <BKSP>, "MED" }
+ };
+ };
+ row { top = 21; left = 7;
+ keys { { <TAB>, "LONG1" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row { top = 41;
+ keys { { <LCTL>, "CTRL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
+ };
+ };
+ row { top = 61;
+ keys { <CAPS>, { <LFSH>, "LONG1" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ <AB11>, { <RTSH>, "LONG1" }
+ };
+ };
+ row { top = 81; left = 7;
+ keys { <AA00>, <LCMP>,
+ { <LALT>, "LONG" },
+ { <MUHE>, "LONG" },
+ { <SPCE>, "SPCE" },
+ { <KANJ>, "LONG" },
+ { <HIRA>, "LONG" },
+ <RALT>, <RCMP>
+ };
+ };
+ };
+
+ section.left = 233;
+ section.top = 20;
+
+ section "Indicators" {
+ solid "led_panel" { top = 0; left = 0;
+ cornerRadius = 1;
+ shape = "LEDS";
+ color = "grey";
+ };
+ indicator.onColor = "#00ff00";
+ indicator.offColor= "#001000";
+ indicator.top = 11;
+ indicator.shape= "LED";
+ indicator "Scroll Lock" { left = 6; };
+ indicator "Caps Lock" { left = 26; };
+ text.top = 3;
+ text.color = "black";
+ text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
+ text "CapsLockLabel" {left = 22; text="Caps\nLock"; };
+ };
+};
diff --git a/xorg-server/xkeyboard-config/geometry/everex b/xorg-server/xkeyboard-config/geometry/everex
index e70490680..8cc094760 100644
--- a/xorg-server/xkeyboard-config/geometry/everex
+++ b/xorg-server/xkeyboard-config/geometry/everex
@@ -1,172 +1,170 @@
-// $Xorg: everex,v 1.3 2000/08/17 19:54:35 cpqbld Exp $
-//
-default xkb_geometry "STEPnote" {
-
- description= "Everex STEPnote";
- width= 281;
- height= 150;
-
- shape.cornerRadius= 1;
-
- shape "NORM" {
- { [17,17] },
- { [ 2, 1], [ 15, 15 ] }
- };
- shape "NARR" {
- { [ 15, 17 ] },
- { [ 2, 1 ], [ 13, 15 ] }
- };
- shape "FKEY" {
- { [ 15.1, 15.5 ] },
- { [ 1, 1 ], [ 14.1, 14.5 ] }
- };
- shape "ESC" {
- { [ 16.4, 15.5 ] },
- { [ 1, 1 ], [ 14.1, 14.5 ] }
- };
- shape "WIDE" { // backspace, tab and Fn
- { [ 25, 17 ] },
- { [ 2, 1 ], [ 23, 15 ] }
- };
- shape "RTRN" {
- { [ 27.5, 17 ] },
- { [ 2, 1 ], [ 25.5, 15 ] }
- };
- shape "CAPS" {
- { [ 30, 17 ] },
- { [ 2, 1 ], [ 28, 15 ] }
- };
- shape "LFSH" {
- { [ 38.5, 17 ] },
- { [ 2, 1 ], [ 36.5, 15 ] }
- };
- shape "RTSH" {
- { [ 21, 17 ] },
- { [ 2, 1 ], [ 19, 15 ] }
- };
- shape "SPCE" {
- { [ 88.8, 17 ] },
- { [ 2, 1 ], [ 86.8, 15 ] }
- };
- shape "WELL" {
- { [ 269, 105 ] }
- };
- shape "LED" {
- cornerRadius= 1.5,
- { [ 3, 10 ] }
- };
-
- section.left= 6;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 0.5;
-
- key.color= "grey20";
- labelColor= "white";
- baseColor= "grey20";
-
- indicator.top= 20;
- indicator.shape= "LED";
- indicator.onColor= "green";
- indicator.offColor= "green30";
-
- indicator "Power" { left= 40; };
- indicator "Battery" { left=101; };
- indicator "Suspend" { left=112; };
- indicator "HardDrive" { left=123; };
- indicator "Floppy" { left=134; };
- indicator "KeyPad" { left=145; };
- indicator "Num Lock" { left=156; };
- indicator "Caps Lock" { left=167; };
- indicator "Scroll Lock" { left=178; };
-
- solid "KeyWell" {
- top= 35;
- left= 6;
- shape= "WELL";
- color= "grey10";
- };
- section "Whole" {
- top= 35;
- row {
- top= 0.5;
- key.color= "grey30";
- key.shape= "FKEY";
- keys {
- { <ESC>, "ESC" },
- <FK01>, <FK02>, <FK03>, <FK04>, <FK05>, <FK06>,
- <FK07>, <FK08>, <FK09>, <FK10>, <FK11>, <FK12>,
- <NMLK>, <PRSC>, <SCLK>, <PAUS>
- };
- };
- row {
- top= 16.5;
- keys {
- { <TLDE>, "NARR" },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, shape="WIDE", color="grey30" },
- { <HOME>, shape="NARR", color="grey30" }
- };
- };
- row {
- top= 34;
- keys {
- { <TAB>, shape="WIDE", color="grey30" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <BKSL>, "NARR" },
- { <PGUP>, shape="NARR", color="grey30" }
- };
- };
- row {
- top= 51.5;
- keys {
- { <CAPS>, shape="CAPS", color="grey30" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, shape="RTRN", color="grey30" },
- { <PGDN>, shape="NARR", color="grey30" }
- };
- };
- row {
- top= 69;
- keys {
- { <LFSH>, shape="LFSH", color="grey30" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, shape="RTSH", color="grey30" },
- { <UP>, shape="NARR", color="grey30" },
- { <END>, shape="NARR", color="grey30" }
- };
- };
- row {
- top= 86.5;
- key.color= "grey30";
- keys {
- { <FUNC>, "WIDE" },
- <LCTL>, <LALT>,
- { <SPCE>, shape="SPCE", 18, color="grey20" },
- <RALT>, <INS>, <DELE>,
- { <LEFT>, "NARR" }, { <DOWN>, "NARR" },
- { <RGHT>, "NARR" }
- };
- };
- solid "FakeKey" {
- top= 86.5;
- left= 62.1;
- shape= "NORM";
- color= "grey20";
- };
- overlay "KPAD" {
- <AE07>=<KP7>, <AE08>=<KP8>, <AE09>=<KP9>, <AE10>=<KPMU>,
- <AD07>=<KP4>, <AD08>=<KP5>, <AD09>=<KP6>, <AD10>=<KPSU>,
- <AC07>=<KP1>, <AC08>=<KP2>, <AC09>=<KP3>, <AC10>=<KPAD>,
- <AB07>=<KP0>, <AB09>=<KPDL>, <AB10>=<KPSL>
- };
- }; // End of "Whole" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
+default xkb_geometry "STEPnote" {
+
+ description= "Everex STEPnote";
+ width= 281;
+ height= 150;
+
+ shape.cornerRadius= 1;
+
+ shape "NORM" {
+ { [17,17] },
+ { [ 2, 1], [ 15, 15 ] }
+ };
+ shape "NARR" {
+ { [ 15, 17 ] },
+ { [ 2, 1 ], [ 13, 15 ] }
+ };
+ shape "FKEY" {
+ { [ 15.1, 15.5 ] },
+ { [ 1, 1 ], [ 14.1, 14.5 ] }
+ };
+ shape "ESC" {
+ { [ 16.4, 15.5 ] },
+ { [ 1, 1 ], [ 14.1, 14.5 ] }
+ };
+ shape "WIDE" { // backspace, tab and Fn
+ { [ 25, 17 ] },
+ { [ 2, 1 ], [ 23, 15 ] }
+ };
+ shape "RTRN" {
+ { [ 27.5, 17 ] },
+ { [ 2, 1 ], [ 25.5, 15 ] }
+ };
+ shape "CAPS" {
+ { [ 30, 17 ] },
+ { [ 2, 1 ], [ 28, 15 ] }
+ };
+ shape "LFSH" {
+ { [ 38.5, 17 ] },
+ { [ 2, 1 ], [ 36.5, 15 ] }
+ };
+ shape "RTSH" {
+ { [ 21, 17 ] },
+ { [ 2, 1 ], [ 19, 15 ] }
+ };
+ shape "SPCE" {
+ { [ 88.8, 17 ] },
+ { [ 2, 1 ], [ 86.8, 15 ] }
+ };
+ shape "WELL" {
+ { [ 269, 105 ] }
+ };
+ shape "LED" {
+ cornerRadius= 1.5,
+ { [ 3, 10 ] }
+ };
+
+ section.left= 6;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 0.5;
+
+ key.color= "grey20";
+ labelColor= "white";
+ baseColor= "grey20";
+
+ indicator.top= 20;
+ indicator.shape= "LED";
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+
+ indicator "Power" { left= 40; };
+ indicator "Battery" { left=101; };
+ indicator "Suspend" { left=112; };
+ indicator "HardDrive" { left=123; };
+ indicator "Floppy" { left=134; };
+ indicator "KeyPad" { left=145; };
+ indicator "Num Lock" { left=156; };
+ indicator "Caps Lock" { left=167; };
+ indicator "Scroll Lock" { left=178; };
+
+ solid "KeyWell" {
+ top= 35;
+ left= 6;
+ shape= "WELL";
+ color= "grey10";
+ };
+ section "Whole" {
+ top= 35;
+ row {
+ top= 0.5;
+ key.color= "grey30";
+ key.shape= "FKEY";
+ keys {
+ { <ESC>, "ESC" },
+ <FK01>, <FK02>, <FK03>, <FK04>, <FK05>, <FK06>,
+ <FK07>, <FK08>, <FK09>, <FK10>, <FK11>, <FK12>,
+ <NMLK>, <PRSC>, <SCLK>, <PAUS>
+ };
+ };
+ row {
+ top= 16.5;
+ keys {
+ { <TLDE>, "NARR" },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, shape="WIDE", color="grey30" },
+ { <HOME>, shape="NARR", color="grey30" }
+ };
+ };
+ row {
+ top= 34;
+ keys {
+ { <TAB>, shape="WIDE", color="grey30" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <BKSL>, "NARR" },
+ { <PGUP>, shape="NARR", color="grey30" }
+ };
+ };
+ row {
+ top= 51.5;
+ keys {
+ { <CAPS>, shape="CAPS", color="grey30" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, shape="RTRN", color="grey30" },
+ { <PGDN>, shape="NARR", color="grey30" }
+ };
+ };
+ row {
+ top= 69;
+ keys {
+ { <LFSH>, shape="LFSH", color="grey30" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, shape="RTSH", color="grey30" },
+ { <UP>, shape="NARR", color="grey30" },
+ { <END>, shape="NARR", color="grey30" }
+ };
+ };
+ row {
+ top= 86.5;
+ key.color= "grey30";
+ keys {
+ { <FUNC>, "WIDE" },
+ <LCTL>, <LALT>,
+ { <SPCE>, shape="SPCE", 18, color="grey20" },
+ <RALT>, <INS>, <DELE>,
+ { <LEFT>, "NARR" }, { <DOWN>, "NARR" },
+ { <RGHT>, "NARR" }
+ };
+ };
+ solid "FakeKey" {
+ top= 86.5;
+ left= 62.1;
+ shape= "NORM";
+ color= "grey20";
+ };
+ overlay "KPAD" {
+ <AE07>=<KP7>, <AE08>=<KP8>, <AE09>=<KP9>, <AE10>=<KPMU>,
+ <AD07>=<KP4>, <AD08>=<KP5>, <AD09>=<KP6>, <AD10>=<KPSU>,
+ <AC07>=<KP1>, <AC08>=<KP2>, <AC09>=<KP3>, <AC10>=<KPAD>,
+ <AB07>=<KP0>, <AB09>=<KPDL>, <AB10>=<KPSL>
+ };
+ }; // End of "Whole" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
diff --git a/xorg-server/xkeyboard-config/geometry/fujitsu b/xorg-server/xkeyboard-config/geometry/fujitsu
index 02fe0bc20..1cc5dddca 100644
--- a/xorg-server/xkeyboard-config/geometry/fujitsu
+++ b/xorg-server/xkeyboard-config/geometry/fujitsu
@@ -1,315 +1,314 @@
-// $Xorg: fujitsu,v 1.4 2001/02/09 02:05:49 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-default xkb_geometry "138" {
-
- // This is an approximate layout for a (US/ASCII) Fujitsu keyboard.
-
- description= "Fujitsu English keyboard";
-
- width= 480;
- height= 215;
-
- shape "EDGE" { cornerRadius= 2, { [ 480, 215 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [ 25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,19], [ 0,19] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,18], [ 1,18] }
- };
- shape "LFSH" { { [ 41,18] }, { [2,1], [ 39,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [ 31,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "SPCE" { { [151,18] }, { [2,1], [149,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
- shape "EXEC" { { [ 57,18] }, { [2,1], [ 55,17] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 15;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
-
- section "Alpha" {
- top= 28;
- row {
- top= 1;
- keys {
- <BREA>, { <PRSC>, 6 },
- { <FK13>, 30 }, <FK14>, <FK15>, <FK16>,
- { <FK17>, 6 }, <FK18>, <FK19>, <FK20>,
- { <FK21>, 6 }, <FK22>, <FK23>, <FK24>,
- { <FK29>, 68 }, <FK30>, <FK31>, <FK32>
- };
- };
- row {
- top= 20;
- keys {
- <KNJI>, { <PAUS>, 6 },
- { <FK01>, 30 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 6 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 6 }, <FK10>, <FK11>, <FK12>,
- { <UNK0>, 6 }, <UNK1>, <UNK2>,
- { <FK25>, 6 }, <FK26>, <FK27>, <FK28>
- };
- };
- row {
- top= 39;
- left= 316;
- keys {
- <PGUP>, <HOME>, <PGDN>
- };
- };
- row {
- top= 54;
- keys {
- <UNDO>, { <ESC>, 6 },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
- <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
- <AE11>, <AE12>, <TLDE>, <BKSP>,
- { <KPMU>, 68 }, <KPDV>, <KPAD>, <KPSU>
-
- };
- };
- row {
- top= 58;
- left= 316;
- keys {
- <UNK3>, <DEL>, <INS>
- };
- };
- row {
- top= 73;
- keys { <COPY>,
- { <TAB>, 6, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" },
- { <KP7>, 68 }, <KP8>, <KP9>, <KPEQ>
- };
- };
- row {
- top= 92;
- keys { <PAST>,
- { <LCTL>, 6, "LCTL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>,
- { <UP>, 49 },
- { <KP4>, 25 }, <KP5>, <KP6>, <KPDC>
- };
- };
- row {
- top= 102;
- left= 316;
- keys { <LEFT>, { <RGHT>, 19 }
- };
- };
- row {
- top= 111;
- keys { <CUT>,
- { <LFSH>, 6 , "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- <AB11>, { <RTSH>, "RTSH" },
- { <DOWN>, 25 },
- { <KP1>, 25 }, <KP2>, <KP3>, { <KPEN>, "KPEN" }
- };
- };
- row {
- top= 130;
- keys { <HELP>, { <CAPS>, 6 },
- <LALT>, <LMTA>,
- { <SPCE>, "SPCE" },
- <RMTA>, <RALT>, <COMP>, <LNFD>,
- { <KP0>, 68, "KP0" }, <KP00>
- };
- };
- row {
- top= 149;
- left= 316;
- keys {
- { <EXEC>, "EXEC" }
- };
- };
- }; // End of "Alpha" section
-};
-
-xkb_geometry "140" {
-
- // This is an approximate layout for a Fujitsu Japanese keyboard.
-
- description= "Fujitsu Japanese keyboard";
-
- width= 480;
- height= 215;
-
- shape "EDGE" { cornerRadius= 2, { [ 480, 215 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [ 25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,19], [ 0,19] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,18], [ 1,18] }
- };
- shape "LFSH" { { [ 41,18] }, { [2,1], [ 39,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [ 31,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "SPCE" { { [113,18] }, { [2,1], [111,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
- shape "HNKN" { { [ 23,18] }, { [2,1], [ 21,17] } };
- shape "EXEC" { { [ 57,18] }, { [2,1], [ 55,17] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 15;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
-
- section "Alpha" {
- top= 28;
- row {
- top= 1;
- keys {
- <BREA>, { <PRSC>, 6 },
- { <FK13>, 30 }, <FK14>, <FK15>, <FK16>,
- { <FK17>, 6 }, <FK18>, <FK19>, <FK20>,
- { <FK21>, 6 }, <FK22>, <FK23>, <FK24>,
- { <FK29>, 68 }, <FK30>, <FK31>, <FK32>
- };
- };
- row {
- top= 20;
- keys {
- <KNJI>, { <PAUS>, 6 },
- { <FK01>, 30 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 6 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 6 }, <FK10>, <FK11>, <FK12>,
- { <UNK0>, 6 }, <UNK1>, <UNK2>,
- { <FK25>, 6 }, <FK26>, <FK27>, <FK28>
- };
- };
- row {
- top= 39;
- left= 316;
- keys {
- <PGUP>, <HOME>, <PGDN>
- };
- };
- row {
- top= 54;
- keys {
- <UNDO>, { <ESC>, 6 },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
- <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
- <AE11>, <AE12>, <BKSL>, <BKSP>,
- { <KPMU>, 68 }, <KPDV>, <KPAD>, <KPSU>
-
- };
- };
- row {
- top= 58;
- left= 316;
- keys {
- <UNK3>, <DEL>, <INS>
- };
- };
- row {
- top= 73;
- keys { <COPY>,
- { <TAB>, 6, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" },
- { <KP7>, 68 }, <KP8>, <KP9>, <KPEQ>
- };
- };
- row {
- top= 92;
- keys { <PAST>,
- { <LCTL>, 6, "LCTL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <TLDE>,
- { <UP>, 49 },
- { <KP4>, 25 }, <KP5>, <KP6>, <KPDC>
- };
- };
- row {
- top= 102;
- left= 316;
- keys { <LEFT>, { <RGHT>, 19 }
- };
- };
- row {
- top= 111;
- keys { <CUT>,
- { <LFSH>, 6 , "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- <AB11>, { <RTSH>, "RTSH" },
- { <DOWN>, 25 },
- { <KP1>, 25 }, <KP2>, <KP3>, { <KPEN>, "KPEN" }
- };
- };
- row {
- top= 130;
- keys { <HELP>, { <CAPS>, 6 },
- <LALT>, <LMTA>, <UNK4>,
- { <SPCE>, "SPCE" },
- <UNK5>, <RMTA>, <COMP>, <LNFD>, <UNK6>,
- { <KP0>, 68, "KP0" }, <KP00>
- };
- };
- row {
- top= 149;
- left= 134;
- keys {
- { <UNK7>, "HNKN" }, { <UNK8>, "HNKN" },
- { <EXEC>, 132, "EXEC" }
- };
- };
- }; // End of "Alpha" section
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+default xkb_geometry "138" {
+
+ // This is an approximate layout for a (US/ASCII) Fujitsu keyboard.
+
+ description= "Fujitsu English keyboard";
+
+ width= 480;
+ height= 215;
+
+ shape "EDGE" { cornerRadius= 2, { [ 480, 215 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [ 25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,19], [ 0,19] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,18], [ 1,18] }
+ };
+ shape "LFSH" { { [ 41,18] }, { [2,1], [ 39,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [ 31,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "SPCE" { { [151,18] }, { [2,1], [149,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
+ shape "EXEC" { { [ 57,18] }, { [2,1], [ 55,17] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 15;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+
+ section "Alpha" {
+ top= 28;
+ row {
+ top= 1;
+ keys {
+ <BREA>, { <PRSC>, 6 },
+ { <FK13>, 30 }, <FK14>, <FK15>, <FK16>,
+ { <FK17>, 6 }, <FK18>, <FK19>, <FK20>,
+ { <FK21>, 6 }, <FK22>, <FK23>, <FK24>,
+ { <FK29>, 68 }, <FK30>, <FK31>, <FK32>
+ };
+ };
+ row {
+ top= 20;
+ keys {
+ <KNJI>, { <PAUS>, 6 },
+ { <FK01>, 30 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 6 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 6 }, <FK10>, <FK11>, <FK12>,
+ { <UNK0>, 6 }, <UNK1>, <UNK2>,
+ { <FK25>, 6 }, <FK26>, <FK27>, <FK28>
+ };
+ };
+ row {
+ top= 39;
+ left= 316;
+ keys {
+ <PGUP>, <HOME>, <PGDN>
+ };
+ };
+ row {
+ top= 54;
+ keys {
+ <UNDO>, { <ESC>, 6 },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
+ <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
+ <AE11>, <AE12>, <TLDE>, <BKSP>,
+ { <KPMU>, 68 }, <KPDV>, <KPAD>, <KPSU>
+
+ };
+ };
+ row {
+ top= 58;
+ left= 316;
+ keys {
+ <UNK3>, <DEL>, <INS>
+ };
+ };
+ row {
+ top= 73;
+ keys { <COPY>,
+ { <TAB>, 6, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" },
+ { <KP7>, 68 }, <KP8>, <KP9>, <KPEQ>
+ };
+ };
+ row {
+ top= 92;
+ keys { <PAST>,
+ { <LCTL>, 6, "LCTL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>,
+ { <UP>, 49 },
+ { <KP4>, 25 }, <KP5>, <KP6>, <KPDC>
+ };
+ };
+ row {
+ top= 102;
+ left= 316;
+ keys { <LEFT>, { <RGHT>, 19 }
+ };
+ };
+ row {
+ top= 111;
+ keys { <CUT>,
+ { <LFSH>, 6 , "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ <AB11>, { <RTSH>, "RTSH" },
+ { <DOWN>, 25 },
+ { <KP1>, 25 }, <KP2>, <KP3>, { <KPEN>, "KPEN" }
+ };
+ };
+ row {
+ top= 130;
+ keys { <HELP>, { <CAPS>, 6 },
+ <LALT>, <LMTA>,
+ { <SPCE>, "SPCE" },
+ <RMTA>, <RALT>, <COMP>, <LNFD>,
+ { <KP0>, 68, "KP0" }, <KP00>
+ };
+ };
+ row {
+ top= 149;
+ left= 316;
+ keys {
+ { <EXEC>, "EXEC" }
+ };
+ };
+ }; // End of "Alpha" section
+};
+
+xkb_geometry "140" {
+
+ // This is an approximate layout for a Fujitsu Japanese keyboard.
+
+ description= "Fujitsu Japanese keyboard";
+
+ width= 480;
+ height= 215;
+
+ shape "EDGE" { cornerRadius= 2, { [ 480, 215 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [ 25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,19], [ 0,19] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,18], [ 1,18] }
+ };
+ shape "LFSH" { { [ 41,18] }, { [2,1], [ 39,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [ 31,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "SPCE" { { [113,18] }, { [2,1], [111,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
+ shape "HNKN" { { [ 23,18] }, { [2,1], [ 21,17] } };
+ shape "EXEC" { { [ 57,18] }, { [2,1], [ 55,17] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 15;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+
+ section "Alpha" {
+ top= 28;
+ row {
+ top= 1;
+ keys {
+ <BREA>, { <PRSC>, 6 },
+ { <FK13>, 30 }, <FK14>, <FK15>, <FK16>,
+ { <FK17>, 6 }, <FK18>, <FK19>, <FK20>,
+ { <FK21>, 6 }, <FK22>, <FK23>, <FK24>,
+ { <FK29>, 68 }, <FK30>, <FK31>, <FK32>
+ };
+ };
+ row {
+ top= 20;
+ keys {
+ <KNJI>, { <PAUS>, 6 },
+ { <FK01>, 30 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 6 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 6 }, <FK10>, <FK11>, <FK12>,
+ { <UNK0>, 6 }, <UNK1>, <UNK2>,
+ { <FK25>, 6 }, <FK26>, <FK27>, <FK28>
+ };
+ };
+ row {
+ top= 39;
+ left= 316;
+ keys {
+ <PGUP>, <HOME>, <PGDN>
+ };
+ };
+ row {
+ top= 54;
+ keys {
+ <UNDO>, { <ESC>, 6 },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
+ <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
+ <AE11>, <AE12>, <BKSL>, <BKSP>,
+ { <KPMU>, 68 }, <KPDV>, <KPAD>, <KPSU>
+
+ };
+ };
+ row {
+ top= 58;
+ left= 316;
+ keys {
+ <UNK3>, <DEL>, <INS>
+ };
+ };
+ row {
+ top= 73;
+ keys { <COPY>,
+ { <TAB>, 6, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" },
+ { <KP7>, 68 }, <KP8>, <KP9>, <KPEQ>
+ };
+ };
+ row {
+ top= 92;
+ keys { <PAST>,
+ { <LCTL>, 6, "LCTL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <TLDE>,
+ { <UP>, 49 },
+ { <KP4>, 25 }, <KP5>, <KP6>, <KPDC>
+ };
+ };
+ row {
+ top= 102;
+ left= 316;
+ keys { <LEFT>, { <RGHT>, 19 }
+ };
+ };
+ row {
+ top= 111;
+ keys { <CUT>,
+ { <LFSH>, 6 , "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ <AB11>, { <RTSH>, "RTSH" },
+ { <DOWN>, 25 },
+ { <KP1>, 25 }, <KP2>, <KP3>, { <KPEN>, "KPEN" }
+ };
+ };
+ row {
+ top= 130;
+ keys { <HELP>, { <CAPS>, 6 },
+ <LALT>, <LMTA>, <UNK4>,
+ { <SPCE>, "SPCE" },
+ <UNK5>, <RMTA>, <COMP>, <LNFD>, <UNK6>,
+ { <KP0>, 68, "KP0" }, <KP00>
+ };
+ };
+ row {
+ top= 149;
+ left= 134;
+ keys {
+ { <UNK7>, "HNKN" }, { <UNK8>, "HNKN" },
+ { <EXEC>, 132, "EXEC" }
+ };
+ };
+ }; // End of "Alpha" section
+};
diff --git a/xorg-server/xkeyboard-config/geometry/hhk b/xorg-server/xkeyboard-config/geometry/hhk
index 901642b10..0f1cc0503 100644
--- a/xorg-server/xkeyboard-config/geometry/hhk
+++ b/xorg-server/xkeyboard-config/geometry/hhk
@@ -1,268 +1,266 @@
-// $XKeyboardConfig$
-//
-// XKB geometry for the Happy Hacking Keyboard (Lite).
-// Different variants correspond to different switch
-// settings on the HHK.
-//
-// Copyright (c) Doug Palmer <doug@charvolant.org>, 2002
-//
-//Permission is hereby granted, free of charge, to any person obtaining a copy
-//of this software and associated documentation files (the "Software"), to deal
-//in the Software without restriction, including without limitation the rights
-//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-//copies of the Software, and to permit persons to whom the Software is
-//furnished to do so, subject to the following conditions:
-//
-//The above copyright notice and this permission notice shall be included in
-//all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-//THE SOFTWARE.
-
-// SW = 100 Default layout with windows keys
-default xkb_geometry "win1" {
- include "hhk(basic)"
-
- key.gap = 1;
- section "Space" {
- top = 86;
- left = 30;
- row {
- top = 1;
- keys {
- <LALT>,
- { <LWIN>, "DIAM" },
- { <SPCE>, "SPCE" },
- { <RWIN>, "DIAM" },
- <RALT>
- };
- };
- };
-};
-
-// SW = 101 Layout with windows and alt keys swapped
-xkb_geometry "win2" {
- include "hhk(basic)"
-
- key.gap = 1;
- section "Space" {
- top = 86;
- left = 30;
- row {
- top = 1;
- keys {
- <LWIN>,
- { <LALT>, "DIAM" },
- { <SPCE>, "SPCE" },
- { <RALT>, "DIAM" },
- <RWIN>
- };
- };
- };
-};
-
-// SW = 110 Default layout with windows keys, and left diamond = Fn key
-xkb_geometry "win3" {
- include "hhk(basic)"
-
- key.gap = 1;
- section "Space" {
- top = 86;
- left = 30;
- row {
- top = 1;
- keys {
- <LALT>,
- { <FN>, "DIAM" },
- { <SPCE>, "SPCE" },
- { <RWIN>, "DIAM" },
- <RALT>
- };
- };
- };
-};
-
-// SW = 101 Layout with windows and alt keys swapped and left-Alt = Fn key
-xkb_geometry "win4" {
- include "hhk(basic)"
-
- key.gap = 1;
- section "Space" {
- top = 86;
- left = 30;
- row {
- top = 1;
- keys {
- <FN>,
- { <LALT>, "DIAM" },
- { <SPCE>, "SPCE" },
- { <RALT>, "DIAM" },
- <RWIN>
- };
- };
- };
-};
-
-// SW = 000 Layout with Muhenkan and Henkan keys
-xkb_geometry "jp1" {
- include "hhk(basic)"
-
- key.gap = 1;
- section "Space" {
- top = 86;
- left = 30;
- row {
- top = 1;
- keys {
- <LALT>,
- { <NFER>, "DIAM" },
- { <SPCE>, "SPCE" },
- { <XFER>, "DIAM" },
- <RALT>
- };
- };
- };
-};
-
-// SW = 001 Layout with Muhenkan and Henkan keys swapped with Alt keys
-xkb_geometry "jp2" {
- include "hhk(basic)"
-
- key.gap = 1;
- section "Space" {
- top = 86;
- left = 30;
- row {
- top = 1;
- keys {
- <NFER>,
- { <LALT>, "DIAM" },
- { <SPCE>, "SPCE" },
- { <RALT>, "DIAM" },
- <XFER>
- };
- };
- };
-};
-
-// SW = 010 Layout with Henkan key and left-diamond as Fn
-xkb_geometry "jp3" {
- include "hhk(basic)"
-
- key.gap = 1;
- section "Space" {
- top = 86;
- left = 30;
- row {
- top = 1;
- keys {
- <LALT>,
- { <FN>, "DIAM" },
- { <SPCE>, "SPCE" },
- { <XFER>, "DIAM" },
- <RALT>
- };
- };
- };
-};
-
-// SW = 001 Layout with Henkan key swapped with Alt keys and left-Alt as Fn
-xkb_geometry "jp4" {
- include "hhk(basic)"
-
- key.gap = 1;
- section "Space" {
- top = 86;
- left = 30;
- row {
- top = 1;
- keys {
- <FN>,
- { <LALT>, "DIAM" },
- { <SPCE>, "SPCE" },
- { <RALT>, "DIAM" },
- <XFER>
- };
- };
- };
-};
-
-// Basic layout for non-swictchable keys
-partial hidden xkb_geometry "basic" {
-
- description = "Happy Hacking Keyboard";
- width = 290;
- height = 106;
-
- shape.cornerRadius = 1;
- shape "NORM" { { [18, 18] }, { [2, 1], [14, 14] } };
- shape "BKSP" { { [28, 18] }, { [2, 1], [24, 14] } };
- shape "TABK" { { [28, 18] }, { [2, 1], [24, 14] } };
- shape "CTRL" { { [32, 18] }, { [2, 1], [28, 14] } };
- shape "RTRN" { { [42, 18] }, { [2, 1], [38, 14] } };
- shape "LFSH" { { [42, 18] }, { [2, 1], [38, 14] } };
- shape "RTSH" { { [32, 18] }, { [2, 1], [28, 14] } };
- shape "DIAM" { { [28, 18] }, { [2, 1], [24, 14] } };
- shape "SPCE" { { [114, 18] }, { [2, 1], [110, 14] } };
-
- text.color = "black";
- text "PFULabel" { left = 16; top = 2; fontsize = 20; text = "PFU"; };
- text "HHKLabel" { left = 254; top = 90; text = "Happy Hacking\nKeyboard"; };
-
- section.left = 1;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- section "Alphanumeric" {
- top = 10;
- row {
- top = 1;
- keys {
- <ESC>,
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
- <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
- <AE11>, <AE12>,
- <BKSL>, <TLDE>
- };
- };
- row {
- top = 20;
- keys {
- { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top = 39;
- keys {
- { <LCTL>, "CTRL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top = 58;
- keys {
- { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" },
- { <FN>, color = "grey20" }
- };
- };
- };
-
- alias <AC00> = <LCTL>;
-};
-
+//
+// XKB geometry for the Happy Hacking Keyboard (Lite).
+// Different variants correspond to different switch
+// settings on the HHK.
+//
+// Copyright (c) Doug Palmer <doug@charvolant.org>, 2002
+//
+//Permission is hereby granted, free of charge, to any person obtaining a copy
+//of this software and associated documentation files (the "Software"), to deal
+//in the Software without restriction, including without limitation the rights
+//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+//copies of the Software, and to permit persons to whom the Software is
+//furnished to do so, subject to the following conditions:
+//
+//The above copyright notice and this permission notice shall be included in
+//all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+//THE SOFTWARE.
+
+// SW = 100 Default layout with windows keys
+default xkb_geometry "win1" {
+ include "hhk(basic)"
+
+ key.gap = 1;
+ section "Space" {
+ top = 86;
+ left = 30;
+ row {
+ top = 1;
+ keys {
+ <LALT>,
+ { <LWIN>, "DIAM" },
+ { <SPCE>, "SPCE" },
+ { <RWIN>, "DIAM" },
+ <RALT>
+ };
+ };
+ };
+};
+
+// SW = 101 Layout with windows and alt keys swapped
+xkb_geometry "win2" {
+ include "hhk(basic)"
+
+ key.gap = 1;
+ section "Space" {
+ top = 86;
+ left = 30;
+ row {
+ top = 1;
+ keys {
+ <LWIN>,
+ { <LALT>, "DIAM" },
+ { <SPCE>, "SPCE" },
+ { <RALT>, "DIAM" },
+ <RWIN>
+ };
+ };
+ };
+};
+
+// SW = 110 Default layout with windows keys, and left diamond = Fn key
+xkb_geometry "win3" {
+ include "hhk(basic)"
+
+ key.gap = 1;
+ section "Space" {
+ top = 86;
+ left = 30;
+ row {
+ top = 1;
+ keys {
+ <LALT>,
+ { <FN>, "DIAM" },
+ { <SPCE>, "SPCE" },
+ { <RWIN>, "DIAM" },
+ <RALT>
+ };
+ };
+ };
+};
+
+// SW = 101 Layout with windows and alt keys swapped and left-Alt = Fn key
+xkb_geometry "win4" {
+ include "hhk(basic)"
+
+ key.gap = 1;
+ section "Space" {
+ top = 86;
+ left = 30;
+ row {
+ top = 1;
+ keys {
+ <FN>,
+ { <LALT>, "DIAM" },
+ { <SPCE>, "SPCE" },
+ { <RALT>, "DIAM" },
+ <RWIN>
+ };
+ };
+ };
+};
+
+// SW = 000 Layout with Muhenkan and Henkan keys
+xkb_geometry "jp1" {
+ include "hhk(basic)"
+
+ key.gap = 1;
+ section "Space" {
+ top = 86;
+ left = 30;
+ row {
+ top = 1;
+ keys {
+ <LALT>,
+ { <NFER>, "DIAM" },
+ { <SPCE>, "SPCE" },
+ { <XFER>, "DIAM" },
+ <RALT>
+ };
+ };
+ };
+};
+
+// SW = 001 Layout with Muhenkan and Henkan keys swapped with Alt keys
+xkb_geometry "jp2" {
+ include "hhk(basic)"
+
+ key.gap = 1;
+ section "Space" {
+ top = 86;
+ left = 30;
+ row {
+ top = 1;
+ keys {
+ <NFER>,
+ { <LALT>, "DIAM" },
+ { <SPCE>, "SPCE" },
+ { <RALT>, "DIAM" },
+ <XFER>
+ };
+ };
+ };
+};
+
+// SW = 010 Layout with Henkan key and left-diamond as Fn
+xkb_geometry "jp3" {
+ include "hhk(basic)"
+
+ key.gap = 1;
+ section "Space" {
+ top = 86;
+ left = 30;
+ row {
+ top = 1;
+ keys {
+ <LALT>,
+ { <FN>, "DIAM" },
+ { <SPCE>, "SPCE" },
+ { <XFER>, "DIAM" },
+ <RALT>
+ };
+ };
+ };
+};
+
+// SW = 001 Layout with Henkan key swapped with Alt keys and left-Alt as Fn
+xkb_geometry "jp4" {
+ include "hhk(basic)"
+
+ key.gap = 1;
+ section "Space" {
+ top = 86;
+ left = 30;
+ row {
+ top = 1;
+ keys {
+ <FN>,
+ { <LALT>, "DIAM" },
+ { <SPCE>, "SPCE" },
+ { <RALT>, "DIAM" },
+ <XFER>
+ };
+ };
+ };
+};
+
+// Basic layout for non-swictchable keys
+partial hidden xkb_geometry "basic" {
+
+ description = "Happy Hacking Keyboard";
+ width = 290;
+ height = 106;
+
+ shape.cornerRadius = 1;
+ shape "NORM" { { [18, 18] }, { [2, 1], [14, 14] } };
+ shape "BKSP" { { [28, 18] }, { [2, 1], [24, 14] } };
+ shape "TABK" { { [28, 18] }, { [2, 1], [24, 14] } };
+ shape "CTRL" { { [32, 18] }, { [2, 1], [28, 14] } };
+ shape "RTRN" { { [42, 18] }, { [2, 1], [38, 14] } };
+ shape "LFSH" { { [42, 18] }, { [2, 1], [38, 14] } };
+ shape "RTSH" { { [32, 18] }, { [2, 1], [28, 14] } };
+ shape "DIAM" { { [28, 18] }, { [2, 1], [24, 14] } };
+ shape "SPCE" { { [114, 18] }, { [2, 1], [110, 14] } };
+
+ text.color = "black";
+ text "PFULabel" { left = 16; top = 2; fontsize = 20; text = "PFU"; };
+ text "HHKLabel" { left = 254; top = 90; text = "Happy Hacking\nKeyboard"; };
+
+ section.left = 1;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ section "Alphanumeric" {
+ top = 10;
+ row {
+ top = 1;
+ keys {
+ <ESC>,
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
+ <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
+ <AE11>, <AE12>,
+ <BKSL>, <TLDE>
+ };
+ };
+ row {
+ top = 20;
+ keys {
+ { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top = 39;
+ keys {
+ { <LCTL>, "CTRL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top = 58;
+ keys {
+ { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" },
+ { <FN>, color = "grey20" }
+ };
+ };
+ };
+
+ alias <AC00> = <LCTL>;
+};
diff --git a/xorg-server/xkeyboard-config/geometry/hp b/xorg-server/xkeyboard-config/geometry/hp
index 62e4d8a18..a9846f295 100644
--- a/xorg-server/xkeyboard-config/geometry/hp
+++ b/xorg-server/xkeyboard-config/geometry/hp
@@ -1,702 +1,697 @@
-// $Xorg: hp,v 1.4 2001/02/09 02:05:50 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-// $XFree86: xc/programs/xkbcomp/geometry/hp,v 1.8 2003/08/09 14:30:46 pascal Exp $
-
-default xkb_geometry "pc101" {
-
- description= "HP PC101";
- width= 470;
- height= 210;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
- shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "SPCE" { { [132,18] }, { [2,1], [130,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 52;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 18 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 8 }, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 91;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 20 },
- { <SPCE>, "SPCE", color="white" },
- <RALT>, { <RCTL>, 20 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 91;
- left= 310;
- key.color= "grey20";
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 91;
- left= 375;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "default" geometry
-
-xkb_geometry "hil" {
-
- description= "HP hil";
- width= 455;
- height= 170;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "BKSP" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "TABK" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "BKSL" { { [ 24,18] }, { [2,1], [ 22,17] } };
- shape "RTRN" { { [ 38,18] }, { [2,1], [ 36,17] } };
- shape "LFSH" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "RTSH" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "SPCE" { { [151,18] }, { [2,1], [150,17] } };
- shape "KP0" { { [ 38,18] }, { [2,1], [ 36,17] } };
- shape "KPTB" { { [ 18,38] }, { [2,1], [ 16,37] } };
- shape "TLDE" { { [ 24,18] }, { [2,1], [ 22,17] } };
- shape "FKT1" { { [ 17,14] }, { [2,1], [ 15,13] } };
- shape "FKT2" { { [ 23,14] }, { [2,1], [ 21,13] } };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 14;
- row {
- top= 1;
- keys { { <BRK>, "FKT1" }, { <STOP>, "FKT1" } ,
- { <FK01>, "FKT2", 10 }, { <FK02>, "FKT2" },
- { <FK03>, "FKT2" }, { <FK04>, "FKT2" },
- { <MENU>, "FKT1" }, { <SYST>, "FKT1" },
- { <FK05>, "FKT2" }, { <FK06>, "FKT2" },
- { <FK07>, "FKT2" }, { <FK08>, "FKT2" },
- { <CLRL>, "FKT1", 10 }, { <CLR>, "FKT1" },
- { <FK09>, "FKT1", 19 }, { <FK10>, "FKT1" },
- { <FK11>, "FKT1" }, { <FK12>, "FKT1" }
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 52;
- row {
- top= 1;
- keys { { <TLDE>, "TLDE" }, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }, <INSL>, <DELL>
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" },
- <INSC>, <DELC>
- };
- };
- row {
- top= 39;
- keys { <CAPS>, <LCTL>,
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN" },
- <HOME>, <PGUP>
- };
- };
- row {
- top= 58;
- keys { <ESC>, { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }, <SELE>,
- <UP>, <PGDN>
- };
- };
- row {
- top= 77;
- keys { <PRSC>, { <LALT>, 30 },
- { <SPCE>, "SPCE" },
- <RALT>, { <LEFT>, 30 }, <DOWN>, <RGHT>
- };
- };
- }; // End of "Alpha" section
-
- section "Keypad" {
- top= 52;
- left= 360;
- row {
- top= 1;
- keys { <KPMU>, <KPDV>, <KPAD>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, <KPEN> };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, <KPSP> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPTB>, "KPTB" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
-}; // End of "default" geometry
-
-
-// Created by Alexander Pohoyda <alexander.pohoyda@gmx.net>
-// Geometry specification for HP Omnibook keyboards.
-// Compatible Models: 6100, 6000.
-
-xkb_geometry "omnibook" {
- width = 282;
- height = 128;
- baseColor = "grey80";
- labelColor = "white";
-
- shape "FN0" { cornerRadius = 1, { [15.5, 12] }, { [1, 0], [14.5, 11] } };
- shape "NORM" { cornerRadius = 1, { [18, 16] }, { [2, 0], [16, 14] } };
- shape "BKSP" { cornerRadius = 1, { [31, 16] }, { [2, 0], [29, 14] } };
- shape "TABK" { cornerRadius = 1, { [27, 16] }, { [2, 0], [25, 14] } };
- shape "CAPS" { cornerRadius = 1, { [32, 16] }, { [2, 0], [30, 14] } };
- shape "RTSH" { cornerRadius = 1, { [45, 16] }, { [2, 0], [43, 14] } };
- shape "MODK" { cornerRadius = 1, { [28, 16] }, { [2, 0], [26, 14] } };
- shape "SPCE" { cornerRadius = 1, { [90, 16] }, { [2, 0], [88, 14] } };
- shape "ARRS" { cornerRadius = 1, { [17, 12] }, { [2, 0], [15, 11] } };
-
- shape "LED" { cornerRadius = 1, { [2, 4] } };
-
- shape "KEYS" { cornerRadius = 1,
- { [0, 13],
- [197, 13], [197, 0],
- [280, 0], [280, 125],
- [224, 125], [224, 112],
- [0, 112] }
- };
-
- solid "KeyPanel" {
- shape = "KEYS";
- left = 1;
- top = 1;
- color = "black";
- };
-
- shape "NULL1" { cornerRadius = 1, { [54, 16] } };
-
- solid "NullPanel1" {
- shape = "NULL1";
- left = 226;
- top = 96;
- color = "grey80";
- };
-
- shape "NULL2" { cornerRadius = 1, { [19, 14] } };
-
- solid "NullPanel2" {
- shape = "NULL2";
- left = 243;
- top = 97;
- color = "black";
- };
-
- indicator.onColor = "green";
- indicator.offColor = "grey10";
- indicator.top = 4;
- indicator.shape = "LED";
- indicator "Caps Lock" { left = 45; };
- indicator "Num Lock" { left = 60; };
- indicator "Scroll Lock" { left = 75; };
- indicator "HDDActivity" { onColor = "red"; left = 90; };
-
- key.color = "grey60";
-
- section "Function" {
- key.gap = 0.99;
- left = 1;
- top = 1;
- key.shape = "FN0";
- row {
- left = 197;
- top = 1;
- keys { <PRSC>, <PAUS>, <INS>, <HOME>, <PGUP> };
- };
- row {
- top = 14;
- keys { <ESC>,
- <FK01>, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>, <FK11>, <FK12>,
- <SCLK>, <DELE>, <END>, <PGDN>
- };
- };
- }; // End of "Function" section
-
- section "Control" {
- left = 1;
- top = 34;
- key.gap = 1;
- row {
- top = 62;
- key.shape = "NORM";
- keys { <LCTL>, <FN>, <LWIN>, <LALT>,
- { <SPCE>, "SPCE" }, <RALT>, <MENU>, <RCTL>
- };
- };
- }; // End of "Control" section
-
- section "Navigation" {
- key.shape = "ARRS";
- left = 225;
- top = 97;
- key.gap = 1.4;
- row {
- left= 18;
- top = 1;
- keys { <UP> };
- };
- row {
- top = 16;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Navigation" section
-
- shape "STIK" { cornerRadius = 4, { [7, 7] } };
-
- solid "STIK" {
- priority = 255;
- color = "red";
- shape = "STIK";
- top = 73;
- left = 126;
- };
-};
-
-// 86 keys
-xkb_geometry "omnibook_intl" {
- include "hp(omnibook)"
- description = "HP Omnibook 6000/6100, Intl";
-
- shape "RTRN" { cornerRadius = 1,
- { [22, 0], [22, 33], [5, 33], [5, 16], [0, 16], [0, 0] },
- { [20, 0], [20, 31], [7, 31], [7, 14], [2, 14], [2, 0] } };
- shape "LFSH" { cornerRadius = 1, { [23, 16] }, { [2, 0], [21, 14] } };
-
- section "Alpha" {
- key.gap = 1;
- key.color = "grey60";
- key.shape = "NORM";
- left = 1;
- top = 27;
- row {
- top = 1;
- keys { <AE00>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
- };
- };
- row {
- top = 18;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" }
- };
- };
- row {
- top = 35;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <AC12>
- };
- };
- row {
- top = 52;
- keys { { <LFSH>, "LFSH" }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- }; // End of "Alpha" section
-};
-
-xkb_geometry "mini110" {
-
- description= "HP Mini 110";
- width= 262;
- height= 106;
-
- shape.cornerRadius = 0;
- shape "FN0" { { [ 14, 10 ] } , { [ 14, 10 ] } };
- shape "NORM" { { [ 16.7, 16 ] } , { [ 16.7, 16 ] } };
- shape "TLDE" { { [ 12, 16 ] } , { [ 12, 16 ] } };
- shape "ONE" { { [ 14, 16 ] } , { [ 14, 16 ] } };
- shape "BKSP" { { [ 31.3, 16 ] } , { [ 31.3, 16 ] } };
- shape "BKSL" { { [ 23.9, 16 ] } , { [ 23.9, 16 ] } };
- shape "CAPS" { { [ 22, 16 ] } , { [ 22, 16 ] } };
- shape "RTRN" { { [ 36.3, 16 ] } , { [ 36.3, 16 ] } };
- shape "LFSH" { { [ 31, 16 ] } , { [ 31, 16 ] } };
- shape "RTSH" { { [ 45, 16 ] } , { [ 45, 16 ] } };
- shape "CTLS" { { [ 16.5, 19 ] } , { [ 16.5, 19 ] } };
- shape "SPCE" { { [ 78.4, 19 ] } , { [ 78.4, 19 ] } };
- shape "ARRW" { { [ 16.7, 9 ] } , { [ 16.7, 9 ] } };
-
- key.gap=1;
-
- section "Function" {
- top=4;
- left=3;
- key.shape="FN0";
- row {
- keys {
- <ESC>, <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
- <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>,
- <FK12>, <PAUS>, <SCLK>, <INS>, <DELE>
- };
- };
- };
-
- section "Alphanum" {
- top=15;
- left=3;
- key.shape="NORM";
- row {
- top= 0;
- keys { { <TLDE>, "TLDE" } , { <AE01>, "ONE" }, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 17;
- keys { <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 34;
- keys { { <CAPS>, "CAPS" } ,
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 51;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
-
- };
-
- section "Control" {
- top=83;
- left=3;
- key.shape="CTLS";
- row {
- keys {
- <LCTL>, <FN>, <LWIN>, <LALT>, { <SPCE>, "SPCE" }, <RALT>, <MENU>, <RCTL>
- };
- };
- };
-
- section "Arrows" {
- top=83;
- left=204.9;
- key.shape="ARRW";
- row {
- left= 17.7;
- keys {
- <UP>
- };
- };
- row {
- top = 10;
- keys {
- <LEFT>, <DOWN>, <RGHT>
- };
- };
- };
-
-};
-
-xkb_geometry "dv5" {
-
- height=118.4;
- width=310.6;
-
- description = "HP Pavilion dv5";
-
- shape.cornerRadius = 1;
-
- shape "ESC" { { [20.0, 12.5] }, { [2.2, 1], [17.8, 10.5] } };
- shape "FN0" { { [15.9, 12.5] }, { [2.2, 1], [13.7, 10.5] } };
- shape "DELE" { { [19.4, 12.5] }, { [2.2, 1], [17.2, 10.5] } };
-
- shape "NORM" { { [17.9, 18.3] }, { [2.2, 1], [15.7, 16.3] } };
-
- shape "BKSP" { { [36.1, 18.3] }, { [2.4, 1], [33.7, 16.3] } };
-
- shape "TABK" { { [26.8, 18.3] }, { [2.4, 1], [24.4, 16.3] } };
- shape "BKSL" { { [27.1, 18.3] }, { [2.4, 1], [24.7, 16.3] } };
-
- shape "CAPS" { { [31.6, 18.3] }, { [2.4, 1], [29.2, 16.3] } };
- shape "RTRN" { { [41.2, 18.3] }, { [2.4, 1], [39.3, 16.3] } };
-
- shape "LFSH" { { [41.5, 18.3] }, { [2.4, 1], [38.8, 16.3] } };
- shape "RTSH" { { [31.5, 18.3] }, { [2.4, 1], [29.1, 16.3] } };
-
- shape "LCTL" { { [22.4, 18.3] }, { [2.2, 1], [20.2, 16.3] } };
- shape "RCTL" { { [22.6, 18.3] }, { [2.2, 1], [20.4, 16.3] } };
- shape "CTLS" { { [17.9, 18.3] }, { [2.2, 1], [15.7, 16.3] } };
- shape "SPCE" { { [94.3, 18.3] }, { [2.5, 1], [91.8, 16.3] } };
-
- shape "ARRW" { { [17.9, 18.3] }, { [2.2, 1], [15.7, 16.3] } };
-
- shape "EDIT" { { [16.6, 18.3] }, { [2.2, 1], [14.4, 16.3] } };
-
- key.gap = 1.2;
-
- section "Function" {
- top=4.2;
- left=3;
- row {
- key.shape = "FN0";
- keys {
- {<ESC>, "ESC"},
- {2.9, <FK01>}, <FK02>, <FK03>, <FK04>,
- {2.9, <FK05>}, <FK06>, <FK07>, <FK08>,
- {2.9, <FK09>}, <FK10>, <FK11>, <FK12>,
- {2.9, <NMLK>}, <PAUS>, <INS>, {<DELE>, "DELE"}
- };
- };
- };
-
- section "Alpha" {
- top = 17.9;
- key.shape = "NORM";
- left = 3;
-
- row {
- top = 0;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
- };
- };
- row {
- top = 19.5;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" }
- };
- };
- row {
- top = 39;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN" }
- };
- };
- row {
- top = 58.5;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- }; // End of "Alpha" section
-
- section "Controls" {
- top = 95.9;
- key.shape = "CTLS";
- left = 3;
-
- row {
- top = 0;
- keys { {<LCTL>, "LCTL"}, <FN>, <LWIN>, <LALT>, {<SPCE>, "SPCE"},
- <RALT>, <MENU>, {<RCTL>, "RCTL"}
- };
- };
- };
-
- section "Edition" {
- top = 16.5;
- left = 289.9;
- key.shape = "EDIT";
- key.gap = 1.4;
- row {
- top = 0;
- vertical = true;
- keys {
- <HOME>, <PGUP>, <PGDN>, <END>
- };
- };
- };
-
- section "Arrows" {
- top = 76.4;
- key.shape = "ARRW";
- left = 249.3;
- row {
- top = 0;
- left = 19.1;
- keys {
- <UP>
- };
- };
- row {
- top = 19.5;
- left = 0;
- keys {
- <LEFT>, <DOWN>, <RGHT>
- };
- };
- };
-};
-
-
-
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+
+default xkb_geometry "pc101" {
+
+ description= "HP PC101";
+ width= 470;
+ height= 210;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
+ shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "SPCE" { { [132,18] }, { [2,1], [130,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 52;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 18 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 8 }, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 91;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 20 },
+ { <SPCE>, "SPCE", color="white" },
+ <RALT>, { <RCTL>, 20 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 91;
+ left= 310;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 91;
+ left= 375;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "default" geometry
+
+xkb_geometry "hil" {
+
+ description= "HP hil";
+ width= 455;
+ height= 170;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "BKSP" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "TABK" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "BKSL" { { [ 24,18] }, { [2,1], [ 22,17] } };
+ shape "RTRN" { { [ 38,18] }, { [2,1], [ 36,17] } };
+ shape "LFSH" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "RTSH" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "SPCE" { { [151,18] }, { [2,1], [150,17] } };
+ shape "KP0" { { [ 38,18] }, { [2,1], [ 36,17] } };
+ shape "KPTB" { { [ 18,38] }, { [2,1], [ 16,37] } };
+ shape "TLDE" { { [ 24,18] }, { [2,1], [ 22,17] } };
+ shape "FKT1" { { [ 17,14] }, { [2,1], [ 15,13] } };
+ shape "FKT2" { { [ 23,14] }, { [2,1], [ 21,13] } };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 14;
+ row {
+ top= 1;
+ keys { { <BRK>, "FKT1" }, { <STOP>, "FKT1" } ,
+ { <FK01>, "FKT2", 10 }, { <FK02>, "FKT2" },
+ { <FK03>, "FKT2" }, { <FK04>, "FKT2" },
+ { <MENU>, "FKT1" }, { <SYST>, "FKT1" },
+ { <FK05>, "FKT2" }, { <FK06>, "FKT2" },
+ { <FK07>, "FKT2" }, { <FK08>, "FKT2" },
+ { <CLRL>, "FKT1", 10 }, { <CLR>, "FKT1" },
+ { <FK09>, "FKT1", 19 }, { <FK10>, "FKT1" },
+ { <FK11>, "FKT1" }, { <FK12>, "FKT1" }
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 52;
+ row {
+ top= 1;
+ keys { { <TLDE>, "TLDE" }, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }, <INSL>, <DELL>
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" },
+ <INSC>, <DELC>
+ };
+ };
+ row {
+ top= 39;
+ keys { <CAPS>, <LCTL>,
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN" },
+ <HOME>, <PGUP>
+ };
+ };
+ row {
+ top= 58;
+ keys { <ESC>, { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }, <SELE>,
+ <UP>, <PGDN>
+ };
+ };
+ row {
+ top= 77;
+ keys { <PRSC>, { <LALT>, 30 },
+ { <SPCE>, "SPCE" },
+ <RALT>, { <LEFT>, 30 }, <DOWN>, <RGHT>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Keypad" {
+ top= 52;
+ left= 360;
+ row {
+ top= 1;
+ keys { <KPMU>, <KPDV>, <KPAD>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, <KPEN> };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, <KPSP> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPTB>, "KPTB" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+}; // End of "default" geometry
+
+
+// Created by Alexander Pohoyda <alexander.pohoyda@gmx.net>
+// Geometry specification for HP Omnibook keyboards.
+// Compatible Models: 6100, 6000.
+
+xkb_geometry "omnibook" {
+ width = 282;
+ height = 128;
+ baseColor = "grey80";
+ labelColor = "white";
+
+ shape "FN0" { cornerRadius = 1, { [15.5, 12] }, { [1, 0], [14.5, 11] } };
+ shape "NORM" { cornerRadius = 1, { [18, 16] }, { [2, 0], [16, 14] } };
+ shape "BKSP" { cornerRadius = 1, { [31, 16] }, { [2, 0], [29, 14] } };
+ shape "TABK" { cornerRadius = 1, { [27, 16] }, { [2, 0], [25, 14] } };
+ shape "CAPS" { cornerRadius = 1, { [32, 16] }, { [2, 0], [30, 14] } };
+ shape "RTSH" { cornerRadius = 1, { [45, 16] }, { [2, 0], [43, 14] } };
+ shape "MODK" { cornerRadius = 1, { [28, 16] }, { [2, 0], [26, 14] } };
+ shape "SPCE" { cornerRadius = 1, { [90, 16] }, { [2, 0], [88, 14] } };
+ shape "ARRS" { cornerRadius = 1, { [17, 12] }, { [2, 0], [15, 11] } };
+
+ shape "LED" { cornerRadius = 1, { [2, 4] } };
+
+ shape "KEYS" { cornerRadius = 1,
+ { [0, 13],
+ [197, 13], [197, 0],
+ [280, 0], [280, 125],
+ [224, 125], [224, 112],
+ [0, 112] }
+ };
+
+ solid "KeyPanel" {
+ shape = "KEYS";
+ left = 1;
+ top = 1;
+ color = "black";
+ };
+
+ shape "NULL1" { cornerRadius = 1, { [54, 16] } };
+
+ solid "NullPanel1" {
+ shape = "NULL1";
+ left = 226;
+ top = 96;
+ color = "grey80";
+ };
+
+ shape "NULL2" { cornerRadius = 1, { [19, 14] } };
+
+ solid "NullPanel2" {
+ shape = "NULL2";
+ left = 243;
+ top = 97;
+ color = "black";
+ };
+
+ indicator.onColor = "green";
+ indicator.offColor = "grey10";
+ indicator.top = 4;
+ indicator.shape = "LED";
+ indicator "Caps Lock" { left = 45; };
+ indicator "Num Lock" { left = 60; };
+ indicator "Scroll Lock" { left = 75; };
+ indicator "HDDActivity" { onColor = "red"; left = 90; };
+
+ key.color = "grey60";
+
+ section "Function" {
+ key.gap = 0.99;
+ left = 1;
+ top = 1;
+ key.shape = "FN0";
+ row {
+ left = 197;
+ top = 1;
+ keys { <PRSC>, <PAUS>, <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top = 14;
+ keys { <ESC>,
+ <FK01>, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>, <FK11>, <FK12>,
+ <SCLK>, <DELE>, <END>, <PGDN>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Control" {
+ left = 1;
+ top = 34;
+ key.gap = 1;
+ row {
+ top = 62;
+ key.shape = "NORM";
+ keys { <LCTL>, <FN>, <LWIN>, <LALT>,
+ { <SPCE>, "SPCE" }, <RALT>, <MENU>, <RCTL>
+ };
+ };
+ }; // End of "Control" section
+
+ section "Navigation" {
+ key.shape = "ARRS";
+ left = 225;
+ top = 97;
+ key.gap = 1.4;
+ row {
+ left= 18;
+ top = 1;
+ keys { <UP> };
+ };
+ row {
+ top = 16;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Navigation" section
+
+ shape "STIK" { cornerRadius = 4, { [7, 7] } };
+
+ solid "STIK" {
+ priority = 255;
+ color = "red";
+ shape = "STIK";
+ top = 73;
+ left = 126;
+ };
+};
+
+// 86 keys
+xkb_geometry "omnibook_intl" {
+ include "hp(omnibook)"
+ description = "HP Omnibook 6000/6100, Intl";
+
+ shape "RTRN" { cornerRadius = 1,
+ { [22, 0], [22, 33], [5, 33], [5, 16], [0, 16], [0, 0] },
+ { [20, 0], [20, 31], [7, 31], [7, 14], [2, 14], [2, 0] } };
+ shape "LFSH" { cornerRadius = 1, { [23, 16] }, { [2, 0], [21, 14] } };
+
+ section "Alpha" {
+ key.gap = 1;
+ key.color = "grey60";
+ key.shape = "NORM";
+ left = 1;
+ top = 27;
+ row {
+ top = 1;
+ keys { <AE00>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top = 18;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top = 35;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <AC12>
+ };
+ };
+ row {
+ top = 52;
+ keys { { <LFSH>, "LFSH" }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ }; // End of "Alpha" section
+};
+
+xkb_geometry "mini110" {
+
+ description= "HP Mini 110";
+ width= 262;
+ height= 106;
+
+ shape.cornerRadius = 0;
+ shape "FN0" { { [ 14, 10 ] } , { [ 14, 10 ] } };
+ shape "NORM" { { [ 16.7, 16 ] } , { [ 16.7, 16 ] } };
+ shape "TLDE" { { [ 12, 16 ] } , { [ 12, 16 ] } };
+ shape "ONE" { { [ 14, 16 ] } , { [ 14, 16 ] } };
+ shape "BKSP" { { [ 31.3, 16 ] } , { [ 31.3, 16 ] } };
+ shape "BKSL" { { [ 23.9, 16 ] } , { [ 23.9, 16 ] } };
+ shape "CAPS" { { [ 22, 16 ] } , { [ 22, 16 ] } };
+ shape "RTRN" { { [ 36.3, 16 ] } , { [ 36.3, 16 ] } };
+ shape "LFSH" { { [ 31, 16 ] } , { [ 31, 16 ] } };
+ shape "RTSH" { { [ 45, 16 ] } , { [ 45, 16 ] } };
+ shape "CTLS" { { [ 16.5, 19 ] } , { [ 16.5, 19 ] } };
+ shape "SPCE" { { [ 78.4, 19 ] } , { [ 78.4, 19 ] } };
+ shape "ARRW" { { [ 16.7, 9 ] } , { [ 16.7, 9 ] } };
+
+ key.gap=1;
+
+ section "Function" {
+ top=4;
+ left=3;
+ key.shape="FN0";
+ row {
+ keys {
+ <ESC>, <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
+ <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>,
+ <FK12>, <PAUS>, <SCLK>, <INS>, <DELE>
+ };
+ };
+ };
+
+ section "Alphanum" {
+ top=15;
+ left=3;
+ key.shape="NORM";
+ row {
+ top= 0;
+ keys { { <TLDE>, "TLDE" } , { <AE01>, "ONE" }, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 17;
+ keys { <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 34;
+ keys { { <CAPS>, "CAPS" } ,
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 51;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+
+ };
+
+ section "Control" {
+ top=83;
+ left=3;
+ key.shape="CTLS";
+ row {
+ keys {
+ <LCTL>, <FN>, <LWIN>, <LALT>, { <SPCE>, "SPCE" }, <RALT>, <MENU>, <RCTL>
+ };
+ };
+ };
+
+ section "Arrows" {
+ top=83;
+ left=204.9;
+ key.shape="ARRW";
+ row {
+ left= 17.7;
+ keys {
+ <UP>
+ };
+ };
+ row {
+ top = 10;
+ keys {
+ <LEFT>, <DOWN>, <RGHT>
+ };
+ };
+ };
+
+};
+
+xkb_geometry "dv5" {
+
+ height=118.4;
+ width=310.6;
+
+ description = "HP Pavilion dv5";
+
+ shape.cornerRadius = 1;
+
+ shape "ESC" { { [20.0, 12.5] }, { [2.2, 1], [17.8, 10.5] } };
+ shape "FN0" { { [15.9, 12.5] }, { [2.2, 1], [13.7, 10.5] } };
+ shape "DELE" { { [19.4, 12.5] }, { [2.2, 1], [17.2, 10.5] } };
+
+ shape "NORM" { { [17.9, 18.3] }, { [2.2, 1], [15.7, 16.3] } };
+
+ shape "BKSP" { { [36.1, 18.3] }, { [2.4, 1], [33.7, 16.3] } };
+
+ shape "TABK" { { [26.8, 18.3] }, { [2.4, 1], [24.4, 16.3] } };
+ shape "BKSL" { { [27.1, 18.3] }, { [2.4, 1], [24.7, 16.3] } };
+
+ shape "CAPS" { { [31.6, 18.3] }, { [2.4, 1], [29.2, 16.3] } };
+ shape "RTRN" { { [41.2, 18.3] }, { [2.4, 1], [39.3, 16.3] } };
+
+ shape "LFSH" { { [41.5, 18.3] }, { [2.4, 1], [38.8, 16.3] } };
+ shape "RTSH" { { [31.5, 18.3] }, { [2.4, 1], [29.1, 16.3] } };
+
+ shape "LCTL" { { [22.4, 18.3] }, { [2.2, 1], [20.2, 16.3] } };
+ shape "RCTL" { { [22.6, 18.3] }, { [2.2, 1], [20.4, 16.3] } };
+ shape "CTLS" { { [17.9, 18.3] }, { [2.2, 1], [15.7, 16.3] } };
+ shape "SPCE" { { [94.3, 18.3] }, { [2.5, 1], [91.8, 16.3] } };
+
+ shape "ARRW" { { [17.9, 18.3] }, { [2.2, 1], [15.7, 16.3] } };
+
+ shape "EDIT" { { [16.6, 18.3] }, { [2.2, 1], [14.4, 16.3] } };
+
+ key.gap = 1.2;
+
+ section "Function" {
+ top=4.2;
+ left=3;
+ row {
+ key.shape = "FN0";
+ keys {
+ {<ESC>, "ESC"},
+ {2.9, <FK01>}, <FK02>, <FK03>, <FK04>,
+ {2.9, <FK05>}, <FK06>, <FK07>, <FK08>,
+ {2.9, <FK09>}, <FK10>, <FK11>, <FK12>,
+ {2.9, <NMLK>}, <PAUS>, <INS>, {<DELE>, "DELE"}
+ };
+ };
+ };
+
+ section "Alpha" {
+ top = 17.9;
+ key.shape = "NORM";
+ left = 3;
+
+ row {
+ top = 0;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top = 19.5;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top = 39;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top = 58.5;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Controls" {
+ top = 95.9;
+ key.shape = "CTLS";
+ left = 3;
+
+ row {
+ top = 0;
+ keys { {<LCTL>, "LCTL"}, <FN>, <LWIN>, <LALT>, {<SPCE>, "SPCE"},
+ <RALT>, <MENU>, {<RCTL>, "RCTL"}
+ };
+ };
+ };
+
+ section "Edition" {
+ top = 16.5;
+ left = 289.9;
+ key.shape = "EDIT";
+ key.gap = 1.4;
+ row {
+ top = 0;
+ vertical = true;
+ keys {
+ <HOME>, <PGUP>, <PGDN>, <END>
+ };
+ };
+ };
+
+ section "Arrows" {
+ top = 76.4;
+ key.shape = "ARRW";
+ left = 249.3;
+ row {
+ top = 0;
+ left = 19.1;
+ keys {
+ <UP>
+ };
+ };
+ row {
+ top = 19.5;
+ left = 0;
+ keys {
+ <LEFT>, <DOWN>, <RGHT>
+ };
+ };
+ };
+};
diff --git a/xorg-server/xkeyboard-config/geometry/keytronic b/xorg-server/xkeyboard-config/geometry/keytronic
index 110274a2d..6ee1b718b 100644
--- a/xorg-server/xkeyboard-config/geometry/keytronic
+++ b/xorg-server/xkeyboard-config/geometry/keytronic
@@ -1,253 +1,252 @@
-// $Xorg: keytronic,v 1.4 2001/02/09 02:05:50 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-default xkb_geometry "FlexPro" {
-
- // This is an approximate layout for a Key Tronic FlexPro
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes of a few keys by eye. I didn't actually
- // *measure* a real keyboard.
-
- description= "Key Tronic FlexPro keyboard";
-
- width= 515;
- height= 200;
-
- shape "EDGE" { cornerRadius= 2, { [ 515, 200 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "TABK" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "BKSL" { { [ 23,18] }, { [2,1], [21,17] } };
- shape "RTRN" {
- approx = { [16, 0], [38,37] },
- { [16, 0], [38, 0], [38,37],
- [ 0,37], [ 0,19], [16,19] },
- { [18, 1], [36, 1], [36,36],
- [ 2,36], [ 2,20], [18,20] } };
- shape "CAPS" { { [36,18] }, { [2,1], [34,17] } };
- shape "SHFT" { { [46,18] }, { [2,1], [44,17] } };
- shape "LCTL" { { [32,18] }, { [2,1], [30,17] } };
- shape "RCTL" { { [38,18] }, { [2,1], [36,17] } };
- shape "LALT" { { [28,18] }, { [2,1], [26,17] } };
- shape "RALT" { { [33,18] }, { [2,1], [31,17] } };
- shape "LSPC" { { [66,22] }, { [0,0], [66,22] } };
- shape "RSPC" { { [76,22] }, { [0,0], [76,22] } };
- shape "KP0" { { [37,18] }, { [2,1], [35,17] } };
- shape "KPEN" { { [18,37] }, { [2,1], [16,36] } };
- shape "LOGO" { cornerRadius= 3, { [80,35] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 9;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
-
- section "Function" {
- top= 56;
- row {
- top = 1;
- key.color= "grey20";
- keys { <FK01>, <FK02> };
- };
- row {
- top = 20;
- key.color= "grey20";
- keys { <FK03>, <FK04> };
- };
- row {
- top = 39;
- keys { <FK05>, <FK06> };
- };
- row {
- top = 58;
- key.color= "grey20";
- keys { <FK07>, <FK08> };
- };
- row {
- top = 77;
- key.color= "grey20";
- keys { <FK09>, <FK10> };
- };
- row {
- top = 96;
- keys { <FK11>, <FK12> };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 56;
- left= 53;
- row {
- top= 1;
- keys {
- { <ESC>, color="grey20" }, { <BKSL>, "BKSL", color="grey20" },
- <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys {
- { <TLDE>, color="grey20" }, { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN", -14, color="grey20" }
- };
- };
- row {
- top= 39;
- keys {
- { <LCTL>, color="grey20" }, { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>, <AC11>
- };
- };
- row {
- top= 58;
- keys {
- { <LFSH>, color="grey20" },
- { <LFSH>, "SHFT", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "SHFT", color="grey20" }
- };
- };
- row {
- top= 77;
- key.color= "grey20";
- keys {
- <LALT>,
- { <LCTL>, shape="LCTL" },
- { <LALT>, shape="LALT" },
- { <SPCE>, shape="LSPC", 4, color="white" },
- { <SPCE>, shape="RSPC",color="white" },
- { <RALT>, shape="RALT", 4 },
- { <RCTL>, shape="RCTL" }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 12;
- left= 365;
- key.color= "grey20";
- row {
- top= 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 45;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 64;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 102;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 121;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- shape "LEDS" { cornerRadius= 3, { [ 76, 20 ] } };
- shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 11;
- left= 430;
- color= "grey10";
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 13;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 440; };
- indicator "Caps Lock" { left= 467; };
- indicator "Scroll Lock" { left= 489; };
- text.top= 22;
- text.color= "black";
- text "NumLockLabel" { left= 438; text="Num\nLock"; };
- text "CapsLockLabel" { left= 465; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 487; text="Scroll\nLock"; };
-
- logo "FlexProLogoImage" {
- top= 12;
- left= 45;
- name= "KeyTronic";
- shape= "LOGO";
- };
- text "KeyTronicLogoText" {
- top= 15;
- left= 50;
- width= 55;
- text= "FlexPro";
- font= "times";
- slant= "o";
- weight= "bold";
- fontWidth= "narrow";
- fontSize= 36;
- };
-
- section "Keypad" {
- top= 56;
- left= 430;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <LEFT> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPSU>, color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, { <KPAD>, color= "grey20" } };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+default xkb_geometry "FlexPro" {
+
+ // This is an approximate layout for a Key Tronic FlexPro
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes of a few keys by eye. I didn't actually
+ // *measure* a real keyboard.
+
+ description= "Key Tronic FlexPro keyboard";
+
+ width= 515;
+ height= 200;
+
+ shape "EDGE" { cornerRadius= 2, { [ 515, 200 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "TABK" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "BKSL" { { [ 23,18] }, { [2,1], [21,17] } };
+ shape "RTRN" {
+ approx = { [16, 0], [38,37] },
+ { [16, 0], [38, 0], [38,37],
+ [ 0,37], [ 0,19], [16,19] },
+ { [18, 1], [36, 1], [36,36],
+ [ 2,36], [ 2,20], [18,20] } };
+ shape "CAPS" { { [36,18] }, { [2,1], [34,17] } };
+ shape "SHFT" { { [46,18] }, { [2,1], [44,17] } };
+ shape "LCTL" { { [32,18] }, { [2,1], [30,17] } };
+ shape "RCTL" { { [38,18] }, { [2,1], [36,17] } };
+ shape "LALT" { { [28,18] }, { [2,1], [26,17] } };
+ shape "RALT" { { [33,18] }, { [2,1], [31,17] } };
+ shape "LSPC" { { [66,22] }, { [0,0], [66,22] } };
+ shape "RSPC" { { [76,22] }, { [0,0], [76,22] } };
+ shape "KP0" { { [37,18] }, { [2,1], [35,17] } };
+ shape "KPEN" { { [18,37] }, { [2,1], [16,36] } };
+ shape "LOGO" { cornerRadius= 3, { [80,35] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 9;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+
+ section "Function" {
+ top= 56;
+ row {
+ top = 1;
+ key.color= "grey20";
+ keys { <FK01>, <FK02> };
+ };
+ row {
+ top = 20;
+ key.color= "grey20";
+ keys { <FK03>, <FK04> };
+ };
+ row {
+ top = 39;
+ keys { <FK05>, <FK06> };
+ };
+ row {
+ top = 58;
+ key.color= "grey20";
+ keys { <FK07>, <FK08> };
+ };
+ row {
+ top = 77;
+ key.color= "grey20";
+ keys { <FK09>, <FK10> };
+ };
+ row {
+ top = 96;
+ keys { <FK11>, <FK12> };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 56;
+ left= 53;
+ row {
+ top= 1;
+ keys {
+ { <ESC>, color="grey20" }, { <BKSL>, "BKSL", color="grey20" },
+ <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys {
+ { <TLDE>, color="grey20" }, { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN", -14, color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys {
+ { <LCTL>, color="grey20" }, { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>, <AC11>
+ };
+ };
+ row {
+ top= 58;
+ keys {
+ { <LFSH>, color="grey20" },
+ { <LFSH>, "SHFT", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "SHFT", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.color= "grey20";
+ keys {
+ <LALT>,
+ { <LCTL>, shape="LCTL" },
+ { <LALT>, shape="LALT" },
+ { <SPCE>, shape="LSPC", 4, color="white" },
+ { <SPCE>, shape="RSPC",color="white" },
+ { <RALT>, shape="RALT", 4 },
+ { <RCTL>, shape="RCTL" }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 12;
+ left= 365;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 45;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 64;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 102;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 121;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ shape "LEDS" { cornerRadius= 3, { [ 76, 20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 11;
+ left= 430;
+ color= "grey10";
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 13;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 440; };
+ indicator "Caps Lock" { left= 467; };
+ indicator "Scroll Lock" { left= 489; };
+ text.top= 22;
+ text.color= "black";
+ text "NumLockLabel" { left= 438; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 465; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 487; text="Scroll\nLock"; };
+
+ logo "FlexProLogoImage" {
+ top= 12;
+ left= 45;
+ name= "KeyTronic";
+ shape= "LOGO";
+ };
+ text "KeyTronicLogoText" {
+ top= 15;
+ left= 50;
+ width= 55;
+ text= "FlexPro";
+ font= "times";
+ slant= "o";
+ weight= "bold";
+ fontWidth= "narrow";
+ fontSize= 36;
+ };
+
+ section "Keypad" {
+ top= 56;
+ left= 430;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <LEFT> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPSU>, color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, { <KPAD>, color= "grey20" } };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+};
diff --git a/xorg-server/xkeyboard-config/geometry/kinesis b/xorg-server/xkeyboard-config/geometry/kinesis
index 05acf4b6e..868f5c542 100644
--- a/xorg-server/xkeyboard-config/geometry/kinesis
+++ b/xorg-server/xkeyboard-config/geometry/kinesis
@@ -1,191 +1,189 @@
-// $Xorg: kinesis,v 1.3 2000/08/17 19:54:35 cpqbld Exp $
-//
-default xkb_geometry "model100" {
-
- // This is an approximate layout for a Kinesis Ergonomic keyboard
- // Generated completely by eye. I didn't actually *measure* a real
- // keyboard.
-
- description= "Kinesis Ergonomic Keyboard";
- width= 421;
- height= 185;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "WIDE" { { [ 21,18] }, { [2,1], [19,17] } };
- shape "TALL" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "FKEY" { cornerRadius=0, { [ 10,13] } };
- shape "LED" { cornerRadius= 1.5, { [ 3, 3] } };
- shape "LOGO" { { [ 40, 10 ] } };
- shape "EDGE" { cornerRadius=5, { [ 421, 185 ] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section "LeftFunction" {
- left= 15;
- top= 11;
- key.shape= "FKEY";
- key.gap= 3;
- row {
- left= 1;
- top= 1;
- keys {
- <ESC>, <FK01>, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>
- };
- };
- }; // End of "LeftFunction" section
-
- section "RightFunction" {
- left= 290;
- top= 11;
- key.shape= "FKEY";
- key.gap= 3;
- row {
- left= 1;
- top= 0.2;
- keys {
- <FK09>, <FK10>, <FK11>, <FK12>, <PRSC>,
- <SCLK>, <PAUS>, <FK16>, <FK17>
- };
- };
- }; // End of "RightFunction" section
-
- row.vertical= True;
- row.top= 1;
- key.gap= 0.5;
-
- logo "KinesisLogoImage" {
- top= 25;
- left= 240;
- name= "Kinesis";
- shape= "LOGO";
- };
-
- indicator.shape= "LED";
- indicator.top= 30;
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator "Caps Lock" { left= 23; };
-
- section "LeftAlpha" {
- top= 34;
- left= 15;
- row {
- left= 2;
- key.shape= "WIDE";
- keys { <AE12>, <TAB>, <CAPS>, <LFSH> };
- };
- row {
- top= 4;
- left= 24;
- keys { <AE01>, <AD01>, { <AC01>, color="grey20" }, <AB01>, <TLDE> };
- };
- row {
- left= 43;
- keys { <AE02>, <AD02>, { <AC02>, color="grey20" }, <AB02>, <INS> };
- };
- row {
- left= 62;
- keys { <AE03>, <AD03>, { <AC03>, color="grey20" }, <AB03>, <LEFT> };
- };
- row {
- left= 81;
- keys { <AE04>, <AD04>, { <AC04>, color="grey20" }, <AB04>, <RGHT> };
- };
- row {
- left= 100;
- keys { <AE05>, <AD05>, <AC05>, <AB05> };
- };
- }; // End of "LeftAlpha" section
-
- indicator "NumLock" { left= 318; };
- indicator "Overlay" { left= 387; };
- section "RightAlpha" {
- top= 34;
- left= 290;
- row {
- left= 2;
- keys { <AE06>, <AD06>, <AC06>, <AB06> };
- };
- row {
- left= 21;
- keys { <AE07>, <AD07>, { <AC07>, color="grey20" }, <AB07>, <UP> };
- };
- row {
- left= 40;
- keys { <AE08>, <AD08>, { <AC08>, color="grey20" }, <AB08>, <DOWN> };
- };
- row {
- left= 59;
- keys { <AE09>, <AD09>, { <AC09>, color="grey20" }, <AB09>, <AD11> };
- };
- row {
- top= 4;
- left= 78;
- keys { <AE10>, <AD10>, { <AC10>, color="grey20" }, <AB10>, <AD12> };
- };
- row {
- left= 97;
- key.shape= "WIDE";
- keys { <AE11>, <BKSL>, <AC11>, <RTSH> };
- };
- overlay "KPAD" {
- <AE07>=<NMLK>, <AE08>=<KPEQ>, <AE09>=<KPSL>, <AE10>=<KPMU>,
- <AD07>=<KP7>, <AD08>=<KP8>, <AD09>=<KP9>, <AD10>=<KPSU>,
- <AC07>=<KP4>, <AC08>=<KP5>, <AC09>=<KP6>, <AC10>=<KPAD>,
- <AB07>=<KP1>, <AB08>=<KP2>, <AB09>=<KP3>, <AB10>=<KPEN>,
- <AE10>=<KPDL>, <AE11>=<KPEN>
- };
- }; // End of "RightAlpha" section
-
- section "LeftEdit" {
- top= 109;
- left= 123;
- angle= 20;
- row.top= -18;
- row {
- top= 1;
- left= 1;
- keys { { <BKSP>, "TALL" } };
- };
- row {
- left= 20;
- keys { <LCTL>, { <DELE>, "TALL" } };
- };
- row {
- left= 39;
- keys { <LALT>, <HOME>, <END> };
- };
- }; // End of "RightEdit" section
-
- section "RightEdit" {
- top= 109;
- left= 302;
- angle= -20;
- row.top= -18;
- row {
- left= -57;
- keys { <RALT>, <PGUP>, <PGDN> };
- };
- row {
- left= -38;
- keys { <RCTL>, { <RTRN>, "TALL" } };
- };
- row {
- top= 1;
- left= -19;
- keys { { <SPCE>, "TALL" } };
- };
- overlay "KPAD" {
- <SPCE>= <KP0>
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
+default xkb_geometry "model100" {
+
+ // This is an approximate layout for a Kinesis Ergonomic keyboard
+ // Generated completely by eye. I didn't actually *measure* a real
+ // keyboard.
+
+ description= "Kinesis Ergonomic Keyboard";
+ width= 421;
+ height= 185;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "WIDE" { { [ 21,18] }, { [2,1], [19,17] } };
+ shape "TALL" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "FKEY" { cornerRadius=0, { [ 10,13] } };
+ shape "LED" { cornerRadius= 1.5, { [ 3, 3] } };
+ shape "LOGO" { { [ 40, 10 ] } };
+ shape "EDGE" { cornerRadius=5, { [ 421, 185 ] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section "LeftFunction" {
+ left= 15;
+ top= 11;
+ key.shape= "FKEY";
+ key.gap= 3;
+ row {
+ left= 1;
+ top= 1;
+ keys {
+ <ESC>, <FK01>, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>
+ };
+ };
+ }; // End of "LeftFunction" section
+
+ section "RightFunction" {
+ left= 290;
+ top= 11;
+ key.shape= "FKEY";
+ key.gap= 3;
+ row {
+ left= 1;
+ top= 0.2;
+ keys {
+ <FK09>, <FK10>, <FK11>, <FK12>, <PRSC>,
+ <SCLK>, <PAUS>, <FK16>, <FK17>
+ };
+ };
+ }; // End of "RightFunction" section
+
+ row.vertical= True;
+ row.top= 1;
+ key.gap= 0.5;
+
+ logo "KinesisLogoImage" {
+ top= 25;
+ left= 240;
+ name= "Kinesis";
+ shape= "LOGO";
+ };
+
+ indicator.shape= "LED";
+ indicator.top= 30;
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator "Caps Lock" { left= 23; };
+
+ section "LeftAlpha" {
+ top= 34;
+ left= 15;
+ row {
+ left= 2;
+ key.shape= "WIDE";
+ keys { <AE12>, <TAB>, <CAPS>, <LFSH> };
+ };
+ row {
+ top= 4;
+ left= 24;
+ keys { <AE01>, <AD01>, { <AC01>, color="grey20" }, <AB01>, <TLDE> };
+ };
+ row {
+ left= 43;
+ keys { <AE02>, <AD02>, { <AC02>, color="grey20" }, <AB02>, <INS> };
+ };
+ row {
+ left= 62;
+ keys { <AE03>, <AD03>, { <AC03>, color="grey20" }, <AB03>, <LEFT> };
+ };
+ row {
+ left= 81;
+ keys { <AE04>, <AD04>, { <AC04>, color="grey20" }, <AB04>, <RGHT> };
+ };
+ row {
+ left= 100;
+ keys { <AE05>, <AD05>, <AC05>, <AB05> };
+ };
+ }; // End of "LeftAlpha" section
+
+ indicator "NumLock" { left= 318; };
+ indicator "Overlay" { left= 387; };
+ section "RightAlpha" {
+ top= 34;
+ left= 290;
+ row {
+ left= 2;
+ keys { <AE06>, <AD06>, <AC06>, <AB06> };
+ };
+ row {
+ left= 21;
+ keys { <AE07>, <AD07>, { <AC07>, color="grey20" }, <AB07>, <UP> };
+ };
+ row {
+ left= 40;
+ keys { <AE08>, <AD08>, { <AC08>, color="grey20" }, <AB08>, <DOWN> };
+ };
+ row {
+ left= 59;
+ keys { <AE09>, <AD09>, { <AC09>, color="grey20" }, <AB09>, <AD11> };
+ };
+ row {
+ top= 4;
+ left= 78;
+ keys { <AE10>, <AD10>, { <AC10>, color="grey20" }, <AB10>, <AD12> };
+ };
+ row {
+ left= 97;
+ key.shape= "WIDE";
+ keys { <AE11>, <BKSL>, <AC11>, <RTSH> };
+ };
+ overlay "KPAD" {
+ <AE07>=<NMLK>, <AE08>=<KPEQ>, <AE09>=<KPSL>, <AE10>=<KPMU>,
+ <AD07>=<KP7>, <AD08>=<KP8>, <AD09>=<KP9>, <AD10>=<KPSU>,
+ <AC07>=<KP4>, <AC08>=<KP5>, <AC09>=<KP6>, <AC10>=<KPAD>,
+ <AB07>=<KP1>, <AB08>=<KP2>, <AB09>=<KP3>, <AB10>=<KPEN>,
+ <AE10>=<KPDL>, <AE11>=<KPEN>
+ };
+ }; // End of "RightAlpha" section
+
+ section "LeftEdit" {
+ top= 109;
+ left= 123;
+ angle= 20;
+ row.top= -18;
+ row {
+ top= 1;
+ left= 1;
+ keys { { <BKSP>, "TALL" } };
+ };
+ row {
+ left= 20;
+ keys { <LCTL>, { <DELE>, "TALL" } };
+ };
+ row {
+ left= 39;
+ keys { <LALT>, <HOME>, <END> };
+ };
+ }; // End of "RightEdit" section
+
+ section "RightEdit" {
+ top= 109;
+ left= 302;
+ angle= -20;
+ row.top= -18;
+ row {
+ left= -57;
+ keys { <RALT>, <PGUP>, <PGDN> };
+ };
+ row {
+ left= -38;
+ keys { <RCTL>, { <RTRN>, "TALL" } };
+ };
+ row {
+ top= 1;
+ left= -19;
+ keys { { <SPCE>, "TALL" } };
+ };
+ overlay "KPAD" {
+ <SPCE>= <KP0>
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
diff --git a/xorg-server/xkeyboard-config/geometry/macintosh b/xorg-server/xkeyboard-config/geometry/macintosh
index 216612262..32389445b 100644
--- a/xorg-server/xkeyboard-config/geometry/macintosh
+++ b/xorg-server/xkeyboard-config/geometry/macintosh
@@ -1,4 +1,3 @@
-// $XFree86: xc/programs/xkbcomp/geometry/macintosh,v 1.3 2003/08/09 14:30:47 pascal Exp $
//
// Some modifications (<eqdar@castalie.org>) :
// - Added a <LSGT> key
diff --git a/xorg-server/xkeyboard-config/geometry/microsoft b/xorg-server/xkeyboard-config/geometry/microsoft
index ba027224f..932db6c11 100644
--- a/xorg-server/xkeyboard-config/geometry/microsoft
+++ b/xorg-server/xkeyboard-config/geometry/microsoft
@@ -1,535 +1,532 @@
-// $Xorg: microsoft,v 1.3 2000/08/17 19:54:35 cpqbld Exp $
-//
-default xkb_geometry "natural" {
-
- // Approximate layout for a Microsoft Natural Keyboard
- description= "Microsoft Natural Keyboard";
- width= 550;
- height= 190;
-
- shape.cornerRadius= 1;
- shape "LDEF" { { [ 18,18] }, { [2,1], [15,15] } };
- shape "TABK" { { [ 26,18] }, { [2,1], [23,15] } };
- shape "CAPS" { { [ 30,18] }, { [2,1], [23,15] } };
- shape "LFSH" { { [ 41,18] }, { [2,1], [38,15] } };
- shape "KEY6" { { [ 22,18] }, { [2,1], [15,15] } };
- shape "KEYT" { { [ 33,18] }, { [2,1], [15,15] } };
- shape "KEYG" { { [ 29,18] }, { [2,1], [15,15] } };
- shape "LCTL" {
- approx= { [ 32, 22 ] },
- { [ 0, 0], [ 32, 0 ], [ 32, 23 ], [ 0, 22 ] },
- { [ 2, 1], [ 29, 1 ], [ 29, 17 ], [ 2, 15 ] }
- };
- shape "LWIN" {
- approx= { [ 32, 23 ] },
- { [ 0, 0], [ 32, 0 ], [ 32, 24 ], [ 0, 23 ] },
- { [ 2, 1], [ 29, 1 ], [ 29, 18 ], [ 2, 17 ] }
- };
- shape "LALT" {
- approx= { [ 32, 24 ] },
- { [ 0, 0], [ 32, 0 ], [ 32, 25 ], [ 0, 24 ] },
- { [ 2, 1], [ 29, 1 ], [ 29, 20 ], [ 2, 19 ] }
- };
- shape "RDEF" { { [ 18,18] }, { [3,1], [15,15] } };
- shape "KEY7" { { [ 28, 18 ] }, { [ 14, 1], [26, 15] } };
- shape "KEYH" { { [ 24, 18 ] }, { [ 10, 1], [22, 15] } };
- shape "KEYN" { { [ 32, 18 ] }, { [ 18, 1], [30, 15] } };
- shape "BKSP" { { [ 41, 18 ] }, { [ 3, 1], [39, 15] } };
- shape "BKSL" { { [ 24, 18 ] }, { [ 3, 1], [22, 15] } };
- shape "RTRN" { { [ 37, 18 ] }, { [ 3, 1], [35, 15] } };
- shape "RTSH" { { [ 43, 18 ] }, { [ 3, 1], [41, 15] } };
- shape "RALT" {
- approx= { [ 27, 24 ] },
- { [ 0, 0], [ 27, 0 ], [ 27, 24 ], [ 0, 25 ] },
- { [ 3, 1], [ 25, 1 ], [ 25, 19 ], [ 3, 20 ] }
- };
- shape "RWIN" {
- approx= { [ 27, 23 ] },
- { [ 0, 0], [ 27, 0 ], [ 27, 23 ], [ 0, 24 ] },
- { [ 3, 1], [ 25, 1 ], [ 25, 18 ], [ 3, 19 ] }
- };
- shape "MENU" {
- approx= { [ 27, 21 ] },
- { [ 0, 0], [ 27, 0 ], [ 27, 21 ], [ 0, 23 ] },
- { [ 3, 1], [ 25, 1 ], [ 25, 16 ], [ 3, 17 ] }
- };
- shape "RCTL" {
- approx= { [ 27, 19 ] },
- { [ 0, 0], [ 27, 0 ], [ 27, 19 ], [ 0, 21 ] },
- { [ 3, 1], [ 25, 1 ], [ 25, 14 ], [ 3, 15 ] }
- };
- shape "KPAD" { { [ 18, 37 ] }, { [ 3, 1 ], [ 16, 34 ] } };
- shape "KP0" { { [ 37, 18 ] }, { [ 3, 1 ], [ 35, 15 ] } };
- shape "SPCE" {
- { [ 4, 3], [42,10], [44, 0], [88, 0], [90,10], [130, 3],
- [134,26], [99,30], [67,33], [33,30], [ 0,26] },
- { [ 6, 4.5], [43,11], [45, 1], [87, 1], [89,11], [128, 4.5],
- [131,23], [99,28], [67,32], [33,28], [ 3,23] }
- };
-
- shape "EDGE" {
- cornerRadius= 2,
- { [ 25, 0 ], [ 177, 17 ], [ 329, 0 ], [ 542, 0 ],
- [ 542, 150 ], [ 354, 150 ], [ 177, 185 ], [ 0, 150 ] }
- };
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- row.left= 1;
- key.shape= "LDEF";
- key.gap= 1;
- section "LeftFunction" {
- top= 10;
- left= 40;
- angle= 10;
- row {
- top= 1;
- keys { <ESC>, { <FK01>, 12 }, <FK02>, <FK03>, <FK04>, <FK05> };
- };
- }; // End of "LeftFunction" section
-
- section "LeftAlpha" {
- top= 47;
- left= 30;
- angle= 10;
- row {
- top= 1;
- keys { <AE00>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, { <AE06>, "KEY6" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, { <AD05>, "KEYT" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, { <AC05>, "KEYG" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>
- };
- };
- row {
- top= 77;
- keys { { <LCTL>, "LCTL" }, { <LWIN>, "LWIN" }, { <LALT>, "LALT" } };
- };
- }; // End of "LeftAlpha" section
-
- key.shape= "RDEF";
- section "RightFunction" {
- top= 32;
- left= 195;
- angle= -10;
- row {
- top= 1;
- left= 1;
- keys { <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>, <FK12> };
- };
- }; // End of "RightFunction" section
-
- section "RightAlpha" {
- top= 71;
- left= 190;
- angle= -10;
- row.left= 1;
- row {
- top= 1;
- keys { { <AE07>, "KEY7" },
- <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys {
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <AC06>, "KEYH" },
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 58;
- keys { { <AB06>, "KEYN" },
- <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- left= 40;
- keys { { <RALT>, "RALT" }, { <RWIN>, "RWIN" },
- { <MENU>, "MENU" }, { <RCTL>, "RCTL" }
- };
- };
- }; // End of "RightAlpha" section
-
- section "SpaceBar" {
- top= 139;
- left= 111;
- key.shape= "SPCE";
- row { keys { <SPCE> }; };
- };
-
- section "Editing" {
- top= 15;
- left= 385;
- row {
- top= 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 33;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 53;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 91;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 109;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- shape "LED" {
- cornerRadius= 0,
- { [ 3, 1 ] }
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.left= 177;
- indicator.shape= "LED";
- indicator "Num Lock" { top= 90; };
- indicator "Caps Lock" { top= 107; };
- indicator "Scroll Lock" { top= 127; };
-
- section "Keypad" {
- top= 47;
- left= 456;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
-
-// Approximate layout for a Microsoft Natural(R) Keyboard Elite
-//
-// Modified from // $Xorg: microsoft,v 1.3 2000/08/17 19:54:35 cpqbld Exp $
-// by Pavel Kurashov <pavell@mail.ru> Mon Oct 8 22:08:20 NOVST 2007
-//
-// * Function, editing and navigation keys are reduced height
-// * Navigation keys are repositioned in two column
-// * Leds are enlarged for better look
-// * "BKSP" alligned with "BKSL" and "RTRN"
-// * Ouline Edges slightly modified
-//
-xkb_geometry "elite" {
-
- // Approximate layout for a Microsoft Natural(R) Keyboard Elite
- description= "Microsoft Natural(r) Keyboard Elite";
- width= 495;
- height= 190;
-
- shape.cornerRadius= 1;
- shape "LDEF" { { [ 18,18] }, { [2,1], [15,15] } };
- shape "FKEY" { { [ 18,13] }, { [2,1], [15,10] } };
- shape "TABK" { { [ 26,18] }, { [2,1], [23,15] } };
- shape "CAPS" { { [ 30,18] }, { [2,1], [23,15] } };
- shape "LFSH" { { [ 41,18] }, { [2,1], [38,15] } };
- shape "KEY6" { { [ 22,18] }, { [2,1], [15,15] } };
- shape "KEYT" { { [ 33,18] }, { [2,1], [15,15] } };
- shape "KEYG" { { [ 29,18] }, { [2,1], [15,15] } };
- shape "LCTL" {
- approx= { [ 32, 22 ] },
- { [ 0, 0], [ 32, 0 ], [ 32, 23 ], [ 0, 22 ] },
- { [ 2, 1], [ 29, 1 ], [ 29, 17 ], [ 2, 15 ] }
- };
- shape "LWIN" {
- approx= { [ 32, 23 ] },
- { [ 0, 0], [ 32, 0 ], [ 32, 24 ], [ 0, 23 ] },
- { [ 2, 1], [ 29, 1 ], [ 29, 18 ], [ 2, 17 ] }
- };
- shape "LALT" {
- approx= { [ 32, 24 ] },
- { [ 0, 0], [ 32, 0 ], [ 32, 25 ], [ 0, 24 ] },
- { [ 2, 1], [ 29, 1 ], [ 29, 20 ], [ 2, 19 ] }
- };
- shape "RDEF" { { [ 18,18 ] }, { [ 2, 1], [15, 15] } };
- shape "KEY7" { { [ 28, 18 ] }, { [ 14, 1], [26, 15] } };
- shape "KEYH" { { [ 24, 18 ] }, { [ 10, 1], [22, 15] } };
- shape "KEYN" { { [ 32, 18 ] }, { [ 18, 1], [30, 15] } };
- shape "BKSP" { { [ 32, 18 ] }, { [ 2, 1], [30, 15] } };
- shape "BKSL" { { [ 24, 18 ] }, { [ 2, 1], [22, 15] } };
- shape "RTRN" { { [ 37, 18 ] }, { [ 2, 1], [35, 15] } };
- shape "RTSH" { { [ 43, 18 ] }, { [ 2, 1], [41, 15] } };
- shape "RALT" {
- approx= { [ 27, 24 ] },
- { [ 0, 0], [ 27, 0 ], [ 27, 24 ], [ 0, 25 ] },
- { [ 3, 1], [ 25, 1 ], [ 25, 19 ], [ 3, 20 ] }
- };
- shape "RWIN" {
- approx= { [ 27, 23 ] },
- { [ 0, 0], [ 27, 0 ], [ 27, 23 ], [ 0, 24 ] },
- { [ 3, 1], [ 25, 1 ], [ 25, 18 ], [ 3, 19 ] }
- };
- shape "MENU" {
- approx= { [ 27, 21 ] },
- { [ 0, 0], [ 27, 0 ], [ 27, 21 ], [ 0, 23 ] },
- { [ 3, 1], [ 25, 1 ], [ 25, 16 ], [ 3, 17 ] }
- };
- shape "RCTL" {
- approx= { [ 27, 19 ] },
- { [ 0, 0], [ 27, 0 ], [ 27, 19 ], [ 0, 21 ] },
- { [ 3, 1], [ 25, 1 ], [ 25, 14 ], [ 3, 15 ] }
- };
- shape "KPAD" { { [ 18, 37 ] }, { [ 3, 1 ], [ 16, 34 ] } };
- shape "KP0" { { [ 37, 18 ] }, { [ 3, 1 ], [ 35, 15 ] } };
- shape "SPCE" {
- { [ 4, 3], [42,10], [44, 0], [88, 0], [90,10], [130, 3],
- [134,26], [99,30], [67,33], [33,30], [ 0,26] },
- { [ 6, 4.5], [43,11], [45, 1], [87, 1], [89,11], [128, 4.5],
- [131,23], [99,28], [67,32], [33,28], [ 3,23] }
- };
-
- shape "EDGE" {
- cornerRadius= 3,
- { [ 32, 15 ], [140, 33],[ 220, 33 ], [ 329, 15 ], [ 493, 15 ],
- [ 493, 150 ], [ 354, 150 ], [200, 180], [ 153, 180 ], [ 7, 150 ] }
- };
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- row.left= 1;
- key.shape= "FKEY";
- key.gap= 1;
- section "LeftFunction" {
- top= 26;
- left= 40;
- angle= 10;
- row {
- top= 1;
- keys { <ESC>, { <FK01>, 12 }, <FK02>, <FK03>, <FK04>, <FK05> };
- };
- }; // End of "LeftFunction" section
-
- key.shape= "LDEF";
- section "LeftAlpha" {
- top= 47;
- left= 30;
- angle= 10;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, { <AE06>, "KEY6" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, { <AD05>, "KEYT" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, { <AC05>, "KEYG" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>
- };
- };
- row {
- top= 77;
- keys { { <LCTL>, "LCTL" }, { <LWIN>, "LWIN" }, { <LALT>, "LALT" } };
- };
- }; // End of "LeftAlpha" section
-
- key.shape= "FKEY";
- section "RightFunction" {
- top= 48;
- left= 195;
- angle= -10;
- row {
- top= 1;
- left= 1;
- keys { <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>, <FK12> };
- };
- }; // End of "RightFunction" section
-
- key.shape= "RDEF";
- section "RightAlpha" {
- top= 71;
- left= 190;
- angle= -10;
- row.left= 1;
- row {
- top= 1;
- keys { { <AE07>, "KEY7" },
- <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys {
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <AC06>, "KEYH" },
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 58;
- keys { { <AB06>, "KEYN" },
- <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- left= 40;
- keys { { <RALT>, "RALT" }, { <RWIN>, "RWIN" },
- { <MENU>, "MENU" }, { <RCTL>, "RCTL" }
- };
- };
- }; // End of "RightAlpha" section
-
- section "SpaceBar" {
- top= 139;
- left= 111;
- key.shape= "SPCE";
- row { keys { <SPCE> }; };
- };
-
- section "Editing" {
- key.shape="FKEY";
- top= 23;
- left= 348;
- row {
- top= 0;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 22;
- left=20;
- keys { <HOME>, <PGUP> };
- };
- row {
- top= 36;
- left=20;
- keys { <END>, <PGDN> };
- };
- row {
- top= 50;
- left=20;
- keys { <DELE>, <INS> };
- };
- row {
- top= 75;
- left= 29;
- keys { <UP> };
- };
- row {
- top= 89;
- left=20;
- keys { <LEFT>, <RGHT> };
- };
- row {
- top= 103;
- left=29;
- keys { <DOWN> };
- };
- }; // End of "Editing" section
-
- shape "LED" {
- cornerRadius= 1,
- { [ 7, 2 ] }
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.left= 177;
- indicator.shape= "LED";
- indicator "Num Lock" { top= 90; };
- indicator "Caps Lock" { top= 107; };
- indicator "Scroll Lock" { top= 127; };
-
- section "Keypad" {
- top= 44;
- left= 412;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
+default xkb_geometry "natural" {
+
+ // Approximate layout for a Microsoft Natural Keyboard
+ description= "Microsoft Natural Keyboard";
+ width= 550;
+ height= 190;
+
+ shape.cornerRadius= 1;
+ shape "LDEF" { { [ 18,18] }, { [2,1], [15,15] } };
+ shape "TABK" { { [ 26,18] }, { [2,1], [23,15] } };
+ shape "CAPS" { { [ 30,18] }, { [2,1], [23,15] } };
+ shape "LFSH" { { [ 41,18] }, { [2,1], [38,15] } };
+ shape "KEY6" { { [ 22,18] }, { [2,1], [15,15] } };
+ shape "KEYT" { { [ 33,18] }, { [2,1], [15,15] } };
+ shape "KEYG" { { [ 29,18] }, { [2,1], [15,15] } };
+ shape "LCTL" {
+ approx= { [ 32, 22 ] },
+ { [ 0, 0], [ 32, 0 ], [ 32, 23 ], [ 0, 22 ] },
+ { [ 2, 1], [ 29, 1 ], [ 29, 17 ], [ 2, 15 ] }
+ };
+ shape "LWIN" {
+ approx= { [ 32, 23 ] },
+ { [ 0, 0], [ 32, 0 ], [ 32, 24 ], [ 0, 23 ] },
+ { [ 2, 1], [ 29, 1 ], [ 29, 18 ], [ 2, 17 ] }
+ };
+ shape "LALT" {
+ approx= { [ 32, 24 ] },
+ { [ 0, 0], [ 32, 0 ], [ 32, 25 ], [ 0, 24 ] },
+ { [ 2, 1], [ 29, 1 ], [ 29, 20 ], [ 2, 19 ] }
+ };
+ shape "RDEF" { { [ 18,18] }, { [3,1], [15,15] } };
+ shape "KEY7" { { [ 28, 18 ] }, { [ 14, 1], [26, 15] } };
+ shape "KEYH" { { [ 24, 18 ] }, { [ 10, 1], [22, 15] } };
+ shape "KEYN" { { [ 32, 18 ] }, { [ 18, 1], [30, 15] } };
+ shape "BKSP" { { [ 41, 18 ] }, { [ 3, 1], [39, 15] } };
+ shape "BKSL" { { [ 24, 18 ] }, { [ 3, 1], [22, 15] } };
+ shape "RTRN" { { [ 37, 18 ] }, { [ 3, 1], [35, 15] } };
+ shape "RTSH" { { [ 43, 18 ] }, { [ 3, 1], [41, 15] } };
+ shape "RALT" {
+ approx= { [ 27, 24 ] },
+ { [ 0, 0], [ 27, 0 ], [ 27, 24 ], [ 0, 25 ] },
+ { [ 3, 1], [ 25, 1 ], [ 25, 19 ], [ 3, 20 ] }
+ };
+ shape "RWIN" {
+ approx= { [ 27, 23 ] },
+ { [ 0, 0], [ 27, 0 ], [ 27, 23 ], [ 0, 24 ] },
+ { [ 3, 1], [ 25, 1 ], [ 25, 18 ], [ 3, 19 ] }
+ };
+ shape "MENU" {
+ approx= { [ 27, 21 ] },
+ { [ 0, 0], [ 27, 0 ], [ 27, 21 ], [ 0, 23 ] },
+ { [ 3, 1], [ 25, 1 ], [ 25, 16 ], [ 3, 17 ] }
+ };
+ shape "RCTL" {
+ approx= { [ 27, 19 ] },
+ { [ 0, 0], [ 27, 0 ], [ 27, 19 ], [ 0, 21 ] },
+ { [ 3, 1], [ 25, 1 ], [ 25, 14 ], [ 3, 15 ] }
+ };
+ shape "KPAD" { { [ 18, 37 ] }, { [ 3, 1 ], [ 16, 34 ] } };
+ shape "KP0" { { [ 37, 18 ] }, { [ 3, 1 ], [ 35, 15 ] } };
+ shape "SPCE" {
+ { [ 4, 3], [42,10], [44, 0], [88, 0], [90,10], [130, 3],
+ [134,26], [99,30], [67,33], [33,30], [ 0,26] },
+ { [ 6, 4.5], [43,11], [45, 1], [87, 1], [89,11], [128, 4.5],
+ [131,23], [99,28], [67,32], [33,28], [ 3,23] }
+ };
+
+ shape "EDGE" {
+ cornerRadius= 2,
+ { [ 25, 0 ], [ 177, 17 ], [ 329, 0 ], [ 542, 0 ],
+ [ 542, 150 ], [ 354, 150 ], [ 177, 185 ], [ 0, 150 ] }
+ };
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ row.left= 1;
+ key.shape= "LDEF";
+ key.gap= 1;
+ section "LeftFunction" {
+ top= 10;
+ left= 40;
+ angle= 10;
+ row {
+ top= 1;
+ keys { <ESC>, { <FK01>, 12 }, <FK02>, <FK03>, <FK04>, <FK05> };
+ };
+ }; // End of "LeftFunction" section
+
+ section "LeftAlpha" {
+ top= 47;
+ left= 30;
+ angle= 10;
+ row {
+ top= 1;
+ keys { <AE00>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, { <AE06>, "KEY6" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, { <AD05>, "KEYT" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, { <AC05>, "KEYG" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>
+ };
+ };
+ row {
+ top= 77;
+ keys { { <LCTL>, "LCTL" }, { <LWIN>, "LWIN" }, { <LALT>, "LALT" } };
+ };
+ }; // End of "LeftAlpha" section
+
+ key.shape= "RDEF";
+ section "RightFunction" {
+ top= 32;
+ left= 195;
+ angle= -10;
+ row {
+ top= 1;
+ left= 1;
+ keys { <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>, <FK12> };
+ };
+ }; // End of "RightFunction" section
+
+ section "RightAlpha" {
+ top= 71;
+ left= 190;
+ angle= -10;
+ row.left= 1;
+ row {
+ top= 1;
+ keys { { <AE07>, "KEY7" },
+ <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys {
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <AC06>, "KEYH" },
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <AB06>, "KEYN" },
+ <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ left= 40;
+ keys { { <RALT>, "RALT" }, { <RWIN>, "RWIN" },
+ { <MENU>, "MENU" }, { <RCTL>, "RCTL" }
+ };
+ };
+ }; // End of "RightAlpha" section
+
+ section "SpaceBar" {
+ top= 139;
+ left= 111;
+ key.shape= "SPCE";
+ row { keys { <SPCE> }; };
+ };
+
+ section "Editing" {
+ top= 15;
+ left= 385;
+ row {
+ top= 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 33;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 53;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 91;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 109;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ shape "LED" {
+ cornerRadius= 0,
+ { [ 3, 1 ] }
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.left= 177;
+ indicator.shape= "LED";
+ indicator "Num Lock" { top= 90; };
+ indicator "Caps Lock" { top= 107; };
+ indicator "Scroll Lock" { top= 127; };
+
+ section "Keypad" {
+ top= 47;
+ left= 456;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
+
+// Approximate layout for a Microsoft Natural(R) Keyboard Elite
+//
+// Modified by Pavel Kurashov <pavell@mail.ru> Mon Oct 8 22:08:20 NOVST 2007
+//
+// * Function, editing and navigation keys are reduced height
+// * Navigation keys are repositioned in two column
+// * Leds are enlarged for better look
+// * "BKSP" alligned with "BKSL" and "RTRN"
+// * Ouline Edges slightly modified
+//
+xkb_geometry "elite" {
+
+ // Approximate layout for a Microsoft Natural(R) Keyboard Elite
+ description= "Microsoft Natural(r) Keyboard Elite";
+ width= 495;
+ height= 190;
+
+ shape.cornerRadius= 1;
+ shape "LDEF" { { [ 18,18] }, { [2,1], [15,15] } };
+ shape "FKEY" { { [ 18,13] }, { [2,1], [15,10] } };
+ shape "TABK" { { [ 26,18] }, { [2,1], [23,15] } };
+ shape "CAPS" { { [ 30,18] }, { [2,1], [23,15] } };
+ shape "LFSH" { { [ 41,18] }, { [2,1], [38,15] } };
+ shape "KEY6" { { [ 22,18] }, { [2,1], [15,15] } };
+ shape "KEYT" { { [ 33,18] }, { [2,1], [15,15] } };
+ shape "KEYG" { { [ 29,18] }, { [2,1], [15,15] } };
+ shape "LCTL" {
+ approx= { [ 32, 22 ] },
+ { [ 0, 0], [ 32, 0 ], [ 32, 23 ], [ 0, 22 ] },
+ { [ 2, 1], [ 29, 1 ], [ 29, 17 ], [ 2, 15 ] }
+ };
+ shape "LWIN" {
+ approx= { [ 32, 23 ] },
+ { [ 0, 0], [ 32, 0 ], [ 32, 24 ], [ 0, 23 ] },
+ { [ 2, 1], [ 29, 1 ], [ 29, 18 ], [ 2, 17 ] }
+ };
+ shape "LALT" {
+ approx= { [ 32, 24 ] },
+ { [ 0, 0], [ 32, 0 ], [ 32, 25 ], [ 0, 24 ] },
+ { [ 2, 1], [ 29, 1 ], [ 29, 20 ], [ 2, 19 ] }
+ };
+ shape "RDEF" { { [ 18,18 ] }, { [ 2, 1], [15, 15] } };
+ shape "KEY7" { { [ 28, 18 ] }, { [ 14, 1], [26, 15] } };
+ shape "KEYH" { { [ 24, 18 ] }, { [ 10, 1], [22, 15] } };
+ shape "KEYN" { { [ 32, 18 ] }, { [ 18, 1], [30, 15] } };
+ shape "BKSP" { { [ 32, 18 ] }, { [ 2, 1], [30, 15] } };
+ shape "BKSL" { { [ 24, 18 ] }, { [ 2, 1], [22, 15] } };
+ shape "RTRN" { { [ 37, 18 ] }, { [ 2, 1], [35, 15] } };
+ shape "RTSH" { { [ 43, 18 ] }, { [ 2, 1], [41, 15] } };
+ shape "RALT" {
+ approx= { [ 27, 24 ] },
+ { [ 0, 0], [ 27, 0 ], [ 27, 24 ], [ 0, 25 ] },
+ { [ 3, 1], [ 25, 1 ], [ 25, 19 ], [ 3, 20 ] }
+ };
+ shape "RWIN" {
+ approx= { [ 27, 23 ] },
+ { [ 0, 0], [ 27, 0 ], [ 27, 23 ], [ 0, 24 ] },
+ { [ 3, 1], [ 25, 1 ], [ 25, 18 ], [ 3, 19 ] }
+ };
+ shape "MENU" {
+ approx= { [ 27, 21 ] },
+ { [ 0, 0], [ 27, 0 ], [ 27, 21 ], [ 0, 23 ] },
+ { [ 3, 1], [ 25, 1 ], [ 25, 16 ], [ 3, 17 ] }
+ };
+ shape "RCTL" {
+ approx= { [ 27, 19 ] },
+ { [ 0, 0], [ 27, 0 ], [ 27, 19 ], [ 0, 21 ] },
+ { [ 3, 1], [ 25, 1 ], [ 25, 14 ], [ 3, 15 ] }
+ };
+ shape "KPAD" { { [ 18, 37 ] }, { [ 3, 1 ], [ 16, 34 ] } };
+ shape "KP0" { { [ 37, 18 ] }, { [ 3, 1 ], [ 35, 15 ] } };
+ shape "SPCE" {
+ { [ 4, 3], [42,10], [44, 0], [88, 0], [90,10], [130, 3],
+ [134,26], [99,30], [67,33], [33,30], [ 0,26] },
+ { [ 6, 4.5], [43,11], [45, 1], [87, 1], [89,11], [128, 4.5],
+ [131,23], [99,28], [67,32], [33,28], [ 3,23] }
+ };
+
+ shape "EDGE" {
+ cornerRadius= 3,
+ { [ 32, 15 ], [140, 33],[ 220, 33 ], [ 329, 15 ], [ 493, 15 ],
+ [ 493, 150 ], [ 354, 150 ], [200, 180], [ 153, 180 ], [ 7, 150 ] }
+ };
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ row.left= 1;
+ key.shape= "FKEY";
+ key.gap= 1;
+ section "LeftFunction" {
+ top= 26;
+ left= 40;
+ angle= 10;
+ row {
+ top= 1;
+ keys { <ESC>, { <FK01>, 12 }, <FK02>, <FK03>, <FK04>, <FK05> };
+ };
+ }; // End of "LeftFunction" section
+
+ key.shape= "LDEF";
+ section "LeftAlpha" {
+ top= 47;
+ left= 30;
+ angle= 10;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, { <AE06>, "KEY6" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, { <AD05>, "KEYT" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, { <AC05>, "KEYG" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>
+ };
+ };
+ row {
+ top= 77;
+ keys { { <LCTL>, "LCTL" }, { <LWIN>, "LWIN" }, { <LALT>, "LALT" } };
+ };
+ }; // End of "LeftAlpha" section
+
+ key.shape= "FKEY";
+ section "RightFunction" {
+ top= 48;
+ left= 195;
+ angle= -10;
+ row {
+ top= 1;
+ left= 1;
+ keys { <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>, <FK12> };
+ };
+ }; // End of "RightFunction" section
+
+ key.shape= "RDEF";
+ section "RightAlpha" {
+ top= 71;
+ left= 190;
+ angle= -10;
+ row.left= 1;
+ row {
+ top= 1;
+ keys { { <AE07>, "KEY7" },
+ <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys {
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <AC06>, "KEYH" },
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <AB06>, "KEYN" },
+ <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ left= 40;
+ keys { { <RALT>, "RALT" }, { <RWIN>, "RWIN" },
+ { <MENU>, "MENU" }, { <RCTL>, "RCTL" }
+ };
+ };
+ }; // End of "RightAlpha" section
+
+ section "SpaceBar" {
+ top= 139;
+ left= 111;
+ key.shape= "SPCE";
+ row { keys { <SPCE> }; };
+ };
+
+ section "Editing" {
+ key.shape="FKEY";
+ top= 23;
+ left= 348;
+ row {
+ top= 0;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 22;
+ left=20;
+ keys { <HOME>, <PGUP> };
+ };
+ row {
+ top= 36;
+ left=20;
+ keys { <END>, <PGDN> };
+ };
+ row {
+ top= 50;
+ left=20;
+ keys { <DELE>, <INS> };
+ };
+ row {
+ top= 75;
+ left= 29;
+ keys { <UP> };
+ };
+ row {
+ top= 89;
+ left=20;
+ keys { <LEFT>, <RGHT> };
+ };
+ row {
+ top= 103;
+ left=29;
+ keys { <DOWN> };
+ };
+ }; // End of "Editing" section
+
+ shape "LED" {
+ cornerRadius= 1,
+ { [ 7, 2 ] }
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.left= 177;
+ indicator.shape= "LED";
+ indicator "Num Lock" { top= 90; };
+ indicator "Caps Lock" { top= 107; };
+ indicator "Scroll Lock" { top= 127; };
+
+ section "Keypad" {
+ top= 44;
+ left= 412;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
diff --git a/xorg-server/xkeyboard-config/geometry/nec b/xorg-server/xkeyboard-config/geometry/nec
index 189d9ca7c..e6c00d3ff 100644
--- a/xorg-server/xkeyboard-config/geometry/nec
+++ b/xorg-server/xkeyboard-config/geometry/nec
@@ -1,159 +1,157 @@
-// $Xorg: nec,v 1.4 2001/02/09 02:05:50 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-// $XFree86: xc/programs/xkbcomp/geometry/nec,v 3.4 2001/01/17 23:45:49 dawes Exp $
-
-default xkb_geometry "pc98" {
-
- description= "Generic PC98";
- width= 405;
- height= 172;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 17,18] }, { [2,1], [ 15,17] } };
- shape "RTRN" { { [ 20,37] }, { [2,1], [ 18,35] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
- shape "RTSH" { { [ 31,18] }, { [2,1], [ 29,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "SPCE" { { [115,18] }, { [2,1], [113,17] } };
- shape "FUNC" { { [ 21,18] }, { [2,1], [ 19,17] } };
- shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } };
- shape "TABK" { { [ 30,18] }, { [2,1], [ 28,17] } };
- shape "ARRW" { { [ 35,18] }, { [2,1], [ 33,17] } };
-
- section.left= 8;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 29;
- row {
- top= 1;
- key.shape="FUNC";
- keys { { <BRK>, "NORM" }, { <PRSC>, "NORM", 5 },
- { <FK01>, 6 }, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 6 }, <FK07>, <FK08>, <FK09>, <FK10>,
- { <FK11>, 6 }, <FK12>, <FK13>, <FK14>, <FK15>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 54;
- row {
- top= 1;
- keys { { <ESC>, shape="BKSP"},
- <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, <BKSL>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN", 6 }
- };
- };
- row {
- top= 39;
- keys { <LCTL>, <CAPS>,
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <AC12>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <AB11>,
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- keys { { <ALGR>, 35 } , <LALT>, { <NFER>, "FUNC" },
- { <SPCE>, "SPCE" }, { <XFER>, "FUNC" }
-
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 54;
- left= 281;
- row {
- top= 1;
- keys { <INS>, <DELE> };
- };
- row {
- top= 20;
- keys { <PGDN>, <PGUP> };
- };
- row {
- top= 39;
- keys { { <UP>, "ARRW" } };
- };
- row {
- top= 58;
- keys { <LEFT>, <RGHT> };
- };
- row {
- top= 77;
- keys { { <DOWN>, "ARRW" } };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 54;
- left= 320;
- row {
- top= 1;
- keys { <HOME>, <HELP>, <KPSU>, <KPDV> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, <KPMU> };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, <KPAD> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, <KPEQ> };
- };
- row {
- top= 77;
- keys { <KP0>, <KPSP>, <KPDC>, <KPEN> };
- };
- }; // End of "Keypad" section
-
-}; // End of "pc98" geometry
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+
+default xkb_geometry "pc98" {
+
+ description= "Generic PC98";
+ width= 405;
+ height= 172;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 17,18] }, { [2,1], [ 15,17] } };
+ shape "RTRN" { { [ 20,37] }, { [2,1], [ 18,35] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
+ shape "RTSH" { { [ 31,18] }, { [2,1], [ 29,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "SPCE" { { [115,18] }, { [2,1], [113,17] } };
+ shape "FUNC" { { [ 21,18] }, { [2,1], [ 19,17] } };
+ shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } };
+ shape "TABK" { { [ 30,18] }, { [2,1], [ 28,17] } };
+ shape "ARRW" { { [ 35,18] }, { [2,1], [ 33,17] } };
+
+ section.left= 8;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 29;
+ row {
+ top= 1;
+ key.shape="FUNC";
+ keys { { <BRK>, "NORM" }, { <PRSC>, "NORM", 5 },
+ { <FK01>, 6 }, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 6 }, <FK07>, <FK08>, <FK09>, <FK10>,
+ { <FK11>, 6 }, <FK12>, <FK13>, <FK14>, <FK15>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 54;
+ row {
+ top= 1;
+ keys { { <ESC>, shape="BKSP"},
+ <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, <BKSL>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN", 6 }
+ };
+ };
+ row {
+ top= 39;
+ keys { <LCTL>, <CAPS>,
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <AC12>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <AB11>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ keys { { <ALGR>, 35 } , <LALT>, { <NFER>, "FUNC" },
+ { <SPCE>, "SPCE" }, { <XFER>, "FUNC" }
+
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 54;
+ left= 281;
+ row {
+ top= 1;
+ keys { <INS>, <DELE> };
+ };
+ row {
+ top= 20;
+ keys { <PGDN>, <PGUP> };
+ };
+ row {
+ top= 39;
+ keys { { <UP>, "ARRW" } };
+ };
+ row {
+ top= 58;
+ keys { <LEFT>, <RGHT> };
+ };
+ row {
+ top= 77;
+ keys { { <DOWN>, "ARRW" } };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 54;
+ left= 320;
+ row {
+ top= 1;
+ keys { <HOME>, <HELP>, <KPSU>, <KPDV> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, <KPMU> };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, <KPAD> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, <KPEQ> };
+ };
+ row {
+ top= 77;
+ keys { <KP0>, <KPSP>, <KPDC>, <KPEN> };
+ };
+ }; // End of "Keypad" section
+
+}; // End of "pc98" geometry
diff --git a/xorg-server/xkeyboard-config/geometry/northgate b/xorg-server/xkeyboard-config/geometry/northgate
index cf0c6f477..cec2e35a3 100644
--- a/xorg-server/xkeyboard-config/geometry/northgate
+++ b/xorg-server/xkeyboard-config/geometry/northgate
@@ -1,170 +1,168 @@
-// $Xorg: northgate,v 1.3 2000/08/17 19:54:36 cpqbld Exp $
-//
-default xkb_geometry "omnikey101" {
-
- description= "North Gate Omnikey 101";
- width= 470;
- height= 175;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [34,18] }, { [2,1], [32,17] } };
- shape "TABK" { { [27,18] }, { [2,1], [25,17] } };
- shape "RTRN" {
- approx = { [15, 0], [40,37] },
- { [15, 0], [40, 0], [40,37],
- [ 0,37], [ 0,19], [15,19] },
- { [17, 1], [38, 1], [38,36],
- [ 2,36], [ 2,20], [17,20] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 41,18] }, { [2,1], [39,17] } };
- shape "RTSH" { { [ 30,18] }, { [2,1], [28,17] } };
- shape "MODK" { { [ 26,18] }, { [2,1], [24,17] } };
- shape "SPCE" { { [129,18] }, { [2,1], [127,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
-
- shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 32;
- left= 375;
- color= "grey10";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 46.5;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 384; };
- indicator "Caps Lock" { left= 409; };
- indicator "Scroll Lock" { left= 434; };
- text.top= 34;
- text.color= "black";
- text "NumLockLabel" { left= 380.5; text="Num\nLock"; };
- text "CapsLockLabel" { left= 405; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 32;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 18}, <FK02>, <FK03>, <FK04>,
- { <FK05>, 9 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 9 }, <FK10>, <FK11>, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 65;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN", -14, color="grey20" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }, <BKSL>
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LALT>,
- { <LCTL>, 23 },
- { <SPCE>, "SPCE", color="white" },
- <RCTL>,
- { <RALT>, 23 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 32;
- left= 308;
- key.color= "grey20";
- row {
- top= 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 33;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 53;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 91;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 110;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 65;
- left= 374;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "default" geometry
+default xkb_geometry "omnikey101" {
+
+ description= "North Gate Omnikey 101";
+ width= 470;
+ height= 175;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [34,18] }, { [2,1], [32,17] } };
+ shape "TABK" { { [27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" {
+ approx = { [15, 0], [40,37] },
+ { [15, 0], [40, 0], [40,37],
+ [ 0,37], [ 0,19], [15,19] },
+ { [17, 1], [38, 1], [38,36],
+ [ 2,36], [ 2,20], [17,20] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 41,18] }, { [2,1], [39,17] } };
+ shape "RTSH" { { [ 30,18] }, { [2,1], [28,17] } };
+ shape "MODK" { { [ 26,18] }, { [2,1], [24,17] } };
+ shape "SPCE" { { [129,18] }, { [2,1], [127,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+
+ shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 32;
+ left= 375;
+ color= "grey10";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 46.5;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 384; };
+ indicator "Caps Lock" { left= 409; };
+ indicator "Scroll Lock" { left= 434; };
+ text.top= 34;
+ text.color= "black";
+ text "NumLockLabel" { left= 380.5; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 405; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 32;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 18}, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 9 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 9 }, <FK10>, <FK11>, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 65;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN", -14, color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }, <BKSL>
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LALT>,
+ { <LCTL>, 23 },
+ { <SPCE>, "SPCE", color="white" },
+ <RCTL>,
+ { <RALT>, 23 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 32;
+ left= 308;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 33;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 53;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 91;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 110;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 65;
+ left= 374;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "default" geometry
diff --git a/xorg-server/xkeyboard-config/geometry/pc b/xorg-server/xkeyboard-config/geometry/pc
index cd951034f..91e8dd7e1 100644
--- a/xorg-server/xkeyboard-config/geometry/pc
+++ b/xorg-server/xkeyboard-config/geometry/pc
@@ -1,4 +1,3 @@
-// $Xorg: pc,v 1.4 2001/02/09 02:05:50 xorgcvs Exp $
//
//Copyright 1996, 1998 The Open Group
//
@@ -24,7 +23,6 @@
//other dealings in this Software without prior written authorization
//from The Open Group.
//
-// $XFree86: xc/programs/xkbcomp/geometry/pc,v 3.14 2003/08/09 14:30:47 pascal Exp $
default xkb_geometry "pc101" {
diff --git a/xorg-server/xkeyboard-config/geometry/sanwa b/xorg-server/xkeyboard-config/geometry/sanwa
index 5434bdf43..af134d725 100644
--- a/xorg-server/xkeyboard-config/geometry/sanwa
+++ b/xorg-server/xkeyboard-config/geometry/sanwa
@@ -1,4 +1,3 @@
-// $Xorg: $
//
//Copyright 1996, 1998 The Open Group
//
diff --git a/xorg-server/xkeyboard-config/geometry/sgi_vndr/O2 b/xorg-server/xkeyboard-config/geometry/sgi_vndr/O2
index c321fe398..afaed76f2 100644
--- a/xorg-server/xkeyboard-config/geometry/sgi_vndr/O2
+++ b/xorg-server/xkeyboard-config/geometry/sgi_vndr/O2
@@ -1,616 +1,614 @@
-// $Xorg: O2,v 1.3 2000/08/17 19:54:36 cpqbld Exp $
-//
-// Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
-//
-// Permission to use, copy, modify, and distribute this
-// software and its documentation for any purpose and without
-// fee is hereby granted, provided that the above copyright
-// notice appear in all copies and that both that copyright
-// notice and this permission notice appear in supporting
-// documentation, and that the name of Silicon Graphics not be
-// used in advertising or publicity pertaining to distribution
-// of the software without specific prior written permission.
-// Silicon Graphics makes no representation about the suitability
-// of this software for any purpose. It is provided "as is"
-// without any express or implied warranty.
-//
-// SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-// SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-// AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-// GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-// DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-// THE USE OR PERFORMANCE OF THIS SOFTWARE.
-//
-default xkb_geometry "pc101" {
-
- // This is an approximate layout for a 101-key (US/ASCII) SGI
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes of a few keys by eye. I didn't actually
- // *measure* a real keyboard.
-
- description= "101-key keyboard for Silicon Graphics O2";
-
- width= 448;
- height= 162;
-
- shape "EDGE" {
- cornerRadius= 2,
- { [ 15, 0 ], [ 433, 0 ], [ 433, 10 ], [ 448, 10 ],
- [ 448, 162 ], [ 0, 162 ], [ 0, 10 ], [ 15, 10 ] }
- };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" { { [ 40,18] }, { [2,1], [37,17] } };
- shape "CAPS" { { [ 34,18] }, { [2,1], [29,17] } };
- shape "RTSH" { { [ 49,18] }, { [2,1], [47,17] } };
- shape "LFSH" { { [ 44,18] }, { [2,1], [42,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "LOGO" { { [ 12,12] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 6;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 25;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 19}, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11}, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11}, <FK10>, <FK11>, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 58;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color= "grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 20 },
- { <SPCE>, "SPCE",color="white" },
- <RALT>, { <RCTL>, 20 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 25;
- left= 299;
- key.color= "grey20";
- row {
- top= 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 33;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 53;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 91;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 110;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 3, 1.5] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 25;
- left= 364;
- color= "grey10";
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 40.5;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 372; };
- indicator "Caps Lock" { left= 397; };
- indicator "Scro llLock" { left= 422; };
-
- text.font= "helvetica";
- text.weight= "bold";
- text.slant= "r";
- text.fontWidth= "normal";
- text.fontSize= 12;
- text.top= 39.5;
- text.color= "black";
- text "NumLockLabel" { left= 376.5; text="1"; };
- text "CapsLockLabel" { left= 401.5; text="A"; };
- text "ScrollLockLabel" { left= 426.5; text="S"; };
-
- logo "SGILogoImage" {
- top= 26.5;
- left= 396;
- name= "SGI";
- shape= "LOGO";
- };
- text.font= "helvetica";
- text.weight= "bold";
- text.slant= "o";
- text.fontWidth= "narrow";
- text.fontSize= 18;
- text "SiliconLogoText" {
- top= 27;
- left= 375;
- width= 20;
- text= "Silicon";
- };
- text "GraphicsLogoText" {
- top= 27;
- left= 409;
- width= 20;
- text= "Graphics";
- };
-
- section "Keypad" {
- top= 58;
- left= 363;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
-
-xkb_geometry "pc102" {
-
- // This is an approximate layout for 102-key SGI international
- // keyboards. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes of a few keys by eye. I didn't actually
- // *measure* a real keyboard.
-
- description= "Silicon Graphics 102-key Keyboard";
- width= 470;
- height= 193;
-
- shape.cornerRadius= 1;
- shape "EDGE" { cornerRadius=2, { [ 470, 193 ] } };
- shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [35,18] }, { [2,1], [33,17] } };
- shape "TABK" { { [27,18] }, { [2,1], [25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [26,37] },
- { [ 0, 0], [26, 0], [26,37],
- [ 5,37], [ 5,18], [ 0,18] },
- { [ 1, 1], [24, 1], [24,36],
- [ 7,36], [ 7,17], [ 1,17] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [25,17] } };
- shape "RTSH" { { [ 50,18] }, { [2,1], [48,17] } };
- shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 50;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 18}, <FK02>, <FK03>, <FK04>,
- { <FK05>, 10}, <FK06>, <FK07>, <FK08>,
- { <FK09>, 10}, <FK10>, <FK11>, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 83;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color= "grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color= "grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN", color= "grey20" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color= "grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color= "grey20" }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color= "grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>,
- { <LALT>, 19 },
- { <SPCE>, "SPCE", color="white" },
- <RALT>,
- { <RCTL>, 19 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 50;
- left= 308;
- key.color= "grey20";
- row {
- top= 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 33;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 53;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 91;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 110;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 50;
- left= 375;
- color= "grey10";
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 64.5;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 384; };
- indicator "Caps Lock" { left= 409; };
- indicator "Scroll Lock" { left= 434; };
- text.top= 52;
- text.color= "black";
- text "NumLockLabel" { left= 380.5; text="Num\nLock"; };
- text "CapsLockLabel" { left= 405; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; };
-
- logo "SGILogoImage" {
- top= 17;
- left= 22;
- name= "SGI";
- shape= "LOGO";
- };
- text "SGILogoText" {
- top= 21;
- left= 40;
- width= 50;
- text= "SiliconGraphics";
- font= "helvetica";
- slant= "o";
- weight= "bold";
- setWidth= "narrow";
- fontSize= 24;
- };
-
- section "Keypad" {
- top= 83;
- left= 374;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
-
-xkb_geometry "jp106" {
- description= "Silicon Graphics 106-key Japanese keyboard";
- width= 442;
- height= 167;
-
- shape "EDGE" { cornerRadius= 2, { [ 442, 167 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "BKSL" { { [ 27,18] }, { [2,1], [ 25,17] } };
- shape "RTRN" {
- { [0,0],[ 27,0],[27,37],[4,37],[4,18],[0,18] } ,
- { [2,1],[ 25,1],[25,36],[5,36],[5,17],[2,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
- shape "RTSH" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "SPCE" { { [ 46,18] }, { [2,1], [ 44,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- logo "SGILogoImage" {
- top= 5;
- left= 6;
- name= "SGI";
- shape= "LOGO";
- };
-
- text "SGILogoText" {
- top= 9;
- left= 25;
- width= 50;
- text= "SiliconGraphics";
- font= "helvetica";
- slant= "o";
- weight= "bold";
- fontWidth= "narrow";
- fontSize= 24;
- };
-
- shape "LEDS" { cornerRadius= 0.1, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 25;
- left= 362;
- color= "grey10";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 40;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 366; };
- indicator "Caps Lock" { left= 391; };
- indicator "Scroll Lock" { left= 416; };
- text.top= 28;
- text.color= "black";
- text "NumLockLabel" { left= 366; text="Num\nLock"; };
- text "CapsLockLabel" { left= 391; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 416; text="Scroll\nLock"; };
-
- section.left= 5;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 25;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 18 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 ,color="grey20"}, {<FK06>,color="grey20"},
- { <FK07>, color="grey20"}, {<FK08>,color="grey20"},
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 8 }, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { {<HZTG>,color="grey20"}, <AE01>, <AE02>,
- <AE03>, <AE04>, <AE05>, <AE06>, <AE07>,
- <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- <AE13>, { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, 1 ,"RTRN",color="grey20" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <AC12>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- <AB11>, { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 20 },<NFER>,
- { <SPCE>, "SPCE", color="white" },
- <XFER>,<HKTG>,<RALT>, { <RCTL>, 17 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 296;
- key.color= "grey20";
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 361;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "jp106" geometry
-
+//
+// Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
+//
+// Permission to use, copy, modify, and distribute this
+// software and its documentation for any purpose and without
+// fee is hereby granted, provided that the above copyright
+// notice appear in all copies and that both that copyright
+// notice and this permission notice appear in supporting
+// documentation, and that the name of Silicon Graphics not be
+// used in advertising or publicity pertaining to distribution
+// of the software without specific prior written permission.
+// Silicon Graphics makes no representation about the suitability
+// of this software for any purpose. It is provided "as is"
+// without any express or implied warranty.
+//
+// SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+// SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+// AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+// GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+// DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+// THE USE OR PERFORMANCE OF THIS SOFTWARE.
+//
+default xkb_geometry "pc101" {
+
+ // This is an approximate layout for a 101-key (US/ASCII) SGI
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes of a few keys by eye. I didn't actually
+ // *measure* a real keyboard.
+
+ description= "101-key keyboard for Silicon Graphics O2";
+
+ width= 448;
+ height= 162;
+
+ shape "EDGE" {
+ cornerRadius= 2,
+ { [ 15, 0 ], [ 433, 0 ], [ 433, 10 ], [ 448, 10 ],
+ [ 448, 162 ], [ 0, 162 ], [ 0, 10 ], [ 15, 10 ] }
+ };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" { { [ 40,18] }, { [2,1], [37,17] } };
+ shape "CAPS" { { [ 34,18] }, { [2,1], [29,17] } };
+ shape "RTSH" { { [ 49,18] }, { [2,1], [47,17] } };
+ shape "LFSH" { { [ 44,18] }, { [2,1], [42,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "LOGO" { { [ 12,12] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 6;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 25;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 19}, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11}, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11}, <FK10>, <FK11>, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 58;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color= "grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 20 },
+ { <SPCE>, "SPCE",color="white" },
+ <RALT>, { <RCTL>, 20 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 25;
+ left= 299;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 33;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 53;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 91;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 110;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 3, 1.5] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 25;
+ left= 364;
+ color= "grey10";
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 40.5;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 372; };
+ indicator "Caps Lock" { left= 397; };
+ indicator "Scro llLock" { left= 422; };
+
+ text.font= "helvetica";
+ text.weight= "bold";
+ text.slant= "r";
+ text.fontWidth= "normal";
+ text.fontSize= 12;
+ text.top= 39.5;
+ text.color= "black";
+ text "NumLockLabel" { left= 376.5; text="1"; };
+ text "CapsLockLabel" { left= 401.5; text="A"; };
+ text "ScrollLockLabel" { left= 426.5; text="S"; };
+
+ logo "SGILogoImage" {
+ top= 26.5;
+ left= 396;
+ name= "SGI";
+ shape= "LOGO";
+ };
+ text.font= "helvetica";
+ text.weight= "bold";
+ text.slant= "o";
+ text.fontWidth= "narrow";
+ text.fontSize= 18;
+ text "SiliconLogoText" {
+ top= 27;
+ left= 375;
+ width= 20;
+ text= "Silicon";
+ };
+ text "GraphicsLogoText" {
+ top= 27;
+ left= 409;
+ width= 20;
+ text= "Graphics";
+ };
+
+ section "Keypad" {
+ top= 58;
+ left= 363;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
+
+xkb_geometry "pc102" {
+
+ // This is an approximate layout for 102-key SGI international
+ // keyboards. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes of a few keys by eye. I didn't actually
+ // *measure* a real keyboard.
+
+ description= "Silicon Graphics 102-key Keyboard";
+ width= 470;
+ height= 193;
+
+ shape.cornerRadius= 1;
+ shape "EDGE" { cornerRadius=2, { [ 470, 193 ] } };
+ shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [35,18] }, { [2,1], [33,17] } };
+ shape "TABK" { { [27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [26,37] },
+ { [ 0, 0], [26, 0], [26,37],
+ [ 5,37], [ 5,18], [ 0,18] },
+ { [ 1, 1], [24, 1], [24,36],
+ [ 7,36], [ 7,17], [ 1,17] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [25,17] } };
+ shape "RTSH" { { [ 50,18] }, { [2,1], [48,17] } };
+ shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 50;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 18}, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 10}, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 10}, <FK10>, <FK11>, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 83;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color= "grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color= "grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN", color= "grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color= "grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color= "grey20" }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color= "grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>,
+ { <LALT>, 19 },
+ { <SPCE>, "SPCE", color="white" },
+ <RALT>,
+ { <RCTL>, 19 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 50;
+ left= 308;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 33;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 53;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 91;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 110;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 50;
+ left= 375;
+ color= "grey10";
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 64.5;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 384; };
+ indicator "Caps Lock" { left= 409; };
+ indicator "Scroll Lock" { left= 434; };
+ text.top= 52;
+ text.color= "black";
+ text "NumLockLabel" { left= 380.5; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 405; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; };
+
+ logo "SGILogoImage" {
+ top= 17;
+ left= 22;
+ name= "SGI";
+ shape= "LOGO";
+ };
+ text "SGILogoText" {
+ top= 21;
+ left= 40;
+ width= 50;
+ text= "SiliconGraphics";
+ font= "helvetica";
+ slant= "o";
+ weight= "bold";
+ setWidth= "narrow";
+ fontSize= 24;
+ };
+
+ section "Keypad" {
+ top= 83;
+ left= 374;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
+
+xkb_geometry "jp106" {
+ description= "Silicon Graphics 106-key Japanese keyboard";
+ width= 442;
+ height= 167;
+
+ shape "EDGE" { cornerRadius= 2, { [ 442, 167 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "BKSL" { { [ 27,18] }, { [2,1], [ 25,17] } };
+ shape "RTRN" {
+ { [0,0],[ 27,0],[27,37],[4,37],[4,18],[0,18] } ,
+ { [2,1],[ 25,1],[25,36],[5,36],[5,17],[2,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
+ shape "RTSH" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "SPCE" { { [ 46,18] }, { [2,1], [ 44,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ logo "SGILogoImage" {
+ top= 5;
+ left= 6;
+ name= "SGI";
+ shape= "LOGO";
+ };
+
+ text "SGILogoText" {
+ top= 9;
+ left= 25;
+ width= 50;
+ text= "SiliconGraphics";
+ font= "helvetica";
+ slant= "o";
+ weight= "bold";
+ fontWidth= "narrow";
+ fontSize= 24;
+ };
+
+ shape "LEDS" { cornerRadius= 0.1, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 25;
+ left= 362;
+ color= "grey10";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 40;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 366; };
+ indicator "Caps Lock" { left= 391; };
+ indicator "Scroll Lock" { left= 416; };
+ text.top= 28;
+ text.color= "black";
+ text "NumLockLabel" { left= 366; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 391; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 416; text="Scroll\nLock"; };
+
+ section.left= 5;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 25;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 18 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 ,color="grey20"}, {<FK06>,color="grey20"},
+ { <FK07>, color="grey20"}, {<FK08>,color="grey20"},
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 8 }, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { {<HZTG>,color="grey20"}, <AE01>, <AE02>,
+ <AE03>, <AE04>, <AE05>, <AE06>, <AE07>,
+ <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ <AE13>, { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, 1 ,"RTRN",color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <AC12>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ <AB11>, { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 20 },<NFER>,
+ { <SPCE>, "SPCE", color="white" },
+ <XFER>,<HKTG>,<RALT>, { <RCTL>, 17 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 296;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 361;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "jp106" geometry
diff --git a/xorg-server/xkeyboard-config/geometry/sgi_vndr/indigo b/xorg-server/xkeyboard-config/geometry/sgi_vndr/indigo
index c91c5c2f3..076109dbe 100644
--- a/xorg-server/xkeyboard-config/geometry/sgi_vndr/indigo
+++ b/xorg-server/xkeyboard-config/geometry/sgi_vndr/indigo
@@ -1,411 +1,410 @@
-// $Xorg: indigo,v 1.3 2000/08/17 19:54:37 cpqbld Exp $
-//
-// Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
-//
-// Permission to use, copy, modify, and distribute this
-// software and its documentation for any purpose and without
-// fee is hereby granted, provided that the above copyright
-// notice appear in all copies and that both that copyright
-// notice and this permission notice appear in supporting
-// documentation, and that the name of Silicon Graphics not be
-// used in advertising or publicity pertaining to distribution
-// of the software without specific prior written permission.
-// Silicon Graphics makes no representation about the suitability
-// of this software for any purpose. It is provided "as is"
-// without any express or implied warranty.
-//
-// SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-// SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-// AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-// GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-// DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-// THE USE OR PERFORMANCE OF THIS SOFTWARE.
-//
-default xkb_geometry "pc101" {
-
- // This is an approximate layout for a 101-key (US/ASCII) SGI
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes of a few keys by eye. I didn't actually
- // *measure* a real keyboard.
-
- description= "Silicon Graphics 101-key keyboard";
-
- width= 472;
- height= 193;
-
- shape "EDGE" { cornerRadius= 2, { [ 472, 193 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" { { [ 40,18] }, { [2,1], [37,17] } };
- shape "CAPS" { { [ 34,18] }, { [2,1], [29,17] } };
- shape "RTSH" { { [ 49,18] }, { [2,1], [47,17] } };
- shape "LFSH" { { [ 44,18] }, { [2,1], [42,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 50;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 19}, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11}, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11}, <FK10>, <FK11>, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 83;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color= "grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 20 },
- { <SPCE>, "SPCE",color="white" },
- <RALT>, { <RCTL>, 20 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 50;
- left= 312;
- key.color= "grey20";
- row {
- top= 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 33;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 53;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 91;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 110;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 50;
- left= 377;
- color= "grey10";
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 64.5;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 386; };
- indicator "Caps Lock" { left= 411; };
- indicator "Scroll Lock" { left= 436; };
- text.top= 52;
- text.color= "black";
- text "NumLockLabel" { left= 382.5; text="Num\nLock"; };
- text "CapsLockLabel" { left= 407; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 432; text="Scroll\nLock"; };
-
- logo "SGILogoImage" {
- top= 17;
- left= 22;
- name= "SGI";
- shape= "LOGO";
- };
- text "SGILogoText" {
- top= 21;
- left= 40;
- width= 50;
- text= "SiliconGraphics";
- font= "helvetica";
- slant= "o";
- weight= "bold";
- fontWidth= "narrow";
- fontSize= 24;
- };
-
- section "Keypad" {
- top= 83;
- left= 376;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
-xkb_geometry "pc102" {
-
- // This is an approximate layout for 102-key SGI international
- // keyboards. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes of a few keys by eye. I didn't actually
- // *measure* a real keyboard.
-
- description= "Silicon Graphics 102-key Keyboard";
- width= 470;
- height= 193;
-
- shape.cornerRadius= 1;
- shape "EDGE" { cornerRadius=2, { [ 470, 193 ] } };
- shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [35,18] }, { [2,1], [33,17] } };
- shape "TABK" { { [27,18] }, { [2,1], [25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [26,37] },
- { [ 0, 0], [26, 0], [26,37],
- [ 5,37], [ 5,18], [ 0,18] },
- { [ 1, 1], [24, 1], [24,36],
- [ 7,36], [ 7,17], [ 1,17] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [25,17] } };
- shape "RTSH" { { [ 50,18] }, { [2,1], [48,17] } };
- shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 50;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 18}, <FK02>, <FK03>, <FK04>,
- { <FK05>, 10}, <FK06>, <FK07>, <FK08>,
- { <FK09>, 10}, <FK10>, <FK11>, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 83;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color= "grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color= "grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN", color= "grey20" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color= "grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color= "grey20" }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color= "grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>,
- { <LALT>, 19 },
- { <SPCE>, "SPCE", color="white" },
- <RALT>,
- { <RCTL>, 19 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 50;
- left= 308;
- key.color= "grey20";
- row {
- top= 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 33;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 53;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 91;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 110;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 50;
- left= 375;
- color= "grey10";
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 64.5;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 384; };
- indicator "Caps Lock" { left= 409; };
- indicator "Scroll Lock" { left= 434; };
- text.top= 52;
- text.color= "black";
- text "NumLockLabel" { left= 380.5; text="Num\nLock"; };
- text "CapsLockLabel" { left= 405; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; };
-
- logo "SGILogoImage" {
- top= 17;
- left= 22;
- name= "SGI";
- shape= "LOGO";
- };
- text "SGILogoText" {
- top= 21;
- left= 40;
- width= 50;
- text= "SiliconGraphics";
- font= "helvetica";
- slant= "o";
- weight= "bold";
- setWidth= "narrow";
- fontSize= 24;
- };
-
- section "Keypad" {
- top= 83;
- left= 374;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
+//
+// Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
+//
+// Permission to use, copy, modify, and distribute this
+// software and its documentation for any purpose and without
+// fee is hereby granted, provided that the above copyright
+// notice appear in all copies and that both that copyright
+// notice and this permission notice appear in supporting
+// documentation, and that the name of Silicon Graphics not be
+// used in advertising or publicity pertaining to distribution
+// of the software without specific prior written permission.
+// Silicon Graphics makes no representation about the suitability
+// of this software for any purpose. It is provided "as is"
+// without any express or implied warranty.
+//
+// SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+// SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+// AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+// GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+// DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+// THE USE OR PERFORMANCE OF THIS SOFTWARE.
+//
+default xkb_geometry "pc101" {
+
+ // This is an approximate layout for a 101-key (US/ASCII) SGI
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes of a few keys by eye. I didn't actually
+ // *measure* a real keyboard.
+
+ description= "Silicon Graphics 101-key keyboard";
+
+ width= 472;
+ height= 193;
+
+ shape "EDGE" { cornerRadius= 2, { [ 472, 193 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" { { [ 40,18] }, { [2,1], [37,17] } };
+ shape "CAPS" { { [ 34,18] }, { [2,1], [29,17] } };
+ shape "RTSH" { { [ 49,18] }, { [2,1], [47,17] } };
+ shape "LFSH" { { [ 44,18] }, { [2,1], [42,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 50;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 19}, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11}, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11}, <FK10>, <FK11>, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 83;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color= "grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 20 },
+ { <SPCE>, "SPCE",color="white" },
+ <RALT>, { <RCTL>, 20 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 50;
+ left= 312;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 33;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 53;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 91;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 110;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 50;
+ left= 377;
+ color= "grey10";
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 64.5;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 386; };
+ indicator "Caps Lock" { left= 411; };
+ indicator "Scroll Lock" { left= 436; };
+ text.top= 52;
+ text.color= "black";
+ text "NumLockLabel" { left= 382.5; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 407; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 432; text="Scroll\nLock"; };
+
+ logo "SGILogoImage" {
+ top= 17;
+ left= 22;
+ name= "SGI";
+ shape= "LOGO";
+ };
+ text "SGILogoText" {
+ top= 21;
+ left= 40;
+ width= 50;
+ text= "SiliconGraphics";
+ font= "helvetica";
+ slant= "o";
+ weight= "bold";
+ fontWidth= "narrow";
+ fontSize= 24;
+ };
+
+ section "Keypad" {
+ top= 83;
+ left= 376;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
+xkb_geometry "pc102" {
+
+ // This is an approximate layout for 102-key SGI international
+ // keyboards. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes of a few keys by eye. I didn't actually
+ // *measure* a real keyboard.
+
+ description= "Silicon Graphics 102-key Keyboard";
+ width= 470;
+ height= 193;
+
+ shape.cornerRadius= 1;
+ shape "EDGE" { cornerRadius=2, { [ 470, 193 ] } };
+ shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [35,18] }, { [2,1], [33,17] } };
+ shape "TABK" { { [27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [26,37] },
+ { [ 0, 0], [26, 0], [26,37],
+ [ 5,37], [ 5,18], [ 0,18] },
+ { [ 1, 1], [24, 1], [24,36],
+ [ 7,36], [ 7,17], [ 1,17] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [25,17] } };
+ shape "RTSH" { { [ 50,18] }, { [2,1], [48,17] } };
+ shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 50;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 18}, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 10}, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 10}, <FK10>, <FK11>, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 83;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color= "grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color= "grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN", color= "grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color= "grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color= "grey20" }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color= "grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>,
+ { <LALT>, 19 },
+ { <SPCE>, "SPCE", color="white" },
+ <RALT>,
+ { <RCTL>, 19 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 50;
+ left= 308;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 33;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 53;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 91;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 110;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 50;
+ left= 375;
+ color= "grey10";
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 64.5;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 384; };
+ indicator "Caps Lock" { left= 409; };
+ indicator "Scroll Lock" { left= 434; };
+ text.top= 52;
+ text.color= "black";
+ text "NumLockLabel" { left= 380.5; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 405; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; };
+
+ logo "SGILogoImage" {
+ top= 17;
+ left= 22;
+ name= "SGI";
+ shape= "LOGO";
+ };
+ text "SGILogoText" {
+ top= 21;
+ left= 40;
+ width= 50;
+ text= "SiliconGraphics";
+ font= "helvetica";
+ slant= "o";
+ weight= "bold";
+ setWidth= "narrow";
+ fontSize= 24;
+ };
+
+ section "Keypad" {
+ top= 83;
+ left= 374;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
diff --git a/xorg-server/xkeyboard-config/geometry/sgi_vndr/indy b/xorg-server/xkeyboard-config/geometry/sgi_vndr/indy
index 98d511fa7..ca1dd2b66 100644
--- a/xorg-server/xkeyboard-config/geometry/sgi_vndr/indy
+++ b/xorg-server/xkeyboard-config/geometry/sgi_vndr/indy
@@ -1,599 +1,598 @@
-// $Xorg: indy,v 1.3 2000/08/17 19:54:37 cpqbld Exp $
-//
-// Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
-//
-// Permission to use, copy, modify, and distribute this
-// software and its documentation for any purpose and without
-// fee is hereby granted, provided that the above copyright
-// notice appear in all copies and that both that copyright
-// notice and this permission notice appear in supporting
-// documentation, and that the name of Silicon Graphics not be
-// used in advertising or publicity pertaining to distribution
-// of the software without specific prior written permission.
-// Silicon Graphics makes no representation about the suitability
-// of this software for any purpose. It is provided "as is"
-// without any express or implied warranty.
-//
-// SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-// SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-// AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-// GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-// DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-// THE USE OR PERFORMANCE OF THIS SOFTWARE.
-//
-default xkb_geometry "pc101" {
-
- // This is an approximate layout for a 101-key (US/ASCII) SGI
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes of a few keys by eye. I didn't actually
- // *measure* a real keyboard.
-
- description= "Silicon Graphics 101-key keyboard";
-
- width= 472;
- height= 193;
-
- shape "EDGE" { cornerRadius= 2, { [ 472, 193 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" { { [ 40,18] }, { [2,1], [37,17] } };
- shape "CAPS" { { [ 34,18] }, { [2,1], [29,17] } };
- shape "RTSH" { { [ 49,18] }, { [2,1], [47,17] } };
- shape "LFSH" { { [ 44,18] }, { [2,1], [42,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 50;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 19}, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11}, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11}, <FK10>, <FK11>, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 83;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color= "grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 20 },
- { <SPCE>, "SPCE",color="white" },
- <RALT>, { <RCTL>, 20 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 50;
- left= 312;
- key.color= "grey20";
- row {
- top= 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 33;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 53;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 91;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 110;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 50;
- left= 377;
- color= "grey10";
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 64.5;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 386; };
- indicator "Caps Lock" { left= 411; };
- indicator "Scroll Lock" { left= 436; };
- text.top= 52;
- text.color= "black";
- text "NumLockLabel" { left= 382.5; text="Num\nLock"; };
- text "CapsLockLabel" { left= 407; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 432; text="Scroll\nLock"; };
-
- logo "SGILogoImage" {
- top= 17;
- left= 22;
- name= "SGI";
- shape= "LOGO";
- };
- text "SGILogoText" {
- top= 21;
- left= 40;
- width= 50;
- text= "SiliconGraphics";
- font= "helvetica";
- slant= "o";
- weight= "bold";
- fontWidth= "narrow";
- fontSize= 24;
- };
-
- section "Keypad" {
- top= 83;
- left= 376;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
-
-xkb_geometry "pc102" {
-
- // This is an approximate layout for 102-key SGI international
- // keyboards. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes of a few keys by eye. I didn't actually
- // *measure* a real keyboard.
-
- description= "Silicon Graphics 102-key Keyboard";
- width= 470;
- height= 193;
-
- shape.cornerRadius= 1;
- shape "EDGE" { cornerRadius=2, { [ 470, 193 ] } };
- shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [35,18] }, { [2,1], [33,17] } };
- shape "TABK" { { [27,18] }, { [2,1], [25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [26,37] },
- { [ 0, 0], [26, 0], [26,37],
- [ 5,37], [ 5,18], [ 0,18] },
- { [ 1, 1], [24, 1], [24,36],
- [ 7,36], [ 7,17], [ 1,17] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [25,17] } };
- shape "RTSH" { { [ 50,18] }, { [2,1], [48,17] } };
- shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 50;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 18}, <FK02>, <FK03>, <FK04>,
- { <FK05>, 10}, <FK06>, <FK07>, <FK08>,
- { <FK09>, 10}, <FK10>, <FK11>, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 83;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color= "grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color= "grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN", color= "grey20" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color= "grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color= "grey20" }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color= "grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>,
- { <LALT>, 19 },
- { <SPCE>, "SPCE", color="white" },
- <RALT>,
- { <RCTL>, 19 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 50;
- left= 308;
- key.color= "grey20";
- row {
- top= 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 33;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 53;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 91;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 110;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 50;
- left= 375;
- color= "grey10";
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 64.5;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 384; };
- indicator "Caps Lock" { left= 409; };
- indicator "Scroll Lock" { left= 434; };
- text.top= 52;
- text.color= "black";
- text "NumLockLabel" { left= 380.5; text="Num\nLock"; };
- text "CapsLockLabel" { left= 405; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; };
-
- logo "SGILogoImage" {
- top= 17;
- left= 22;
- name= "SGI";
- shape= "LOGO";
- };
- text "SGILogoText" {
- top= 21;
- left= 40;
- width= 50;
- text= "SiliconGraphics";
- font= "helvetica";
- slant= "o";
- weight= "bold";
- setWidth= "narrow";
- fontSize= 24;
- };
-
- section "Keypad" {
- top= 83;
- left= 374;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
-
-xkb_geometry "jp106" {
- description= "Silicon Graphics 106-key Japanese keyboard";
- width= 442;
- height= 167;
-
- shape "EDGE" { cornerRadius= 2, { [ 442, 167 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "BKSL" { { [ 27,18] }, { [2,1], [ 25,17] } };
- shape "RTRN" {
- { [0,0],[ 27,0],[27,37],[4,37],[4,18],[0,18] } ,
- { [2,1],[ 25,1],[25,36],[5,36],[5,17],[2,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
- shape "RTSH" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "SPCE" { { [ 46,18] }, { [2,1], [ 44,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- logo "SGILogoImage" {
- top= 5;
- left= 6;
- name= "SGI";
- shape= "LOGO";
- };
-
- text "SGILogoText" {
- top= 9;
- left= 25;
- width= 50;
- text= "SiliconGraphics";
- font= "helvetica";
- slant= "o";
- weight= "bold";
- fontWidth= "narrow";
- fontSize= 24;
- };
-
- shape "LEDS" { cornerRadius= 0.1, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 25;
- left= 362;
- color= "grey10";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 40;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 366; };
- indicator "Caps Lock" { left= 391; };
- indicator "Scroll Lock" { left= 416; };
- text.top= 28;
- text.color= "black";
- text "NumLockLabel" { left= 366; text="Num\nLock"; };
- text "CapsLockLabel" { left= 391; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 416; text="Scroll\nLock"; };
-
- section.left= 5;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 25;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 18 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 ,color="grey20"}, {<FK06>,color="grey20"},
- { <FK07>, color="grey20"}, {<FK08>,color="grey20"},
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 8 }, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { {<HZTG>,color="grey20"}, <AE01>, <AE02>,
- <AE03>, <AE04>, <AE05>, <AE06>, <AE07>,
- <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- <AE13>, { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, 1 ,"RTRN",color="grey20" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <AC12>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- <AB11>, { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 20 },<NFER>,
- { <SPCE>, "SPCE", color="white" },
- <XFER>,<HKTG>,<RALT>, { <RCTL>, 17 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 296;
- key.color= "grey20";
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 361;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "jp106" geometry
+//
+// Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
+//
+// Permission to use, copy, modify, and distribute this
+// software and its documentation for any purpose and without
+// fee is hereby granted, provided that the above copyright
+// notice appear in all copies and that both that copyright
+// notice and this permission notice appear in supporting
+// documentation, and that the name of Silicon Graphics not be
+// used in advertising or publicity pertaining to distribution
+// of the software without specific prior written permission.
+// Silicon Graphics makes no representation about the suitability
+// of this software for any purpose. It is provided "as is"
+// without any express or implied warranty.
+//
+// SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+// SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+// AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+// GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+// DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+// THE USE OR PERFORMANCE OF THIS SOFTWARE.
+//
+default xkb_geometry "pc101" {
+
+ // This is an approximate layout for a 101-key (US/ASCII) SGI
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes of a few keys by eye. I didn't actually
+ // *measure* a real keyboard.
+
+ description= "Silicon Graphics 101-key keyboard";
+
+ width= 472;
+ height= 193;
+
+ shape "EDGE" { cornerRadius= 2, { [ 472, 193 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" { { [ 40,18] }, { [2,1], [37,17] } };
+ shape "CAPS" { { [ 34,18] }, { [2,1], [29,17] } };
+ shape "RTSH" { { [ 49,18] }, { [2,1], [47,17] } };
+ shape "LFSH" { { [ 44,18] }, { [2,1], [42,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 50;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 19}, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11}, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11}, <FK10>, <FK11>, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 83;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color= "grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 20 },
+ { <SPCE>, "SPCE",color="white" },
+ <RALT>, { <RCTL>, 20 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 50;
+ left= 312;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 33;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 53;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 91;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 110;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 50;
+ left= 377;
+ color= "grey10";
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 64.5;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 386; };
+ indicator "Caps Lock" { left= 411; };
+ indicator "Scroll Lock" { left= 436; };
+ text.top= 52;
+ text.color= "black";
+ text "NumLockLabel" { left= 382.5; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 407; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 432; text="Scroll\nLock"; };
+
+ logo "SGILogoImage" {
+ top= 17;
+ left= 22;
+ name= "SGI";
+ shape= "LOGO";
+ };
+ text "SGILogoText" {
+ top= 21;
+ left= 40;
+ width= 50;
+ text= "SiliconGraphics";
+ font= "helvetica";
+ slant= "o";
+ weight= "bold";
+ fontWidth= "narrow";
+ fontSize= 24;
+ };
+
+ section "Keypad" {
+ top= 83;
+ left= 376;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
+
+xkb_geometry "pc102" {
+
+ // This is an approximate layout for 102-key SGI international
+ // keyboards. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes of a few keys by eye. I didn't actually
+ // *measure* a real keyboard.
+
+ description= "Silicon Graphics 102-key Keyboard";
+ width= 470;
+ height= 193;
+
+ shape.cornerRadius= 1;
+ shape "EDGE" { cornerRadius=2, { [ 470, 193 ] } };
+ shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [35,18] }, { [2,1], [33,17] } };
+ shape "TABK" { { [27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [26,37] },
+ { [ 0, 0], [26, 0], [26,37],
+ [ 5,37], [ 5,18], [ 0,18] },
+ { [ 1, 1], [24, 1], [24,36],
+ [ 7,36], [ 7,17], [ 1,17] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [25,17] } };
+ shape "RTSH" { { [ 50,18] }, { [2,1], [48,17] } };
+ shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 50;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 18}, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 10}, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 10}, <FK10>, <FK11>, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 83;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color= "grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color= "grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN", color= "grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color= "grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color= "grey20" }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color= "grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>,
+ { <LALT>, 19 },
+ { <SPCE>, "SPCE", color="white" },
+ <RALT>,
+ { <RCTL>, 19 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 50;
+ left= 308;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 33;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 53;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 91;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 110;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 50;
+ left= 375;
+ color= "grey10";
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 64.5;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 384; };
+ indicator "Caps Lock" { left= 409; };
+ indicator "Scroll Lock" { left= 434; };
+ text.top= 52;
+ text.color= "black";
+ text "NumLockLabel" { left= 380.5; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 405; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; };
+
+ logo "SGILogoImage" {
+ top= 17;
+ left= 22;
+ name= "SGI";
+ shape= "LOGO";
+ };
+ text "SGILogoText" {
+ top= 21;
+ left= 40;
+ width= 50;
+ text= "SiliconGraphics";
+ font= "helvetica";
+ slant= "o";
+ weight= "bold";
+ setWidth= "narrow";
+ fontSize= 24;
+ };
+
+ section "Keypad" {
+ top= 83;
+ left= 374;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
+
+xkb_geometry "jp106" {
+ description= "Silicon Graphics 106-key Japanese keyboard";
+ width= 442;
+ height= 167;
+
+ shape "EDGE" { cornerRadius= 2, { [ 442, 167 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "BKSL" { { [ 27,18] }, { [2,1], [ 25,17] } };
+ shape "RTRN" {
+ { [0,0],[ 27,0],[27,37],[4,37],[4,18],[0,18] } ,
+ { [2,1],[ 25,1],[25,36],[5,36],[5,17],[2,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
+ shape "RTSH" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "SPCE" { { [ 46,18] }, { [2,1], [ 44,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ logo "SGILogoImage" {
+ top= 5;
+ left= 6;
+ name= "SGI";
+ shape= "LOGO";
+ };
+
+ text "SGILogoText" {
+ top= 9;
+ left= 25;
+ width= 50;
+ text= "SiliconGraphics";
+ font= "helvetica";
+ slant= "o";
+ weight= "bold";
+ fontWidth= "narrow";
+ fontSize= 24;
+ };
+
+ shape "LEDS" { cornerRadius= 0.1, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 25;
+ left= 362;
+ color= "grey10";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 40;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 366; };
+ indicator "Caps Lock" { left= 391; };
+ indicator "Scroll Lock" { left= 416; };
+ text.top= 28;
+ text.color= "black";
+ text "NumLockLabel" { left= 366; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 391; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 416; text="Scroll\nLock"; };
+
+ section.left= 5;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 25;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 18 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 ,color="grey20"}, {<FK06>,color="grey20"},
+ { <FK07>, color="grey20"}, {<FK08>,color="grey20"},
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 8 }, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { {<HZTG>,color="grey20"}, <AE01>, <AE02>,
+ <AE03>, <AE04>, <AE05>, <AE06>, <AE07>,
+ <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ <AE13>, { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, 1 ,"RTRN",color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <AC12>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ <AB11>, { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 20 },<NFER>,
+ { <SPCE>, "SPCE", color="white" },
+ <XFER>,<HKTG>,<RALT>, { <RCTL>, 17 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 296;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 361;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "jp106" geometry
diff --git a/xorg-server/xkeyboard-config/geometry/sony b/xorg-server/xkeyboard-config/geometry/sony
index 4e69f0e9a..cfd6f0388 100644
--- a/xorg-server/xkeyboard-config/geometry/sony
+++ b/xorg-server/xkeyboard-config/geometry/sony
@@ -1,180 +1,179 @@
-// $Xorg: sony,v 1.4 2001/02/09 02:05:51 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-default xkb_geometry "nwp5461" {
-
- description= "Sony NEWS NWS-5000 Keyboard";
- width= 425;
- height= 190;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [28,18] }, { [2,1], [26,17] } };
- shape "TABK" { { [28,18] }, { [2,1], [26,17] } };
- shape "BKSL" { { [28,18] }, { [2,1], [26,17] } };
- shape "RTRN" {
- approx = { [15, 0], [33,37] },
- { [15, 0], [33, 0], [33,37],
- [ 0,37], [ 0,19], [15,19] },
- { [17, 1], [31, 1], [31,36],
- [ 2,36], [ 2,20], [17,20] }
- };
- shape "SHFT" { { [42,18] }, { [2,1], [40,17] } };
- shape "MODK" { { [33,18] }, { [2,1], [31,17] } };
- shape "SPCE" { { [85,18] }, { [2,1], [83,17] } };
- shape "KPEN" { { [18,38] }, { [2,1], [16,37] } };
- shape "STOP" { { [28,18] }, { [2,1], [26,17] } };
- shape "CUT" { { [55,18] }, { [2,1], [53,17] } };
- shape "EXEC" { { [32,18] }, { [2,1], [30,17] } };
- shape "UNK" { { [18,18] }, { [2,1], [16,17] } };
- shape "CAPS" { { [18,18] }, { [2,1], [16,17] } };
- shape "FKEY" { { [23,18] }, { [2,1], [21,17] } };
-
- section.left= 13;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 55;
- row {
- top= 1;
- left= 37;
- key.shape="FKEY";
- keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 5 }, <FK07>, <FK08>, <FK09>, <FK10>,
- { <FK11>, 5 }, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 80;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" } ,
- <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>,
- <AE09>, <AE10>, <AE11>, <AE12>,
- <BKSL>, { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <DELE>, color="grey20" },
- { <RTRN>, "RTRN", -14, color="grey20" }
- };
- };
- row {
- top= 39;
- keys { { <LCTL>, "MODK", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <TLDE>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "SHFT", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <AB11>,
- { <RTSH>, "SHFT", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LALT>, { <CAPS>, "CAPS" },
- { <STOP>, "STOP", color="white" },
- { <SPCE>, "SPCE", color="white" },
- { <CUT>, "CUT", color="white" },
- { <UNK0>, "UNK" }, { <UNK1>, "UNK" },
- { <EXEC>, "EXEC" }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 80;
- left= 312;
- key.color= "grey20";
- row {
- top= 1;
- keys { <HELP> };
- };
- row {
- top= 20;
- keys { <INS> };
- };
- row {
- top= 39;
- keys { <CLR> };
- };
- row {
- top= 58;
- keys { <PGUP> };
- };
- row {
- top= 77;
- keys { <PGDN> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 334;
- row {
- top= 1;
- key.color= "grey20";
- keys { { <KPMU>, 19 }, <KPDV>, <KPAD> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPSU>, color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, { <KPSP>, color="grey20" } };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN", color="grey20" } };
- };
- row {
- top= 77;
- keys { <KP0>, { <KPDC>, color="grey20" }, <UP> };
- };
- row {
- top= 96;
- key.color= "grey20";
- keys { <KPTB>, <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Keypad" section
-
-}; // End of "default" geometry
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+default xkb_geometry "nwp5461" {
+
+ description= "Sony NEWS NWS-5000 Keyboard";
+ width= 425;
+ height= 190;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [28,18] }, { [2,1], [26,17] } };
+ shape "TABK" { { [28,18] }, { [2,1], [26,17] } };
+ shape "BKSL" { { [28,18] }, { [2,1], [26,17] } };
+ shape "RTRN" {
+ approx = { [15, 0], [33,37] },
+ { [15, 0], [33, 0], [33,37],
+ [ 0,37], [ 0,19], [15,19] },
+ { [17, 1], [31, 1], [31,36],
+ [ 2,36], [ 2,20], [17,20] }
+ };
+ shape "SHFT" { { [42,18] }, { [2,1], [40,17] } };
+ shape "MODK" { { [33,18] }, { [2,1], [31,17] } };
+ shape "SPCE" { { [85,18] }, { [2,1], [83,17] } };
+ shape "KPEN" { { [18,38] }, { [2,1], [16,37] } };
+ shape "STOP" { { [28,18] }, { [2,1], [26,17] } };
+ shape "CUT" { { [55,18] }, { [2,1], [53,17] } };
+ shape "EXEC" { { [32,18] }, { [2,1], [30,17] } };
+ shape "UNK" { { [18,18] }, { [2,1], [16,17] } };
+ shape "CAPS" { { [18,18] }, { [2,1], [16,17] } };
+ shape "FKEY" { { [23,18] }, { [2,1], [21,17] } };
+
+ section.left= 13;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 55;
+ row {
+ top= 1;
+ left= 37;
+ key.shape="FKEY";
+ keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 5 }, <FK07>, <FK08>, <FK09>, <FK10>,
+ { <FK11>, 5 }, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 80;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" } ,
+ <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>,
+ <AE09>, <AE10>, <AE11>, <AE12>,
+ <BKSL>, { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <DELE>, color="grey20" },
+ { <RTRN>, "RTRN", -14, color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <LCTL>, "MODK", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <TLDE>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "SHFT", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <AB11>,
+ { <RTSH>, "SHFT", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LALT>, { <CAPS>, "CAPS" },
+ { <STOP>, "STOP", color="white" },
+ { <SPCE>, "SPCE", color="white" },
+ { <CUT>, "CUT", color="white" },
+ { <UNK0>, "UNK" }, { <UNK1>, "UNK" },
+ { <EXEC>, "EXEC" }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 80;
+ left= 312;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <HELP> };
+ };
+ row {
+ top= 20;
+ keys { <INS> };
+ };
+ row {
+ top= 39;
+ keys { <CLR> };
+ };
+ row {
+ top= 58;
+ keys { <PGUP> };
+ };
+ row {
+ top= 77;
+ keys { <PGDN> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 334;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { { <KPMU>, 19 }, <KPDV>, <KPAD> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPSU>, color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, { <KPSP>, color="grey20" } };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { <KP0>, { <KPDC>, color="grey20" }, <UP> };
+ };
+ row {
+ top= 96;
+ key.color= "grey20";
+ keys { <KPTB>, <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Keypad" section
+
+}; // End of "default" geometry
diff --git a/xorg-server/xkeyboard-config/geometry/sun b/xorg-server/xkeyboard-config/geometry/sun
index 585eb2615..8aef7f6c3 100644
--- a/xorg-server/xkeyboard-config/geometry/sun
+++ b/xorg-server/xkeyboard-config/geometry/sun
@@ -1,3050 +1,3046 @@
-// $Xorg: sun,v 1.4 2001/02/09 02:05:51 xorgcvs Exp $
-// $XdotOrg: $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-// ---------------------------------------------------------------------------
-// Copyright 2004 Sun Microsystems, Inc. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice (including the next
-// paragraph) shall be included in all copies or substantial portions of the
-// Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
-// ---------------------------------------------------------------------------
-//
-// $XFree86: xc/programs/xkbcomp/geometry/sun,v 1.7 2003/08/09 14:30:47 pascal Exp $
-//
-xkb_geometry "type4" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type4 US
- // keyboard.
-
- description= "Sun Type4 keyboard";
-
- width= 452;
- height= 185;
-
- shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "DELE" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,19], [ 0,19] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,18], [ 1,18] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 41,18] }, { [2,1], [39,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 17;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
-
- section "Alpha" {
- top= 58;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <FK01>, 9 }, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>, <FK11>, <FK12>,
- <BKSL>, { <DELE>, "DELE" },
- { <PAUS>, 9 }, <PRSC>, <SCLK>, <NMLK>
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <ESC>, 9 },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
- <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
- <AE11>, <AE12>,
- { <BKSP>, "BKSP" },
- { <KPEQ>, 9 }, <KPDV>, <KPMU>, <KPSU>
-
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>,
- { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" },
- { <KP7>, 9 }, <KP8>, <KP9>, { <KPAD>, "KPAD" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>,
- { <LCTL>, 9, shape="LCTL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <TLDE>,
- { <KP4>, 33 }, <KP5>, <KP6>
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>,
- { <LFSH>, 9 , shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }, <LNFD>,
- { <KP1>, 9} , <KP2>, <KP3>, { <KPEN>, "KPAD" }
- };
- };
- row {
- top= 96;
- keys { { <HELP>, "HELP" }, { <CAPS>, 9 },
- <LALT>, <LMTA>, { <SPCE>, "SPCE" },
- <RMTA>, <COMP>, <ALGR>,
- { <KP0>, 9, shape="KP0" }, <KPDL>
- };
- };
- }; // End of "Alpha" section
-
- shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
- shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 28;
- left= 358;
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 43;
- indicator.shape= "LED";
- indicator "Caps Lock" { left= 364; };
- indicator "Compose" { left= 383; };
- indicator "Scroll Lock" { left= 402; };
- indicator "Num Lock" { left= 421; };
- text.top= 34;
- text.color= "black";
- text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
- text "ComposeLabel" { left= 380; text="Compose"; };
- text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; };
- text "NumLockLabel" { left= 421; text="Num\nLock"; };
-};
-
-xkb_geometry "type4tuv" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type4 TUV
- // (European) keyboard with an extra key between the Shift_L
- // and the Z keys, and two keys above the Bksp key, instead
- // of a large delete key.
-
- description= "Sun Type4tuv keyboard";
-
- width= 452;
- height= 185;
-
- shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
-
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,19], [ 0,19] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,18], [ 1,18] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 17;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
-
- section "Alpha" {
- top= 58;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <FK01>, 9 }, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>, <FK11>, <FK12>,
- <BKSL>, <BRCR>,<DELE>,
- { <PAUS>, 9 }, <PRSC>, <SCLK>, <NMLK>
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <ESC>, 9 },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
- <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
- <AE11>, <AE12>,
- { <BKSP>, "BKSP" },
- { <KPEQ>, 9 }, <KPDV>, <KPMU>, <KPSU>
-
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>,
- { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" },
- { <KP7>, 9 }, <KP8>, <KP9>, { <KPAD>, "KPAD" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>,
- { <LCTL>, 9, shape="LCTL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <TLDE>,
- { <KP4>, 33 }, <KP5>, <KP6>
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>,
- { <LFSH>, 9 }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }, <LNFD>,
- { <KP1>, 9} , <KP2>, <KP3>, { <KPEN>, "KPAD" }
- };
- };
- row {
- top= 96;
- keys { { <HELP>, "HELP" }, { <CAPS>, 9 },
- <LALT>, <LMTA>, { <SPCE>, "SPCE" },
- <RMTA>, <COMP>, <ALGR>,
- { <KP0>, 9, shape="KP0" }, <KPDL>
- };
- };
- }; // End of "Alpha" section
-
- shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
- shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 28;
- left= 358;
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 43;
- indicator.shape= "LED";
- indicator "CapsLock" { left= 364; };
- indicator "Compose" { left= 383; };
- indicator "ScrollLock" { left= 402; };
- indicator "NumLock" { left= 421; };
- text.top= 34;
- text.color= "black";
- text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
- text "ComposeLabel" { left= 380; text="Compose"; };
- text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; };
- text "NumLockLabel" { left= 421; text="Num\nLock"; };
-};
-
-xkb_geometry "type4_ca" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type4
- // Canadian and British keyboard with an extra key between
- // the Shift_L
- // and the Z keys.
-
- description= "Sun Type4_uk keyboard";
-
- width= 452;
- height= 185;
-
- shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "DELE" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,19], [ 0,19] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,18], [ 1,18] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 17;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
-
- section "Alpha" {
- top= 58;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <FK01>, 9 }, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>, <FK11>, <FK12>,
- <BKSL>, { <DELE>, "DELE" },
- { <PAUS>, 9 }, <PRSC>, <SCLK>, <NMLK>
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <ESC>, 9 },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
- <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
- <AE11>, <AE12>,
- { <BKSP>, "BKSP" },
- { <KPEQ>, 9 }, <KPDV>, <KPMU>, <KPSU>
-
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>,
- { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" },
- { <KP7>, 9 }, <KP8>, <KP9>, { <KPAD>, "KPAD" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>,
- { <LCTL>, 9, shape="LCTL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <TLDE>,
- { <KP4>, 33 }, <KP5>, <KP6>
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>,
- { <LFSH>, 9 }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }, <LNFD>,
- { <KP1>, 9} , <KP2>, <KP3>, { <KPEN>, "KPAD" }
- };
- };
- row {
- top= 96;
- keys { { <HELP>, "HELP" }, { <CAPS>, 9 },
- <LALT>, <LMTA>, { <SPCE>, "SPCE" },
- <RMTA>, <COMP>, <ALGR>,
- { <KP0>, 9, shape="KP0" }, <KPDL>
- };
- };
- }; // End of "Alpha" section
-
- shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
- shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 28;
- left= 358;
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 43;
- indicator.shape= "LED";
- indicator "CapsLock" { left= 364; };
- indicator "Compose" { left= 383; };
- indicator "ScrollLock" { left= 402; };
- indicator "NumLock" { left= 421; };
- text.top= 34;
- text.color= "black";
- text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
- text "ComposeLabel" { left= 380; text="Compose"; };
- text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; }
-;
- text "NumLockLabel" { left= 421; text="Num\nLock"; };
-};
-
-xkb_geometry "type4jp" {
-
- // This is an approximate layout for a Japanese Sun Type4
- // keyboard, based on the European TUV keyboard. It has two keys
- // above the Bksp key, instead of a large delete key, but lacks
- // the extra key between Shift_L and Z.
-
- description= "Sun Japanese Type4 keyboard";
-
- width= 452;
- height= 185;
-
- shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
-
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,19], [ 0,19] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,18], [ 1,18] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [ 97,18] }, { [2,1], [95,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LFSH" { { [ 41,18] }, { [2,1], [39,17] } };
- shape "KANJ" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "EXEC" { { [ 27,18] }, { [2,1], [25,17] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 17;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
-
- section "Alpha" {
- top= 58;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <FK01>, 9 }, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>, <FK11>, <FK12>,
- <BKSL>, <BRCR>,<DELE>,
- { <PAUS>, 9 }, <PRSC>, <SCLK>, <NMLK>
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <ESC>, 9 },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
- <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
- <AE11>, <AE12>,
- { <BKSP>, "BKSP" },
- { <KPEQ>, 9 }, <KPDV>, <KPMU>, <KPSU>
-
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>,
- { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" },
- { <KP7>, 9 }, <KP8>, <KP9>, { <KPAD>, "KPAD" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>,
- { <LCTL>, 9, shape="LCTL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <TLDE>,
- { <KP4>, 33 }, <KP5>, <KP6>
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>,
- { <LFSH>, 9, shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- <LNFD>, { <RTSH>, "RTSH" },
- { <KP1>, 9} , <KP2>, <KP3>, { <KPEN>, "KPAD" }
- };
- };
- row {
- top= 96;
- keys { { <HELP>, "HELP" }, { <CAPS>, 9 },
- <LALT>, <LMTA>, { <EXEC>, "EXEC"} , { <SPCE>, "SPCE" },
- { <KANJ>, "KANJ" }, <HENK>, <RMTA>, <COMP>, <ALGR>,
- { <KP0>, 9, shape="KP0" }, <KPDL>
- };
- };
- }; // End of "Alpha" section
-
- shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
- shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 28;
- left= 358;
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 43;
- indicator.shape= "LED";
- indicator "CapsLock" { left= 364; };
- indicator "Compose" { left= 383; };
- indicator "ScrollLock" { left= 402; };
- indicator "NumLock" { left= 421; };
- text.top= 34;
- text.color= "black";
- text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
- text "ComposeLabel" { left= 380; text="Compose"; };
- text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; };
- text "NumLockLabel" { left= 421; text="Num\nLock"; };
-};
-
-xkb_geometry "t5" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type5
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes.
-
- width= 515;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [156,18] }, { [2,1], [154,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <ESC>, 9 },
- { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 9 }, <SCLK>, <PAUS>,
- { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
- <LALT>, <LMTA>,
- { <SPCE>, "SPCE" },
- <RMTA>, <COMP>, <ALGR>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 420;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-};
-
-xkb_geometry "t5tuv" {
-
- // This is an approximate layout for a TUV/European Sun Type5 keyboard.
-
- width= 515;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,18], [ 0,18] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,17], [ 1,17] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 24,18] }, { [2,1], [22,17] } };
- shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [157,18] }, { [2,1], [155,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <ESC>, 9 },
- { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 9 }, <SCLK>, <PAUS>,
- { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
- <LALT>, <LMTA>,
- { <SPCE>, "SPCE" },
- <RMTA>, <COMP>, <ALGR>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 420;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-};
-
-
-xkb_geometry "t5jp" {
-
- // This is an approximate layout for a Japanese Sun Type5 keyboard.
-
- width= 515;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "KANJ" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "EXEC" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,18], [ 0,18] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,17], [ 1,17] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [ 97,18] }, { [2,1], [95,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <ESC>, 9 },
- { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 9 }, <SCLK>, <PAUS>,
- { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <UNDR>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9 },
- <LALT>, <LMTA>, { <EXEC>, "EXEC" },
- { <SPCE>, "SPCE" }, { <KANJ>, "KANJ" }, <HENK>,
- <RMTA>, <COMP>, <ALGR>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 420;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-};
-
-xkb_geometry "t5unix" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type5
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes.
-
- width= 515;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [157,18] }, { [2,1], [155,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <NONE>, 9 },
- { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 9 }, <SCLK>, <PAUS>,
- { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <ESC>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- <BKSL>, <TLDE>
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <LCTL>, 9, shape="LCTL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <CAPS>, 9, shape="CAPS" },
- <LALT>, <LMTA>,
- { <SPCE>, "SPCE" },
- <RMTA>, <COMP>, <ALGR>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 420;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-};
-
-xkb_geometry "t5hobo" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type5
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes.
- //
- // I modified this to look like the hobo keyboard.
-
- width= 425;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 425, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "FKEY" { { [ 15,18] }, { [0.5,0.5], [14.5, 17.5] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "BKSL" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "RTSH" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [156,18] }, { [2,1], [154,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "FKEY";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <ESC>, 9 },
- { <FK01>, 4 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 4 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 4 }, <FK10>, <FK11>, <FK12>,
- { <MUTE>, 4 }, <VOL->, <VOL+>, <POWR>,
- { <PRSC>, 9, "NORM" }, {<SCLK>, "NORM"}, {<PAUS>, "NORM"}
- };
- };
- }; // End of "Function" section
-
- key.shape= "NORM";
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }, <ALGR>
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
- <LALT>, <LMTA>,
- { <SPCE>, "SPCE" },
- <RMTA>, <COMP>, <NMLK>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
-
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-};
-
-xkb_geometry "t5tuvhobo" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type5
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes.
- //
- // I modified this to look like the hobo keyboard.
-
- width= 425;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 425, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "FKEY" { { [ 15,18] }, { [0.5,0.5], [14.5, 17.5] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "BKSL" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 24,18] }, { [2,1], [22,17] } };
- shape "RTSH" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [156,18] }, { [2,1], [154,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "FKEY";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <ESC>, 9 },
- { <FK01>, 4 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 4 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 4 }, <FK10>, <FK11>, <FK12>,
- { <MUTE>, 4 }, <VOL->, <VOL+>, <POWR>,
- { <PRSC>, 9, "NORM" }, {<SCLK>, "NORM"}, {<PAUS>, "NORM"}
- };
- };
- }; // End of "Function" section
-
- key.shape= "NORM";
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }, <ALGR>
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
- <LALT>, <LMTA>,
- { <SPCE>, "SPCE" },
- <RMTA>, <COMP>, <NMLK>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
-
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-};
-
-xkb_geometry "t5jphobo" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type5
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes.
-
- width= 425;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 425, 170 ] } };
- shape.cornerRadius= 1;
- shape "FKEY" { { [ 15,18] }, { [0.5,0.5], [14.5, 17.5] } };
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "KANJ" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "EXEC" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,18], [ 0,18] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,17], [ 1,17] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [ 97,18] }, { [2,1], [95,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "FKEY";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <ESC>, 9 },
- { <FK01>, 4 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 4 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 4 }, <FK10>, <FK11>, <FK12>,
- { <MUTE>, 4 }, <VOL->, <VOL+>, <POWR>,
- { <PRSC>, 9, "NORM" }, {<SCLK>, "NORM"}, {<PAUS>, "NORM"}
- };
- };
- }; // End of "Function" section
-
- key.shape= "NORM";
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <UNDR>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9 },
- <LALT>, <LMTA>, { <EXEC>, "EXEC" },
- { <SPCE>, "SPCE" }, { <KANJ>, "KANJ" }, <HENK>,
- <RMTA>, <COMP>, <ALGR>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-};
-
-xkb_geometry "type5_se" {
-
- // kbd: type = 4, layout = 43
-
- description= "Sun Type5 keyboard (Sweden)";
-
- width= 510;
- height= 170;
-
- baseColor= "grey";
- labelColor= "black";
-
- shape.cornerRadius= 1;
-
- shape "EDGE" { cornerRadius= 2, { [ 510, 170 ] } };
- shape "LOGO" { cornerRadius= 2,
- { [ 0, 8], [ 8, 16], [ 16, 8], [ 8, 0] }
- };
-
- shape "NORM" { { [ 18, 18] }, { [ 2, 1], [ 16, 17] } };
- shape "BKSP" { { [ 38, 18] }, { [ 2, 1], [ 36, 17] } };
- shape "TABK" { { [ 27, 18] }, { [ 2, 1], [ 25, 17] } };
- shape "RTRN" {
- { [ 0, 0], [ 29, 0], [ 29, 37], [ 5, 37], [ 5, 18], [ 0, 18] },
- { [ 2, 1], [ 27, 1], [ 27, 36], [ 7, 36], [ 7, 17], [ 2, 17] }
- };
- shape "CAPS" { { [ 32, 18] }, { [ 2, 1], [ 30, 17 ] } };
- shape "LFSH" { { [ 24, 18] }, { [ 2, 1], [ 22, 17 ] } };
- shape "RTSH" { { [ 51, 18] }, { [ 2, 1], [ 49, 17 ] } };
- shape "LCTL" { { [ 32, 18] }, { [ 2, 1], [ 30, 17 ] } };
- shape "MODK" { { [ 28, 18] }, { [ 2, 1], [ 26, 17 ] } };
- shape "SPCE" { { [157, 18] }, { [ 2, 1], [155, 17 ] } };
- shape "KP0" { { [ 37, 18] }, { [ 2, 1], [ 35, 17 ] } };
- shape "KPAD" { { [ 18, 37] }, { [ 2, 1], [ 16, 36 ] } };
- shape "HELP" { { [ 37, 18] }, { [ 2, 1], [ 35, 17 ] } };
-
- section "Function" {
- key.color= "grey10";
- priority= 1;
- top= 24;
- left= 14;
- width= 481;
- height= 19;
- row {
- top= 1;
- left= 1;
- keys {
- { <HELP>, "HELP", 1 }, { <ESC>, "NORM", 9 },
- { <FK01>, "NORM", 19 }, { <FK02>, "NORM", 1 },
- { <FK03>, "NORM", 1 }, { <FK04>, "NORM", 1 },
- { <FK05>, "NORM", 11 }, { <FK06>, "NORM", 1 },
- { <FK07>, "NORM", 1 }, { <FK08>, "NORM", 1 },
- { <FK09>, "NORM", 11 }, { <FK10>, "NORM", 1 },
- { <FK11>, "NORM", 1 }, { <FK12>, "NORM", 1 },
- { <PRSC>, "NORM", 9 }, { <SCLK>, "NORM", 1 },
- { <PAUS>, "NORM", 1 }, { <MUTE>, "NORM", 11 },
- { <VOL->, "NORM", 1 }, { <VOL+>, "NORM", 1 },
- { <POWR>, "NORM", 1, color= "white" }
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- key.color= "white";
- priority= 2;
- top= 61;
- left= 14;
- width= 333;
- height= 95;
- row {
- top= 1;
- left= 1;
- keys {
- { <STOP>, "NORM", 1, color= "grey10" },
- { <AGAI>, "NORM", 1, color= "grey10" },
- { <TLDE>, "NORM", 9 }, { <AE01>, "NORM", 1 },
- { <AE02>, "NORM", 1 }, { <AE03>, "NORM", 1 },
- { <AE04>, "NORM", 1 }, { <AE05>, "NORM", 1 },
- { <AE06>, "NORM", 1 }, { <AE07>, "NORM", 1 },
- { <AE08>, "NORM", 1 }, { <AE09>, "NORM", 1 },
- { <AE10>, "NORM", 1 }, { <AE11>, "NORM", 1 },
- { <AE12>, "NORM", 1 },
- { <BKSP>, "BKSP", 1, color="grey10" }
- };
- };
- row {
- top= 20;
- left= 1;
- keys {
- { <PROP>, "NORM", 1, color= "grey10" },
- { <UNDO>, "NORM", 1, color= "grey10" },
- { <TAB>, "TABK", 9, color= "grey10" },
- { <AD01>, "NORM", 1 },
- { <AD02>, "NORM", 1 }, { <AD03>, "NORM", 1 },
- { <AD04>, "NORM", 1 }, { <AD05>, "NORM", 1 },
- { <AD06>, "NORM", 1 }, { <AD07>, "NORM", 1 },
- { <AD08>, "NORM", 1 }, { <AD09>, "NORM", 1 },
- { <AD10>, "NORM", 1 }, { <AD11>, "NORM", 1 },
- { <AD12>, "NORM", 1 },
- { <RTRN>, "RTRN", 1, color= "grey10" }
- };
- };
- row {
- top= 39;
- left= 1;
- keys {
- { <FRNT>, "NORM", 1, color= "grey10" },
- { <COPY>, "NORM", 1, color= "grey10" },
- { <CAPS>, "CAPS", 9, color= "grey10" },
- { <AC01>, "NORM", 1 },
- { <AC02>, "NORM", 1 }, { <AC03>, "NORM", 1 },
- { <AC04>, "NORM", 1 }, { <AC05>, "NORM", 1 },
- { <AC06>, "NORM", 1 }, { <AC07>, "NORM", 1 },
- { <AC08>, "NORM", 1 }, { <AC09>, "NORM", 1 },
- { <AC10>, "NORM", 1 }, { <AC11>, "NORM", 1 },
- { <AC12>, "NORM", 1 }
- };
- };
- row {
- top= 58;
- left= 1;
- keys {
- { <OPEN>, "NORM", 1, color= "grey10" },
- { <PAST>, "NORM", 1, color= "grey10" },
- { <LFSH>, "LFSH", 9, color= "grey10" },
- { <AB00>, "NORM", 1 }, { <AB01>, "NORM", 1 },
- { <AB02>, "NORM", 1 }, { <AB03>, "NORM", 1 },
- { <AB04>, "NORM", 1 }, { <AB05>, "NORM", 1 },
- { <AB06>, "NORM", 1 }, { <AB07>, "NORM", 1 },
- { <AB08>, "NORM", 1 }, { <AB09>, "NORM", 1 },
- { <AB10>, "NORM", 1 },
- { <RTSH>, "RTSH", 1, color="grey10" }
- };
- };
- row {
- top= 77;
- left= 1;
- key.color= "grey10";
- keys {
- { <FIND>, "NORM", 1 }, { <CUT>, "NORM", 1 },
- { <LCTL>, "LCTL", 9 }, { <LALT>, "NORM", 1 },
- { <LMTA>, "NORM", 1 },
- { <SPCE>, "SPCE", 1, color= "white" },
- { <RMTA>, "NORM", 1 }, { <COMP>, "NORM", 1 },
- { <ALGR>, "NORM", 1 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- key.color= "grey10";
- priority= 3;
- top= 61;
- left= 352;
- width= 58;
- height= 95;
- row {
- top= 1;
- left= 1;
- keys {
- { <INS>, "NORM", 1 }, { <HOME>, "NORM", 1 },
- { <PGUP>, "NORM", 1 }
- };
- };
- row {
- top= 20;
- left= 1;
- keys {
- { <DELE>, "NORM", 1 }, { <END>, "NORM", 1 },
- { <PGDN>, "NORM", 1 }
- };
- };
- row {
- top= 58;
- left= 20;
- keys {
- { <UP>, "NORM", 1 }
- };
- };
- row {
- top= 77;
- left= 1;
- keys {
- { <LEFT>, "NORM", 1 }, { <DOWN>, "NORM", 1 },
- { <RGHT>, "NORM", 1 }
- };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- key.color= "white";
- priority= 4;
- top= 61;
- left= 420;
- width= 77;
- height= 95;
- row {
- top= 1;
- left= 1;
- key.color= "grey10";
- keys {
- { <NMLK>, "NORM", 1 }, { <KPDV>, "NORM", 1 },
- { <KPMU>, "NORM", 1 }, { <KPSU>, "NORM", 1 }
- };
- };
- row {
- top= 20;
- left= 1;
- keys {
- { <KP7>, "NORM", 1 }, { <KP8>, "NORM", 1 },
- { <KP9>, "NORM", 1 },
- { <KPAD>, "KPAD", 1, color="grey10" }
- };
- };
- row {
- top= 39;
- left= 1;
- keys {
- { <KP4>, "NORM", 1 }, { <KP5>, "NORM", 1 },
- { <KP6>, "NORM", 1 }
- };
- };
- row {
- top= 58;
- left= 1;
- keys {
- { <KP1>, "NORM", 1 }, { <KP2>, "NORM", 1 },
- { <KP3>, "NORM", 1 },
- { <KPEN>, "KPAD", 1, color="grey10" }
- };
- };
- row {
- top= 77;
- left= 1;
- keys {
- { <KP0>, "KP0", 1 }, { <KPDL>, "NORM", 1 }
- };
- };
- }; // End of "Keypad" section
-
- outline "Edges" {
- top= 0;
- left= 0;
- priority= 0;
- shape= "EDGE";
- };
-
- solid "Logos" {
- color= "blue";
- top= 5;
- left= 25;
- priority= 0;
- shape= "LOGO";
- };
-
- logo "SUNLogoImage" {
- top= 5;
- left= 25;
- name= "SUN";
- priority= 1;
- shape= "LOGO";
- };
-
- shape "LED" { cornerRadius= 1,
- { [ 0, 1.5], [ 1.5, 3], [ 3, 1.5], [ 1.5, 0] }
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.shape= "LED";
- indicator "Caps Lock" { left= 75; top= 103; priority= 5; };
- indicator "Compose" { left= 314; top= 142; priority= 5; };
- indicator "Scroll Lock" { left= 378; top= 29; };
- indicator "Num Lock" { left= 426; top= 66; };
-};
-
-xkb_geometry "type5c_se" {
-
- // kbd: type = 4, layout = 43
-
- description= "Sun Type5c keyboard (Sweden)";
-
- width= 510;
- height= 170;
-
- baseColor= "grey";
- labelColor= "black";
-
- shape.cornerRadius= 1;
-
- shape "EDGE" { cornerRadius= 2, { [ 510, 170 ] } };
- shape "LOGO" { cornerRadius= 2,
- { [ 0, 8], [ 8, 16], [ 16, 8], [ 8, 0] }
- };
-
- shape "NORM" { { [ 18, 18] }, { [ 2, 1], [ 16, 17] } };
- shape "BKSP" { { [ 38, 18] }, { [ 2, 1], [ 36, 17] } };
- shape "TABK" { { [ 27, 18] }, { [ 2, 1], [ 25, 17] } };
- shape "META" { { [ 27, 18] }, { [ 2, 1], [ 25, 17] } };
- shape "RTRN" {
- { [ 0, 0], [ 29, 0], [ 29, 37], [ 5, 37], [ 5, 18], [ 0, 18] },
- { [ 2, 1], [ 27, 1], [ 27, 36], [ 7, 36], [ 7, 17], [ 2, 17] }
- };
- shape "CAPS" { { [ 32, 18] }, { [ 2, 1], [ 30, 17 ] } };
- shape "LFSH" { { [ 24, 18] }, { [ 2, 1], [ 22, 17 ] } };
- shape "RTSH" { { [ 51, 18] }, { [ 2, 1], [ 49, 17 ] } };
- shape "LCTL" { { [ 32, 18] }, { [ 2, 1], [ 30, 17 ] } };
- shape "MODK" { { [ 28, 18] }, { [ 2, 1], [ 26, 17 ] } };
- shape "SPCE" { { [139, 18] }, { [ 2, 1], [137, 17 ] } };
- shape "KP0" { { [ 37, 18] }, { [ 2, 1], [ 35, 17 ] } };
- shape "KPAD" { { [ 18, 37] }, { [ 2, 1], [ 16, 36 ] } };
- shape "HELP" { { [ 37, 18] }, { [ 2, 1], [ 35, 17 ] } };
-
- section "Function" {
- key.color= "grey10";
- priority= 1;
- top= 24;
- left= 14;
- width= 481;
- height= 19;
- row {
- top= 1;
- left= 1;
- keys {
- { <HELP>, "HELP", 1 }, { <ESC>, "NORM", 9 },
- { <FK01>, "NORM", 19 }, { <FK02>, "NORM", 1 },
- { <FK03>, "NORM", 1 }, { <FK04>, "NORM", 1 },
- { <FK05>, "NORM", 11 }, { <FK06>, "NORM", 1 },
- { <FK07>, "NORM", 1 }, { <FK08>, "NORM", 1 },
- { <FK09>, "NORM", 11 }, { <FK10>, "NORM", 1 },
- { <FK11>, "NORM", 1 }, { <FK12>, "NORM", 1 },
- { <PRSC>, "NORM", 9 }, { <SCLK>, "NORM", 1 },
- { <PAUS>, "NORM", 1 }, { <MUTE>, "NORM", 11 },
- { <VOL->, "NORM", 1 }, { <VOL+>, "NORM", 1 },
- { <POWR>, "NORM", 1, color= "white" }
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- key.color= "white";
- priority= 2;
- top= 61;
- left= 14;
- width= 333;
- height= 95;
- row {
- top= 1;
- left= 1;
- keys {
- { <STOP>, "NORM", 1, color= "grey10" },
- { <AGAI>, "NORM", 1, color= "grey10" },
- { <TLDE>, "NORM", 9 }, { <AE01>, "NORM", 1 },
- { <AE02>, "NORM", 1 }, { <AE03>, "NORM", 1 },
- { <AE04>, "NORM", 1 }, { <AE05>, "NORM", 1 },
- { <AE06>, "NORM", 1 }, { <AE07>, "NORM", 1 },
- { <AE08>, "NORM", 1 }, { <AE09>, "NORM", 1 },
- { <AE10>, "NORM", 1 }, { <AE11>, "NORM", 1 },
- { <AE12>, "NORM", 1 },
- { <BKSP>, "BKSP", 1, color="grey10" }
- };
- };
- row {
- top= 20;
- left= 1;
- keys {
- { <PROP>, "NORM", 1, color= "grey10" },
- { <UNDO>, "NORM", 1, color= "grey10" },
- { <TAB>, "TABK", 9, color= "grey10" },
- { <AD01>, "NORM", 1 },
- { <AD02>, "NORM", 1 }, { <AD03>, "NORM", 1 },
- { <AD04>, "NORM", 1 }, { <AD05>, "NORM", 1 },
- { <AD06>, "NORM", 1 }, { <AD07>, "NORM", 1 },
- { <AD08>, "NORM", 1 }, { <AD09>, "NORM", 1 },
- { <AD10>, "NORM", 1 }, { <AD11>, "NORM", 1 },
- { <AD12>, "NORM", 1 },
- { <RTRN>, "RTRN", 1, color= "grey10" }
- };
- };
- row {
- top= 39;
- left= 1;
- keys {
- { <FRNT>, "NORM", 1, color= "grey10" },
- { <COPY>, "NORM", 1, color= "grey10" },
- { <CAPS>, "CAPS", 9, color= "grey10" },
- { <AC01>, "NORM", 1 },
- { <AC02>, "NORM", 1 }, { <AC03>, "NORM", 1 },
- { <AC04>, "NORM", 1 }, { <AC05>, "NORM", 1 },
- { <AC06>, "NORM", 1 }, { <AC07>, "NORM", 1 },
- { <AC08>, "NORM", 1 }, { <AC09>, "NORM", 1 },
- { <AC10>, "NORM", 1 }, { <AC11>, "NORM", 1 },
- { <AC12>, "NORM", 1 }
- };
- };
- row {
- top= 58;
- left= 1;
- keys {
- { <OPEN>, "NORM", 1, color= "grey10" },
- { <PAST>, "NORM", 1, color= "grey10" },
- { <LFSH>, "LFSH", 9, color= "grey10" },
- { <AB00>, "NORM", 1 }, { <AB01>, "NORM", 1 },
- { <AB02>, "NORM", 1 }, { <AB03>, "NORM", 1 },
- { <AB04>, "NORM", 1 }, { <AB05>, "NORM", 1 },
- { <AB06>, "NORM", 1 }, { <AB07>, "NORM", 1 },
- { <AB08>, "NORM", 1 }, { <AB09>, "NORM", 1 },
- { <AB10>, "NORM", 1 },
- { <RTSH>, "RTSH", 1, color="grey10" }
- };
- };
- row {
- top= 77;
- left= 1;
- key.color= "grey10";
- keys {
- { <FIND>, "NORM", 1 }, { <CUT>, "NORM", 1 },
- { <LCTL>, "LCTL", 9 }, { <LALT>, "NORM", 1 },
- { <LMTA>, "META", 1 },
- { <SPCE>, "SPCE", 1, color= "white" },
- { <RMTA>, "META", 1 }, { <COMP>, "NORM", 1 },
- { <ALGR>, "NORM", 1 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- key.color= "grey10";
- priority= 3;
- top= 61;
- left= 352;
- width= 58;
- height= 95;
- row {
- top= 1;
- left= 1;
- keys {
- { <INS>, "NORM", 1 }, { <HOME>, "NORM", 1 },
- { <PGUP>, "NORM", 1 }
- };
- };
- row {
- top= 20;
- left= 1;
- keys {
- { <DELE>, "NORM", 1 }, { <END>, "NORM", 1 },
- { <PGDN>, "NORM", 1 }
- };
- };
- row {
- top= 58;
- left= 20;
- keys {
- { <UP>, "NORM", 1 }
- };
- };
- row {
- top= 77;
- left= 1;
- keys {
- { <LEFT>, "NORM", 1 }, { <DOWN>, "NORM", 1 },
- { <RGHT>, "NORM", 1 }
- };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- key.color= "white";
- priority= 4;
- top= 61;
- left= 420;
- width= 77;
- height= 95;
- row {
- top= 1;
- left= 1;
- key.color= "grey10";
- keys {
- { <NMLK>, "NORM", 1 }, { <KPDV>, "NORM", 1 },
- { <KPMU>, "NORM", 1 }, { <KPSU>, "NORM", 1 }
- };
- };
- row {
- top= 20;
- left= 1;
- keys {
- { <KP7>, "NORM", 1 }, { <KP8>, "NORM", 1 },
- { <KP9>, "NORM", 1 },
- { <KPAD>, "KPAD", 1, color="grey10" }
- };
- };
- row {
- top= 39;
- left= 1;
- keys {
- { <KP4>, "NORM", 1 }, { <KP5>, "NORM", 1 },
- { <KP6>, "NORM", 1 }
- };
- };
- row {
- top= 58;
- left= 1;
- keys {
- { <KP1>, "NORM", 1 }, { <KP2>, "NORM", 1 },
- { <KP3>, "NORM", 1 },
- { <KPEN>, "KPAD", 1, color="grey10" }
- };
- };
- row {
- top= 77;
- left= 1;
- keys {
- { <KP0>, "KP0", 1 }, { <KPDL>, "NORM", 1 }
- };
- };
- }; // End of "Keypad" section
-
- outline "Edges" {
- top= 0;
- left= 0;
- priority= 0;
- shape= "EDGE";
- };
-
- solid "Logos" {
- color= "blue";
- top= 5;
- left= 15;
- priority= 0;
- shape= "LOGO";
- };
-
- logo "SUNLogoImage" {
- top= 5;
- left= 15;
- name= "SUN";
- priority= 1;
- shape= "LOGO";
- };
-
- text.font= "charter";
- text.weight= "medium";
- text.slant= "i";
- text.fontSize= 40;
- text "SunLogoText" {
- top= 5;
- left= 32;
- color= "blue";
- text= "Sun";
- };
-
- shape "LED" { cornerRadius= 1,
- { [ 0, 1.5], [ 1.5, 3], [ 3, 1.5], [ 1.5, 0] }
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.shape= "LED";
- indicator "Caps Lock" { left= 75; top= 103; priority= 5; };
- indicator "Compose" { left= 314; top= 142; priority= 5; };
- indicator "Scroll Lock" { left= 378; top= 29; };
- indicator "Num Lock" { left= 426; top= 66; };
-};
-
-xkb_geometry "type4_se" {
-
- // kbd: type = 4, layout = 11
-
- description= "Sun Type4 keyboard (Sweden)";
-
-
- width= 453;
- height= 183;
-
- baseColor= "grey";
- labelColor= "black";
-
- shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "DELE" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,19], [ 0,19] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,18], [ 1,18] }
- };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 17;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
-
- section "Alpha" {
- top= 58;
- row {
- top= 1;
- key.color= "grey10";
- keys { <STOP>, <AGAI>, { <FK01>, 9 },
- <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>, <FK11>, <FK12>,
- { <AF13>, color= "white"},
- { <AF14>, color= "white"},
- <DELE>, { <PAUS>, 9 },
- <PRSC>, <SCLK>, <NMLK>
- };
- };
- row {
- top= 20;
- key.color= "white";
- keys {
- { <PROP>, color= "grey10" },
- { <UNDO>, color= "grey10" },
- { <ESC>, 9, color= "grey10" },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
- <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
- <AE11>, <AE12>,
- { <BKSP>, "BKSP", color= "grey10" },
- { <KPEQ>, 9, color= "grey10" },
- { <KPDV>, color= "grey10" },
- { <KPMU>, color= "grey10" },
- { <KPSU>, color= "grey10" }
- };
- };
- row {
- top= 39;
- key.color= "white";
- keys {
- { <FRNT>, color= "grey10" },
- { <COPY>, color= "grey10" },
- { <TAB>, 9, "TABK", color= "grey10" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN", color= "grey10" },
- { <KP7>, 9, color= "grey10" },
- { <KP8>, color= "grey10" },
- { <KP9>, color= "grey10" },
- { <KPAD>, "KPAD", color= "grey10" }
- };
- };
- row {
- top= 58;
- key.color= "white";
- keys {
- { <OPEN>, color= "grey10" },
- { <PAST>, color= "grey10" },
- { <CAPS>, 9, "LCTL", color= "grey10" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <AC12>,
- { <KP4>, 33, color= "grey10" },
- { <KP5>, color= "grey10" },
- { <KP6>, color= "grey10" }
- };
- };
- row {
- top= 77;
- key.color= "white";
- keys {
- { <FIND>, color= "grey10" },
- { <CUT>, color= "grey10" },
- { <LFSH>, 9 , "LFSH", color= "grey10" },
- <AB00>, <AB01>, <AB02>, <AB03>,
- <AB04>, <AB05>, <AB06>, <AB07>,
- <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color= "grey10" },
- { <LNFD>, color= "grey10" },
- { <KP1>, 9, color= "grey10" },
- { <KP2>, color= "grey10" },
- { <KP3>, color= "grey10" },
- { <KPEN>, "KPAD", color= "grey10" }
- };
- };
- row {
- top= 96;
- key.color= "grey10";
- keys {
- { <HELP>, "HELP" }, { <LCTL>, 9 },
- <LALT>, <LMTA>,
- { <SPCE>, "SPCE", color= "white" },
- <RMTA>, <COMP>, <ALGR>,
- { <KP0>, 9, "KP0" }, <KPDL>
- };
- };
- }; // End of "Alpha" section
-
- shape "RIDGE" { cornerRadius= 1, { [ 0, 1], [ 1, 0 ],
- [330, 0], [331, 1],
- [330, 2], [ 1, 2] } };
- solid "Ridge" {
- shape= "RIDGE";
- top= 48;
- left= 18;
- };
-
- shape "LEDS" { cornerRadius= 1, { [ 75 ,21 ] } };
- shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
- outline "LedPanel" {
- shape= "LEDS";
- top= 28;
- left= 358;
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 43;
- indicator.shape= "LED";
- indicator "Caps Lock" { left= 364; };
- indicator "Compose" { left= 383; };
- indicator "Scroll Lock" { left= 402; };
- indicator "Num Lock" { left= 421; };
- text.top= 32;
- text.color= "black";
- text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
- text "ComposeLabel" { left= 380; text="\nCompose"; };
- text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; };
- text "NumLockLabel" { left= 421; text="Num\nLock"; };
-};
-
-xkb_geometry "t6" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type6
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes.
-
- width= 515;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [136,18] }, { [2,1], [134,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "RMTA" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "LMTA" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <ESC>, 9 },
- { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 9 }, <SCLK>, <PAUS>,
- { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
- <LALT>, { <LMTA>, "LMTA" },
- { <SPCE>, "SPCE" },
- { <RMTA>, "RMTA" }, <COMP>, <ALGR>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 420;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
- shape "LED" { cornerRadius= 2, { [ 3, 6 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 1;
- left= 218;
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 10;
- indicator.shape= "LED";
- indicator "CapsLock" { left= 243; };
- indicator "Compose" { left= 281; };
- indicator "ScrollLock" { left= 262; };
- indicator "NumLock" { left= 224; };
- text.top= 1;
- text.color= "black";
- text "CapsLockLabel" { left= 243; text="Caps\nLock"; };
- text "ComposeLabel" { left= 281; text="Compose"; };
- text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; };
- text "NumLockLabel" { left= 224; text="Num\nLock"; };
-
-
-};
-
-xkb_geometry "t6tuv" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type6
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes.
-
- width= 515;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,18], [ 0,18] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,17], [ 1,17] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 24,18] }, { [2,1], [22,17] } };
- shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [137,18] }, { [2,1], [135,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "RMTA" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "LMTA" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <ESC>, 9 },
- { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 9 }, <SCLK>, <PAUS>,
- { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
- <LALT>, { <LMTA>, "LMTA" },
- { <SPCE>, "SPCE" },
- { <RMTA>, "RMTA" }, <COMP>, <ALGR>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 420;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
- shape "LED" { cornerRadius= 2, { [ 3, 6 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 1;
- left= 218;
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 10;
- indicator.shape= "LED";
- indicator "CapsLock" { left= 243; };
- indicator "Compose" { left= 281; };
- indicator "ScrollLock" { left= 262; };
- indicator "NumLock" { left= 224; };
- text.top= 1;
- text.color= "black";
- text "CapsLockLabel" { left= 243; text="Caps\nLock"; };
- text "ComposeLabel" { left= 281; text="Compose"; };
- text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; };
- text "NumLockLabel" { left= 224; text="Num\nLock"; };
-
-};
-
-xkb_geometry "t6jp" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type6
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes.
-
- width= 515;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "KANJ" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "EXEC" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,18], [ 0,18] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,17], [ 1,17] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [ 96,18] }, { [2,1], [94,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <ESC>, 9 },
- { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 9 }, <SCLK>, <PAUS>,
- { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <UNDR>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9 },
- <LALT>, <LMTA>, { <EXEC>, "EXEC" },
- { <SPCE>, "SPCE" }, { <KANJ>, "KANJ" }, <HENK>,
- <RMTA>, <COMP>, <ALGR>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 420;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
- shape "LED" { cornerRadius= 2, { [ 3, 6 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 1;
- left= 218;
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 10;
- indicator.shape= "LED";
- indicator "CapsLock" { left= 243; };
- indicator "Compose" { left= 281; };
- indicator "ScrollLock" { left= 262; };
- indicator "NumLock" { left= 224; };
- text.top= 1;
- text.color= "black";
- text "CapsLockLabel" { left= 243; text="Caps\nLock"; };
- text "ComposeLabel" { left= 281; text="Compose"; };
- text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; };
- text "NumLockLabel" { left= 224; text="Num\nLock"; };
-
-};
-
-xkb_geometry "t6unix" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type6
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes.
-
- width= 515;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [136,18] }, { [2,1], [134,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "RMTA" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "LMTA" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <NONE>, 9 },
- { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 9 }, <SCLK>, <PAUS>,
- { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <ESC>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- <BKSL>, <TLDE>
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
- <LALT>, {<LMTA>, "LMTA"},
- { <SPCE>, "SPCE" },
- {<RMTA>, "RMTA"}, <COMP>, <ALGR>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 420;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
- shape "LED" { cornerRadius= 2, { [ 3, 6 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 1;
- left= 218;
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 10;
- indicator.shape= "LED";
- indicator "CapsLock" { left= 243; };
- indicator "Compose" { left= 281; };
- indicator "ScrollLock" { left= 262; };
- indicator "NumLock" { left= 224; };
- text.top= 1;
- text.color= "black";
- text "CapsLockLabel" { left= 243; text="Caps\nLock"; };
- text "ComposeLabel" { left= 281; text="Compose"; };
- text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; };
- text "NumLockLabel" { left= 224; text="Num\nLock"; };
-};
-
-xkb_geometry "type5" {
- include "sun(t5)"
- description= "Sun Type5 keyboard";
-};
-
-xkb_geometry "type5jp" {
- include "sun(t5jp)"
- description= "Sun Type5 Japanese keyboard";
-};
-
-xkb_geometry "type5tuv" {
- include "sun(t5tuv)"
- description= "Sun Type5 keyboard";
-};
-
-xkb_geometry "type5euro" {
- include "sun(t5tuv)"
- description= "Sun Type5 keyboard";
-};
-
-xkb_geometry "type5unix" {
- include "sun(t5unix)"
- description= "Sun Type5 Unix keyboard";
-};
-
-xkb_geometry "type5hobo" {
- include "sun(t5hobo)"
- description= "Sun Type5 Hobo keyboard";
-};
-
-xkb_geometry "type5tuvhobo" {
- include "sun(t5tuvhobo)"
- description= "Sun Type5 Hobo keyboard";
-};
-
-xkb_geometry "type5jphobo" {
- include "sun(t5jphobo)"
- description= "Sun Type5 Japanese Hobo keyboard";
-};
-
-default xkb_geometry "type6" {
- include "sun(t6)"
- description= "Sun Type6 keyboard (US, Korea, Taiwan)";
-};
-
-xkb_geometry "type6jp" {
- include "sun(t6jp)"
- description= "Sun Type6 Japanese keyboard";
-};
-
-xkb_geometry "type6tuv" {
- include "sun(t6tuv)"
- description= "Sun Type6 TUV keyboard";
-};
-
-xkb_geometry "type6unix" {
- include "sun(t6unix)"
- description= "Sun Type6 Unix keyboard";
-};
-
-xkb_geometry "x86" {
- include "pc(pc101)"
- description= "x86 Style Keyboard";
-};
-
-xkb_geometry "MS_x86" {
- include "pc(pc104)"
- description= "x86 104 Key Keyboard";
-};
-
-xkb_geometry "x86tuv" {
- include "pc(pc102)"
- description= "x86 European Style Keyboard";
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+// ---------------------------------------------------------------------------
+// Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice (including the next
+// paragraph) shall be included in all copies or substantial portions of the
+// Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// ---------------------------------------------------------------------------
+//
+xkb_geometry "type4" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type4 US
+ // keyboard.
+
+ description= "Sun Type4 keyboard";
+
+ width= 452;
+ height= 185;
+
+ shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "DELE" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,19], [ 0,19] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,18], [ 1,18] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 41,18] }, { [2,1], [39,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 17;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+
+ section "Alpha" {
+ top= 58;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <FK01>, 9 }, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>, <FK11>, <FK12>,
+ <BKSL>, { <DELE>, "DELE" },
+ { <PAUS>, 9 }, <PRSC>, <SCLK>, <NMLK>
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <ESC>, 9 },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
+ <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
+ <AE11>, <AE12>,
+ { <BKSP>, "BKSP" },
+ { <KPEQ>, 9 }, <KPDV>, <KPMU>, <KPSU>
+
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>,
+ { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" },
+ { <KP7>, 9 }, <KP8>, <KP9>, { <KPAD>, "KPAD" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>,
+ { <LCTL>, 9, shape="LCTL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <TLDE>,
+ { <KP4>, 33 }, <KP5>, <KP6>
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>,
+ { <LFSH>, 9 , shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }, <LNFD>,
+ { <KP1>, 9} , <KP2>, <KP3>, { <KPEN>, "KPAD" }
+ };
+ };
+ row {
+ top= 96;
+ keys { { <HELP>, "HELP" }, { <CAPS>, 9 },
+ <LALT>, <LMTA>, { <SPCE>, "SPCE" },
+ <RMTA>, <COMP>, <ALGR>,
+ { <KP0>, 9, shape="KP0" }, <KPDL>
+ };
+ };
+ }; // End of "Alpha" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
+ shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 28;
+ left= 358;
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 43;
+ indicator.shape= "LED";
+ indicator "Caps Lock" { left= 364; };
+ indicator "Compose" { left= 383; };
+ indicator "Scroll Lock" { left= 402; };
+ indicator "Num Lock" { left= 421; };
+ text.top= 34;
+ text.color= "black";
+ text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
+ text "ComposeLabel" { left= 380; text="Compose"; };
+ text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; };
+ text "NumLockLabel" { left= 421; text="Num\nLock"; };
+};
+
+xkb_geometry "type4tuv" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type4 TUV
+ // (European) keyboard with an extra key between the Shift_L
+ // and the Z keys, and two keys above the Bksp key, instead
+ // of a large delete key.
+
+ description= "Sun Type4tuv keyboard";
+
+ width= 452;
+ height= 185;
+
+ shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,19], [ 0,19] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,18], [ 1,18] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 17;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+
+ section "Alpha" {
+ top= 58;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <FK01>, 9 }, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>, <FK11>, <FK12>,
+ <BKSL>, <BRCR>,<DELE>,
+ { <PAUS>, 9 }, <PRSC>, <SCLK>, <NMLK>
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <ESC>, 9 },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
+ <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
+ <AE11>, <AE12>,
+ { <BKSP>, "BKSP" },
+ { <KPEQ>, 9 }, <KPDV>, <KPMU>, <KPSU>
+
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>,
+ { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" },
+ { <KP7>, 9 }, <KP8>, <KP9>, { <KPAD>, "KPAD" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>,
+ { <LCTL>, 9, shape="LCTL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <TLDE>,
+ { <KP4>, 33 }, <KP5>, <KP6>
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>,
+ { <LFSH>, 9 }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }, <LNFD>,
+ { <KP1>, 9} , <KP2>, <KP3>, { <KPEN>, "KPAD" }
+ };
+ };
+ row {
+ top= 96;
+ keys { { <HELP>, "HELP" }, { <CAPS>, 9 },
+ <LALT>, <LMTA>, { <SPCE>, "SPCE" },
+ <RMTA>, <COMP>, <ALGR>,
+ { <KP0>, 9, shape="KP0" }, <KPDL>
+ };
+ };
+ }; // End of "Alpha" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
+ shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 28;
+ left= 358;
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 43;
+ indicator.shape= "LED";
+ indicator "CapsLock" { left= 364; };
+ indicator "Compose" { left= 383; };
+ indicator "ScrollLock" { left= 402; };
+ indicator "NumLock" { left= 421; };
+ text.top= 34;
+ text.color= "black";
+ text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
+ text "ComposeLabel" { left= 380; text="Compose"; };
+ text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; };
+ text "NumLockLabel" { left= 421; text="Num\nLock"; };
+};
+
+xkb_geometry "type4_ca" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type4
+ // Canadian and British keyboard with an extra key between
+ // the Shift_L
+ // and the Z keys.
+
+ description= "Sun Type4_uk keyboard";
+
+ width= 452;
+ height= 185;
+
+ shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "DELE" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,19], [ 0,19] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,18], [ 1,18] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 17;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+
+ section "Alpha" {
+ top= 58;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <FK01>, 9 }, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>, <FK11>, <FK12>,
+ <BKSL>, { <DELE>, "DELE" },
+ { <PAUS>, 9 }, <PRSC>, <SCLK>, <NMLK>
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <ESC>, 9 },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
+ <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
+ <AE11>, <AE12>,
+ { <BKSP>, "BKSP" },
+ { <KPEQ>, 9 }, <KPDV>, <KPMU>, <KPSU>
+
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>,
+ { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" },
+ { <KP7>, 9 }, <KP8>, <KP9>, { <KPAD>, "KPAD" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>,
+ { <LCTL>, 9, shape="LCTL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <TLDE>,
+ { <KP4>, 33 }, <KP5>, <KP6>
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>,
+ { <LFSH>, 9 }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }, <LNFD>,
+ { <KP1>, 9} , <KP2>, <KP3>, { <KPEN>, "KPAD" }
+ };
+ };
+ row {
+ top= 96;
+ keys { { <HELP>, "HELP" }, { <CAPS>, 9 },
+ <LALT>, <LMTA>, { <SPCE>, "SPCE" },
+ <RMTA>, <COMP>, <ALGR>,
+ { <KP0>, 9, shape="KP0" }, <KPDL>
+ };
+ };
+ }; // End of "Alpha" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
+ shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 28;
+ left= 358;
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 43;
+ indicator.shape= "LED";
+ indicator "CapsLock" { left= 364; };
+ indicator "Compose" { left= 383; };
+ indicator "ScrollLock" { left= 402; };
+ indicator "NumLock" { left= 421; };
+ text.top= 34;
+ text.color= "black";
+ text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
+ text "ComposeLabel" { left= 380; text="Compose"; };
+ text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; }
+;
+ text "NumLockLabel" { left= 421; text="Num\nLock"; };
+};
+
+xkb_geometry "type4jp" {
+
+ // This is an approximate layout for a Japanese Sun Type4
+ // keyboard, based on the European TUV keyboard. It has two keys
+ // above the Bksp key, instead of a large delete key, but lacks
+ // the extra key between Shift_L and Z.
+
+ description= "Sun Japanese Type4 keyboard";
+
+ width= 452;
+ height= 185;
+
+ shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,19], [ 0,19] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,18], [ 1,18] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [ 97,18] }, { [2,1], [95,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LFSH" { { [ 41,18] }, { [2,1], [39,17] } };
+ shape "KANJ" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "EXEC" { { [ 27,18] }, { [2,1], [25,17] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 17;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+
+ section "Alpha" {
+ top= 58;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <FK01>, 9 }, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>, <FK11>, <FK12>,
+ <BKSL>, <BRCR>,<DELE>,
+ { <PAUS>, 9 }, <PRSC>, <SCLK>, <NMLK>
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <ESC>, 9 },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
+ <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
+ <AE11>, <AE12>,
+ { <BKSP>, "BKSP" },
+ { <KPEQ>, 9 }, <KPDV>, <KPMU>, <KPSU>
+
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>,
+ { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" },
+ { <KP7>, 9 }, <KP8>, <KP9>, { <KPAD>, "KPAD" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>,
+ { <LCTL>, 9, shape="LCTL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <TLDE>,
+ { <KP4>, 33 }, <KP5>, <KP6>
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>,
+ { <LFSH>, 9, shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ <LNFD>, { <RTSH>, "RTSH" },
+ { <KP1>, 9} , <KP2>, <KP3>, { <KPEN>, "KPAD" }
+ };
+ };
+ row {
+ top= 96;
+ keys { { <HELP>, "HELP" }, { <CAPS>, 9 },
+ <LALT>, <LMTA>, { <EXEC>, "EXEC"} , { <SPCE>, "SPCE" },
+ { <KANJ>, "KANJ" }, <HENK>, <RMTA>, <COMP>, <ALGR>,
+ { <KP0>, 9, shape="KP0" }, <KPDL>
+ };
+ };
+ }; // End of "Alpha" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
+ shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 28;
+ left= 358;
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 43;
+ indicator.shape= "LED";
+ indicator "CapsLock" { left= 364; };
+ indicator "Compose" { left= 383; };
+ indicator "ScrollLock" { left= 402; };
+ indicator "NumLock" { left= 421; };
+ text.top= 34;
+ text.color= "black";
+ text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
+ text "ComposeLabel" { left= 380; text="Compose"; };
+ text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; };
+ text "NumLockLabel" { left= 421; text="Num\nLock"; };
+};
+
+xkb_geometry "t5" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type5
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes.
+
+ width= 515;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [156,18] }, { [2,1], [154,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <ESC>, 9 },
+ { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 9 }, <SCLK>, <PAUS>,
+ { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
+ <LALT>, <LMTA>,
+ { <SPCE>, "SPCE" },
+ <RMTA>, <COMP>, <ALGR>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 420;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+};
+
+xkb_geometry "t5tuv" {
+
+ // This is an approximate layout for a TUV/European Sun Type5 keyboard.
+
+ width= 515;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,18], [ 0,18] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,17], [ 1,17] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 24,18] }, { [2,1], [22,17] } };
+ shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [157,18] }, { [2,1], [155,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <ESC>, 9 },
+ { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 9 }, <SCLK>, <PAUS>,
+ { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
+ <LALT>, <LMTA>,
+ { <SPCE>, "SPCE" },
+ <RMTA>, <COMP>, <ALGR>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 420;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+};
+
+
+xkb_geometry "t5jp" {
+
+ // This is an approximate layout for a Japanese Sun Type5 keyboard.
+
+ width= 515;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "KANJ" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "EXEC" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,18], [ 0,18] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,17], [ 1,17] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [ 97,18] }, { [2,1], [95,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <ESC>, 9 },
+ { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 9 }, <SCLK>, <PAUS>,
+ { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <UNDR>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9 },
+ <LALT>, <LMTA>, { <EXEC>, "EXEC" },
+ { <SPCE>, "SPCE" }, { <KANJ>, "KANJ" }, <HENK>,
+ <RMTA>, <COMP>, <ALGR>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 420;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+};
+
+xkb_geometry "t5unix" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type5
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes.
+
+ width= 515;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [157,18] }, { [2,1], [155,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <NONE>, 9 },
+ { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 9 }, <SCLK>, <PAUS>,
+ { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <ESC>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ <BKSL>, <TLDE>
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <LCTL>, 9, shape="LCTL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <CAPS>, 9, shape="CAPS" },
+ <LALT>, <LMTA>,
+ { <SPCE>, "SPCE" },
+ <RMTA>, <COMP>, <ALGR>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 420;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+};
+
+xkb_geometry "t5hobo" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type5
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes.
+ //
+ // I modified this to look like the hobo keyboard.
+
+ width= 425;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 425, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "FKEY" { { [ 15,18] }, { [0.5,0.5], [14.5, 17.5] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "BKSL" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "RTSH" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [156,18] }, { [2,1], [154,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "FKEY";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <ESC>, 9 },
+ { <FK01>, 4 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 4 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 4 }, <FK10>, <FK11>, <FK12>,
+ { <MUTE>, 4 }, <VOL->, <VOL+>, <POWR>,
+ { <PRSC>, 9, "NORM" }, {<SCLK>, "NORM"}, {<PAUS>, "NORM"}
+ };
+ };
+ }; // End of "Function" section
+
+ key.shape= "NORM";
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }, <ALGR>
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
+ <LALT>, <LMTA>,
+ { <SPCE>, "SPCE" },
+ <RMTA>, <COMP>, <NMLK>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+};
+
+xkb_geometry "t5tuvhobo" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type5
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes.
+ //
+ // I modified this to look like the hobo keyboard.
+
+ width= 425;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 425, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "FKEY" { { [ 15,18] }, { [0.5,0.5], [14.5, 17.5] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "BKSL" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 24,18] }, { [2,1], [22,17] } };
+ shape "RTSH" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [156,18] }, { [2,1], [154,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "FKEY";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <ESC>, 9 },
+ { <FK01>, 4 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 4 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 4 }, <FK10>, <FK11>, <FK12>,
+ { <MUTE>, 4 }, <VOL->, <VOL+>, <POWR>,
+ { <PRSC>, 9, "NORM" }, {<SCLK>, "NORM"}, {<PAUS>, "NORM"}
+ };
+ };
+ }; // End of "Function" section
+
+ key.shape= "NORM";
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }, <ALGR>
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
+ <LALT>, <LMTA>,
+ { <SPCE>, "SPCE" },
+ <RMTA>, <COMP>, <NMLK>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+};
+
+xkb_geometry "t5jphobo" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type5
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes.
+
+ width= 425;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 425, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "FKEY" { { [ 15,18] }, { [0.5,0.5], [14.5, 17.5] } };
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "KANJ" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "EXEC" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,18], [ 0,18] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,17], [ 1,17] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [ 97,18] }, { [2,1], [95,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "FKEY";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <ESC>, 9 },
+ { <FK01>, 4 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 4 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 4 }, <FK10>, <FK11>, <FK12>,
+ { <MUTE>, 4 }, <VOL->, <VOL+>, <POWR>,
+ { <PRSC>, 9, "NORM" }, {<SCLK>, "NORM"}, {<PAUS>, "NORM"}
+ };
+ };
+ }; // End of "Function" section
+
+ key.shape= "NORM";
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <UNDR>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9 },
+ <LALT>, <LMTA>, { <EXEC>, "EXEC" },
+ { <SPCE>, "SPCE" }, { <KANJ>, "KANJ" }, <HENK>,
+ <RMTA>, <COMP>, <ALGR>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+};
+
+xkb_geometry "type5_se" {
+
+ // kbd: type = 4, layout = 43
+
+ description= "Sun Type5 keyboard (Sweden)";
+
+ width= 510;
+ height= 170;
+
+ baseColor= "grey";
+ labelColor= "black";
+
+ shape.cornerRadius= 1;
+
+ shape "EDGE" { cornerRadius= 2, { [ 510, 170 ] } };
+ shape "LOGO" { cornerRadius= 2,
+ { [ 0, 8], [ 8, 16], [ 16, 8], [ 8, 0] }
+ };
+
+ shape "NORM" { { [ 18, 18] }, { [ 2, 1], [ 16, 17] } };
+ shape "BKSP" { { [ 38, 18] }, { [ 2, 1], [ 36, 17] } };
+ shape "TABK" { { [ 27, 18] }, { [ 2, 1], [ 25, 17] } };
+ shape "RTRN" {
+ { [ 0, 0], [ 29, 0], [ 29, 37], [ 5, 37], [ 5, 18], [ 0, 18] },
+ { [ 2, 1], [ 27, 1], [ 27, 36], [ 7, 36], [ 7, 17], [ 2, 17] }
+ };
+ shape "CAPS" { { [ 32, 18] }, { [ 2, 1], [ 30, 17 ] } };
+ shape "LFSH" { { [ 24, 18] }, { [ 2, 1], [ 22, 17 ] } };
+ shape "RTSH" { { [ 51, 18] }, { [ 2, 1], [ 49, 17 ] } };
+ shape "LCTL" { { [ 32, 18] }, { [ 2, 1], [ 30, 17 ] } };
+ shape "MODK" { { [ 28, 18] }, { [ 2, 1], [ 26, 17 ] } };
+ shape "SPCE" { { [157, 18] }, { [ 2, 1], [155, 17 ] } };
+ shape "KP0" { { [ 37, 18] }, { [ 2, 1], [ 35, 17 ] } };
+ shape "KPAD" { { [ 18, 37] }, { [ 2, 1], [ 16, 36 ] } };
+ shape "HELP" { { [ 37, 18] }, { [ 2, 1], [ 35, 17 ] } };
+
+ section "Function" {
+ key.color= "grey10";
+ priority= 1;
+ top= 24;
+ left= 14;
+ width= 481;
+ height= 19;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <HELP>, "HELP", 1 }, { <ESC>, "NORM", 9 },
+ { <FK01>, "NORM", 19 }, { <FK02>, "NORM", 1 },
+ { <FK03>, "NORM", 1 }, { <FK04>, "NORM", 1 },
+ { <FK05>, "NORM", 11 }, { <FK06>, "NORM", 1 },
+ { <FK07>, "NORM", 1 }, { <FK08>, "NORM", 1 },
+ { <FK09>, "NORM", 11 }, { <FK10>, "NORM", 1 },
+ { <FK11>, "NORM", 1 }, { <FK12>, "NORM", 1 },
+ { <PRSC>, "NORM", 9 }, { <SCLK>, "NORM", 1 },
+ { <PAUS>, "NORM", 1 }, { <MUTE>, "NORM", 11 },
+ { <VOL->, "NORM", 1 }, { <VOL+>, "NORM", 1 },
+ { <POWR>, "NORM", 1, color= "white" }
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ key.color= "white";
+ priority= 2;
+ top= 61;
+ left= 14;
+ width= 333;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <STOP>, "NORM", 1, color= "grey10" },
+ { <AGAI>, "NORM", 1, color= "grey10" },
+ { <TLDE>, "NORM", 9 }, { <AE01>, "NORM", 1 },
+ { <AE02>, "NORM", 1 }, { <AE03>, "NORM", 1 },
+ { <AE04>, "NORM", 1 }, { <AE05>, "NORM", 1 },
+ { <AE06>, "NORM", 1 }, { <AE07>, "NORM", 1 },
+ { <AE08>, "NORM", 1 }, { <AE09>, "NORM", 1 },
+ { <AE10>, "NORM", 1 }, { <AE11>, "NORM", 1 },
+ { <AE12>, "NORM", 1 },
+ { <BKSP>, "BKSP", 1, color="grey10" }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <PROP>, "NORM", 1, color= "grey10" },
+ { <UNDO>, "NORM", 1, color= "grey10" },
+ { <TAB>, "TABK", 9, color= "grey10" },
+ { <AD01>, "NORM", 1 },
+ { <AD02>, "NORM", 1 }, { <AD03>, "NORM", 1 },
+ { <AD04>, "NORM", 1 }, { <AD05>, "NORM", 1 },
+ { <AD06>, "NORM", 1 }, { <AD07>, "NORM", 1 },
+ { <AD08>, "NORM", 1 }, { <AD09>, "NORM", 1 },
+ { <AD10>, "NORM", 1 }, { <AD11>, "NORM", 1 },
+ { <AD12>, "NORM", 1 },
+ { <RTRN>, "RTRN", 1, color= "grey10" }
+ };
+ };
+ row {
+ top= 39;
+ left= 1;
+ keys {
+ { <FRNT>, "NORM", 1, color= "grey10" },
+ { <COPY>, "NORM", 1, color= "grey10" },
+ { <CAPS>, "CAPS", 9, color= "grey10" },
+ { <AC01>, "NORM", 1 },
+ { <AC02>, "NORM", 1 }, { <AC03>, "NORM", 1 },
+ { <AC04>, "NORM", 1 }, { <AC05>, "NORM", 1 },
+ { <AC06>, "NORM", 1 }, { <AC07>, "NORM", 1 },
+ { <AC08>, "NORM", 1 }, { <AC09>, "NORM", 1 },
+ { <AC10>, "NORM", 1 }, { <AC11>, "NORM", 1 },
+ { <AC12>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 1;
+ keys {
+ { <OPEN>, "NORM", 1, color= "grey10" },
+ { <PAST>, "NORM", 1, color= "grey10" },
+ { <LFSH>, "LFSH", 9, color= "grey10" },
+ { <AB00>, "NORM", 1 }, { <AB01>, "NORM", 1 },
+ { <AB02>, "NORM", 1 }, { <AB03>, "NORM", 1 },
+ { <AB04>, "NORM", 1 }, { <AB05>, "NORM", 1 },
+ { <AB06>, "NORM", 1 }, { <AB07>, "NORM", 1 },
+ { <AB08>, "NORM", 1 }, { <AB09>, "NORM", 1 },
+ { <AB10>, "NORM", 1 },
+ { <RTSH>, "RTSH", 1, color="grey10" }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ key.color= "grey10";
+ keys {
+ { <FIND>, "NORM", 1 }, { <CUT>, "NORM", 1 },
+ { <LCTL>, "LCTL", 9 }, { <LALT>, "NORM", 1 },
+ { <LMTA>, "NORM", 1 },
+ { <SPCE>, "SPCE", 1, color= "white" },
+ { <RMTA>, "NORM", 1 }, { <COMP>, "NORM", 1 },
+ { <ALGR>, "NORM", 1 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ key.color= "grey10";
+ priority= 3;
+ top= 61;
+ left= 352;
+ width= 58;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <INS>, "NORM", 1 }, { <HOME>, "NORM", 1 },
+ { <PGUP>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <DELE>, "NORM", 1 }, { <END>, "NORM", 1 },
+ { <PGDN>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys {
+ { <UP>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <LEFT>, "NORM", 1 }, { <DOWN>, "NORM", 1 },
+ { <RGHT>, "NORM", 1 }
+ };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ key.color= "white";
+ priority= 4;
+ top= 61;
+ left= 420;
+ width= 77;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ key.color= "grey10";
+ keys {
+ { <NMLK>, "NORM", 1 }, { <KPDV>, "NORM", 1 },
+ { <KPMU>, "NORM", 1 }, { <KPSU>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <KP7>, "NORM", 1 }, { <KP8>, "NORM", 1 },
+ { <KP9>, "NORM", 1 },
+ { <KPAD>, "KPAD", 1, color="grey10" }
+ };
+ };
+ row {
+ top= 39;
+ left= 1;
+ keys {
+ { <KP4>, "NORM", 1 }, { <KP5>, "NORM", 1 },
+ { <KP6>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 1;
+ keys {
+ { <KP1>, "NORM", 1 }, { <KP2>, "NORM", 1 },
+ { <KP3>, "NORM", 1 },
+ { <KPEN>, "KPAD", 1, color="grey10" }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <KP0>, "KP0", 1 }, { <KPDL>, "NORM", 1 }
+ };
+ };
+ }; // End of "Keypad" section
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ priority= 0;
+ shape= "EDGE";
+ };
+
+ solid "Logos" {
+ color= "blue";
+ top= 5;
+ left= 25;
+ priority= 0;
+ shape= "LOGO";
+ };
+
+ logo "SUNLogoImage" {
+ top= 5;
+ left= 25;
+ name= "SUN";
+ priority= 1;
+ shape= "LOGO";
+ };
+
+ shape "LED" { cornerRadius= 1,
+ { [ 0, 1.5], [ 1.5, 3], [ 3, 1.5], [ 1.5, 0] }
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.shape= "LED";
+ indicator "Caps Lock" { left= 75; top= 103; priority= 5; };
+ indicator "Compose" { left= 314; top= 142; priority= 5; };
+ indicator "Scroll Lock" { left= 378; top= 29; };
+ indicator "Num Lock" { left= 426; top= 66; };
+};
+
+xkb_geometry "type5c_se" {
+
+ // kbd: type = 4, layout = 43
+
+ description= "Sun Type5c keyboard (Sweden)";
+
+ width= 510;
+ height= 170;
+
+ baseColor= "grey";
+ labelColor= "black";
+
+ shape.cornerRadius= 1;
+
+ shape "EDGE" { cornerRadius= 2, { [ 510, 170 ] } };
+ shape "LOGO" { cornerRadius= 2,
+ { [ 0, 8], [ 8, 16], [ 16, 8], [ 8, 0] }
+ };
+
+ shape "NORM" { { [ 18, 18] }, { [ 2, 1], [ 16, 17] } };
+ shape "BKSP" { { [ 38, 18] }, { [ 2, 1], [ 36, 17] } };
+ shape "TABK" { { [ 27, 18] }, { [ 2, 1], [ 25, 17] } };
+ shape "META" { { [ 27, 18] }, { [ 2, 1], [ 25, 17] } };
+ shape "RTRN" {
+ { [ 0, 0], [ 29, 0], [ 29, 37], [ 5, 37], [ 5, 18], [ 0, 18] },
+ { [ 2, 1], [ 27, 1], [ 27, 36], [ 7, 36], [ 7, 17], [ 2, 17] }
+ };
+ shape "CAPS" { { [ 32, 18] }, { [ 2, 1], [ 30, 17 ] } };
+ shape "LFSH" { { [ 24, 18] }, { [ 2, 1], [ 22, 17 ] } };
+ shape "RTSH" { { [ 51, 18] }, { [ 2, 1], [ 49, 17 ] } };
+ shape "LCTL" { { [ 32, 18] }, { [ 2, 1], [ 30, 17 ] } };
+ shape "MODK" { { [ 28, 18] }, { [ 2, 1], [ 26, 17 ] } };
+ shape "SPCE" { { [139, 18] }, { [ 2, 1], [137, 17 ] } };
+ shape "KP0" { { [ 37, 18] }, { [ 2, 1], [ 35, 17 ] } };
+ shape "KPAD" { { [ 18, 37] }, { [ 2, 1], [ 16, 36 ] } };
+ shape "HELP" { { [ 37, 18] }, { [ 2, 1], [ 35, 17 ] } };
+
+ section "Function" {
+ key.color= "grey10";
+ priority= 1;
+ top= 24;
+ left= 14;
+ width= 481;
+ height= 19;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <HELP>, "HELP", 1 }, { <ESC>, "NORM", 9 },
+ { <FK01>, "NORM", 19 }, { <FK02>, "NORM", 1 },
+ { <FK03>, "NORM", 1 }, { <FK04>, "NORM", 1 },
+ { <FK05>, "NORM", 11 }, { <FK06>, "NORM", 1 },
+ { <FK07>, "NORM", 1 }, { <FK08>, "NORM", 1 },
+ { <FK09>, "NORM", 11 }, { <FK10>, "NORM", 1 },
+ { <FK11>, "NORM", 1 }, { <FK12>, "NORM", 1 },
+ { <PRSC>, "NORM", 9 }, { <SCLK>, "NORM", 1 },
+ { <PAUS>, "NORM", 1 }, { <MUTE>, "NORM", 11 },
+ { <VOL->, "NORM", 1 }, { <VOL+>, "NORM", 1 },
+ { <POWR>, "NORM", 1, color= "white" }
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ key.color= "white";
+ priority= 2;
+ top= 61;
+ left= 14;
+ width= 333;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <STOP>, "NORM", 1, color= "grey10" },
+ { <AGAI>, "NORM", 1, color= "grey10" },
+ { <TLDE>, "NORM", 9 }, { <AE01>, "NORM", 1 },
+ { <AE02>, "NORM", 1 }, { <AE03>, "NORM", 1 },
+ { <AE04>, "NORM", 1 }, { <AE05>, "NORM", 1 },
+ { <AE06>, "NORM", 1 }, { <AE07>, "NORM", 1 },
+ { <AE08>, "NORM", 1 }, { <AE09>, "NORM", 1 },
+ { <AE10>, "NORM", 1 }, { <AE11>, "NORM", 1 },
+ { <AE12>, "NORM", 1 },
+ { <BKSP>, "BKSP", 1, color="grey10" }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <PROP>, "NORM", 1, color= "grey10" },
+ { <UNDO>, "NORM", 1, color= "grey10" },
+ { <TAB>, "TABK", 9, color= "grey10" },
+ { <AD01>, "NORM", 1 },
+ { <AD02>, "NORM", 1 }, { <AD03>, "NORM", 1 },
+ { <AD04>, "NORM", 1 }, { <AD05>, "NORM", 1 },
+ { <AD06>, "NORM", 1 }, { <AD07>, "NORM", 1 },
+ { <AD08>, "NORM", 1 }, { <AD09>, "NORM", 1 },
+ { <AD10>, "NORM", 1 }, { <AD11>, "NORM", 1 },
+ { <AD12>, "NORM", 1 },
+ { <RTRN>, "RTRN", 1, color= "grey10" }
+ };
+ };
+ row {
+ top= 39;
+ left= 1;
+ keys {
+ { <FRNT>, "NORM", 1, color= "grey10" },
+ { <COPY>, "NORM", 1, color= "grey10" },
+ { <CAPS>, "CAPS", 9, color= "grey10" },
+ { <AC01>, "NORM", 1 },
+ { <AC02>, "NORM", 1 }, { <AC03>, "NORM", 1 },
+ { <AC04>, "NORM", 1 }, { <AC05>, "NORM", 1 },
+ { <AC06>, "NORM", 1 }, { <AC07>, "NORM", 1 },
+ { <AC08>, "NORM", 1 }, { <AC09>, "NORM", 1 },
+ { <AC10>, "NORM", 1 }, { <AC11>, "NORM", 1 },
+ { <AC12>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 1;
+ keys {
+ { <OPEN>, "NORM", 1, color= "grey10" },
+ { <PAST>, "NORM", 1, color= "grey10" },
+ { <LFSH>, "LFSH", 9, color= "grey10" },
+ { <AB00>, "NORM", 1 }, { <AB01>, "NORM", 1 },
+ { <AB02>, "NORM", 1 }, { <AB03>, "NORM", 1 },
+ { <AB04>, "NORM", 1 }, { <AB05>, "NORM", 1 },
+ { <AB06>, "NORM", 1 }, { <AB07>, "NORM", 1 },
+ { <AB08>, "NORM", 1 }, { <AB09>, "NORM", 1 },
+ { <AB10>, "NORM", 1 },
+ { <RTSH>, "RTSH", 1, color="grey10" }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ key.color= "grey10";
+ keys {
+ { <FIND>, "NORM", 1 }, { <CUT>, "NORM", 1 },
+ { <LCTL>, "LCTL", 9 }, { <LALT>, "NORM", 1 },
+ { <LMTA>, "META", 1 },
+ { <SPCE>, "SPCE", 1, color= "white" },
+ { <RMTA>, "META", 1 }, { <COMP>, "NORM", 1 },
+ { <ALGR>, "NORM", 1 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ key.color= "grey10";
+ priority= 3;
+ top= 61;
+ left= 352;
+ width= 58;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <INS>, "NORM", 1 }, { <HOME>, "NORM", 1 },
+ { <PGUP>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <DELE>, "NORM", 1 }, { <END>, "NORM", 1 },
+ { <PGDN>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys {
+ { <UP>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <LEFT>, "NORM", 1 }, { <DOWN>, "NORM", 1 },
+ { <RGHT>, "NORM", 1 }
+ };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ key.color= "white";
+ priority= 4;
+ top= 61;
+ left= 420;
+ width= 77;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ key.color= "grey10";
+ keys {
+ { <NMLK>, "NORM", 1 }, { <KPDV>, "NORM", 1 },
+ { <KPMU>, "NORM", 1 }, { <KPSU>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <KP7>, "NORM", 1 }, { <KP8>, "NORM", 1 },
+ { <KP9>, "NORM", 1 },
+ { <KPAD>, "KPAD", 1, color="grey10" }
+ };
+ };
+ row {
+ top= 39;
+ left= 1;
+ keys {
+ { <KP4>, "NORM", 1 }, { <KP5>, "NORM", 1 },
+ { <KP6>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 1;
+ keys {
+ { <KP1>, "NORM", 1 }, { <KP2>, "NORM", 1 },
+ { <KP3>, "NORM", 1 },
+ { <KPEN>, "KPAD", 1, color="grey10" }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <KP0>, "KP0", 1 }, { <KPDL>, "NORM", 1 }
+ };
+ };
+ }; // End of "Keypad" section
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ priority= 0;
+ shape= "EDGE";
+ };
+
+ solid "Logos" {
+ color= "blue";
+ top= 5;
+ left= 15;
+ priority= 0;
+ shape= "LOGO";
+ };
+
+ logo "SUNLogoImage" {
+ top= 5;
+ left= 15;
+ name= "SUN";
+ priority= 1;
+ shape= "LOGO";
+ };
+
+ text.font= "charter";
+ text.weight= "medium";
+ text.slant= "i";
+ text.fontSize= 40;
+ text "SunLogoText" {
+ top= 5;
+ left= 32;
+ color= "blue";
+ text= "Sun";
+ };
+
+ shape "LED" { cornerRadius= 1,
+ { [ 0, 1.5], [ 1.5, 3], [ 3, 1.5], [ 1.5, 0] }
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.shape= "LED";
+ indicator "Caps Lock" { left= 75; top= 103; priority= 5; };
+ indicator "Compose" { left= 314; top= 142; priority= 5; };
+ indicator "Scroll Lock" { left= 378; top= 29; };
+ indicator "Num Lock" { left= 426; top= 66; };
+};
+
+xkb_geometry "type4_se" {
+
+ // kbd: type = 4, layout = 11
+
+ description= "Sun Type4 keyboard (Sweden)";
+
+
+ width= 453;
+ height= 183;
+
+ baseColor= "grey";
+ labelColor= "black";
+
+ shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "DELE" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,19], [ 0,19] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,18], [ 1,18] }
+ };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 17;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+
+ section "Alpha" {
+ top= 58;
+ row {
+ top= 1;
+ key.color= "grey10";
+ keys { <STOP>, <AGAI>, { <FK01>, 9 },
+ <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>, <FK11>, <FK12>,
+ { <AF13>, color= "white"},
+ { <AF14>, color= "white"},
+ <DELE>, { <PAUS>, 9 },
+ <PRSC>, <SCLK>, <NMLK>
+ };
+ };
+ row {
+ top= 20;
+ key.color= "white";
+ keys {
+ { <PROP>, color= "grey10" },
+ { <UNDO>, color= "grey10" },
+ { <ESC>, 9, color= "grey10" },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
+ <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
+ <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color= "grey10" },
+ { <KPEQ>, 9, color= "grey10" },
+ { <KPDV>, color= "grey10" },
+ { <KPMU>, color= "grey10" },
+ { <KPSU>, color= "grey10" }
+ };
+ };
+ row {
+ top= 39;
+ key.color= "white";
+ keys {
+ { <FRNT>, color= "grey10" },
+ { <COPY>, color= "grey10" },
+ { <TAB>, 9, "TABK", color= "grey10" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN", color= "grey10" },
+ { <KP7>, 9, color= "grey10" },
+ { <KP8>, color= "grey10" },
+ { <KP9>, color= "grey10" },
+ { <KPAD>, "KPAD", color= "grey10" }
+ };
+ };
+ row {
+ top= 58;
+ key.color= "white";
+ keys {
+ { <OPEN>, color= "grey10" },
+ { <PAST>, color= "grey10" },
+ { <CAPS>, 9, "LCTL", color= "grey10" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <AC12>,
+ { <KP4>, 33, color= "grey10" },
+ { <KP5>, color= "grey10" },
+ { <KP6>, color= "grey10" }
+ };
+ };
+ row {
+ top= 77;
+ key.color= "white";
+ keys {
+ { <FIND>, color= "grey10" },
+ { <CUT>, color= "grey10" },
+ { <LFSH>, 9 , "LFSH", color= "grey10" },
+ <AB00>, <AB01>, <AB02>, <AB03>,
+ <AB04>, <AB05>, <AB06>, <AB07>,
+ <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color= "grey10" },
+ { <LNFD>, color= "grey10" },
+ { <KP1>, 9, color= "grey10" },
+ { <KP2>, color= "grey10" },
+ { <KP3>, color= "grey10" },
+ { <KPEN>, "KPAD", color= "grey10" }
+ };
+ };
+ row {
+ top= 96;
+ key.color= "grey10";
+ keys {
+ { <HELP>, "HELP" }, { <LCTL>, 9 },
+ <LALT>, <LMTA>,
+ { <SPCE>, "SPCE", color= "white" },
+ <RMTA>, <COMP>, <ALGR>,
+ { <KP0>, 9, "KP0" }, <KPDL>
+ };
+ };
+ }; // End of "Alpha" section
+
+ shape "RIDGE" { cornerRadius= 1, { [ 0, 1], [ 1, 0 ],
+ [330, 0], [331, 1],
+ [330, 2], [ 1, 2] } };
+ solid "Ridge" {
+ shape= "RIDGE";
+ top= 48;
+ left= 18;
+ };
+
+ shape "LEDS" { cornerRadius= 1, { [ 75 ,21 ] } };
+ shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
+ outline "LedPanel" {
+ shape= "LEDS";
+ top= 28;
+ left= 358;
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 43;
+ indicator.shape= "LED";
+ indicator "Caps Lock" { left= 364; };
+ indicator "Compose" { left= 383; };
+ indicator "Scroll Lock" { left= 402; };
+ indicator "Num Lock" { left= 421; };
+ text.top= 32;
+ text.color= "black";
+ text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
+ text "ComposeLabel" { left= 380; text="\nCompose"; };
+ text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; };
+ text "NumLockLabel" { left= 421; text="Num\nLock"; };
+};
+
+xkb_geometry "t6" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type6
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes.
+
+ width= 515;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [136,18] }, { [2,1], [134,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "RMTA" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "LMTA" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <ESC>, 9 },
+ { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 9 }, <SCLK>, <PAUS>,
+ { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
+ <LALT>, { <LMTA>, "LMTA" },
+ { <SPCE>, "SPCE" },
+ { <RMTA>, "RMTA" }, <COMP>, <ALGR>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 420;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
+ shape "LED" { cornerRadius= 2, { [ 3, 6 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 1;
+ left= 218;
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 10;
+ indicator.shape= "LED";
+ indicator "CapsLock" { left= 243; };
+ indicator "Compose" { left= 281; };
+ indicator "ScrollLock" { left= 262; };
+ indicator "NumLock" { left= 224; };
+ text.top= 1;
+ text.color= "black";
+ text "CapsLockLabel" { left= 243; text="Caps\nLock"; };
+ text "ComposeLabel" { left= 281; text="Compose"; };
+ text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; };
+ text "NumLockLabel" { left= 224; text="Num\nLock"; };
+
+
+};
+
+xkb_geometry "t6tuv" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type6
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes.
+
+ width= 515;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,18], [ 0,18] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,17], [ 1,17] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 24,18] }, { [2,1], [22,17] } };
+ shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [137,18] }, { [2,1], [135,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "RMTA" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "LMTA" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <ESC>, 9 },
+ { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 9 }, <SCLK>, <PAUS>,
+ { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
+ <LALT>, { <LMTA>, "LMTA" },
+ { <SPCE>, "SPCE" },
+ { <RMTA>, "RMTA" }, <COMP>, <ALGR>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 420;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
+ shape "LED" { cornerRadius= 2, { [ 3, 6 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 1;
+ left= 218;
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 10;
+ indicator.shape= "LED";
+ indicator "CapsLock" { left= 243; };
+ indicator "Compose" { left= 281; };
+ indicator "ScrollLock" { left= 262; };
+ indicator "NumLock" { left= 224; };
+ text.top= 1;
+ text.color= "black";
+ text "CapsLockLabel" { left= 243; text="Caps\nLock"; };
+ text "ComposeLabel" { left= 281; text="Compose"; };
+ text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; };
+ text "NumLockLabel" { left= 224; text="Num\nLock"; };
+
+};
+
+xkb_geometry "t6jp" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type6
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes.
+
+ width= 515;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "KANJ" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "EXEC" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,18], [ 0,18] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,17], [ 1,17] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [ 96,18] }, { [2,1], [94,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <ESC>, 9 },
+ { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 9 }, <SCLK>, <PAUS>,
+ { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <UNDR>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9 },
+ <LALT>, <LMTA>, { <EXEC>, "EXEC" },
+ { <SPCE>, "SPCE" }, { <KANJ>, "KANJ" }, <HENK>,
+ <RMTA>, <COMP>, <ALGR>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 420;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
+ shape "LED" { cornerRadius= 2, { [ 3, 6 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 1;
+ left= 218;
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 10;
+ indicator.shape= "LED";
+ indicator "CapsLock" { left= 243; };
+ indicator "Compose" { left= 281; };
+ indicator "ScrollLock" { left= 262; };
+ indicator "NumLock" { left= 224; };
+ text.top= 1;
+ text.color= "black";
+ text "CapsLockLabel" { left= 243; text="Caps\nLock"; };
+ text "ComposeLabel" { left= 281; text="Compose"; };
+ text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; };
+ text "NumLockLabel" { left= 224; text="Num\nLock"; };
+
+};
+
+xkb_geometry "t6unix" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type6
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes.
+
+ width= 515;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [136,18] }, { [2,1], [134,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "RMTA" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "LMTA" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <NONE>, 9 },
+ { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 9 }, <SCLK>, <PAUS>,
+ { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <ESC>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ <BKSL>, <TLDE>
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
+ <LALT>, {<LMTA>, "LMTA"},
+ { <SPCE>, "SPCE" },
+ {<RMTA>, "RMTA"}, <COMP>, <ALGR>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 420;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
+ shape "LED" { cornerRadius= 2, { [ 3, 6 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 1;
+ left= 218;
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 10;
+ indicator.shape= "LED";
+ indicator "CapsLock" { left= 243; };
+ indicator "Compose" { left= 281; };
+ indicator "ScrollLock" { left= 262; };
+ indicator "NumLock" { left= 224; };
+ text.top= 1;
+ text.color= "black";
+ text "CapsLockLabel" { left= 243; text="Caps\nLock"; };
+ text "ComposeLabel" { left= 281; text="Compose"; };
+ text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; };
+ text "NumLockLabel" { left= 224; text="Num\nLock"; };
+};
+
+xkb_geometry "type5" {
+ include "sun(t5)"
+ description= "Sun Type5 keyboard";
+};
+
+xkb_geometry "type5jp" {
+ include "sun(t5jp)"
+ description= "Sun Type5 Japanese keyboard";
+};
+
+xkb_geometry "type5tuv" {
+ include "sun(t5tuv)"
+ description= "Sun Type5 keyboard";
+};
+
+xkb_geometry "type5euro" {
+ include "sun(t5tuv)"
+ description= "Sun Type5 keyboard";
+};
+
+xkb_geometry "type5unix" {
+ include "sun(t5unix)"
+ description= "Sun Type5 Unix keyboard";
+};
+
+xkb_geometry "type5hobo" {
+ include "sun(t5hobo)"
+ description= "Sun Type5 Hobo keyboard";
+};
+
+xkb_geometry "type5tuvhobo" {
+ include "sun(t5tuvhobo)"
+ description= "Sun Type5 Hobo keyboard";
+};
+
+xkb_geometry "type5jphobo" {
+ include "sun(t5jphobo)"
+ description= "Sun Type5 Japanese Hobo keyboard";
+};
+
+default xkb_geometry "type6" {
+ include "sun(t6)"
+ description= "Sun Type6 keyboard (US, Korea, Taiwan)";
+};
+
+xkb_geometry "type6jp" {
+ include "sun(t6jp)"
+ description= "Sun Type6 Japanese keyboard";
+};
+
+xkb_geometry "type6tuv" {
+ include "sun(t6tuv)"
+ description= "Sun Type6 TUV keyboard";
+};
+
+xkb_geometry "type6unix" {
+ include "sun(t6unix)"
+ description= "Sun Type6 Unix keyboard";
+};
+
+xkb_geometry "x86" {
+ include "pc(pc101)"
+ description= "x86 Style Keyboard";
+};
+
+xkb_geometry "MS_x86" {
+ include "pc(pc104)"
+ description= "x86 104 Key Keyboard";
+};
+
+xkb_geometry "x86tuv" {
+ include "pc(pc102)"
+ description= "x86 European Style Keyboard";
+};
diff --git a/xorg-server/xkeyboard-config/geometry/thinkpad b/xorg-server/xkeyboard-config/geometry/thinkpad
index 031586662..fb1118040 100644
--- a/xorg-server/xkeyboard-config/geometry/thinkpad
+++ b/xorg-server/xkeyboard-config/geometry/thinkpad
@@ -1,471 +1,470 @@
-// -*- indent-tabs-mode: nil -*-
-// $XFree86: xc/programs/xkbcomp/geometry/ibm/thinkpad,v 1.3 2003/08/09 14:30:48 pascal Exp $
-
-// Created by Alexander Pohoyda <alexander.pohoyda@gmx.net>
-// Geometry specification for IBM ThinkPad keyboard.
-// Compatible Models: THINKPAD 560Z 2640-90U, THINKPAD 560Z 2640-91U,
-// THINKPAD 560Z 2640-B0U, THINKPAD 560Z 2640-B1U, THINKPAD 560Z 2640-RR3,
-// THINKPAD 600 2645-31U, THINKPAD 600 2645-35U, THINKPAD 600 2645-41U,
-// THINKPAD 600 2645-42U, THINKPAD 600 2645-45U, THINKPAD 600 2645-48U,
-// THINKPAD 600 2645-51U, THINKPAD 600 2645-85U, THINKPAD 600 2645-A1U,
-// THINKPAD 600 2645-RR1, THINKPAD 600 2645-RR2, THINKPAD 600E 2645-3AU,
-// THINKPAD 600E 2645-4AU, THINKPAD 600E 2645-4BU, THINKPAD 600E 2645-55U,
-// THINKPAD 600E 2645-5AU, THINKPAD 600E 2645-5BU, THINKPAD 600E 2645-5JU,
-// THINKPAD 600E 2645-8AO, THINKPAD 600E 2645-8AU, THINKPAD 600E 2645-8BU,
-// THINKPAD 600E 2645-AAU, THINKPAD 600E 2645-RRB, THINKPAD 600E 2645-RRD,
-// THINKPAD 600E 2645-RRF, THINKPAD 600E 2645-RRS, THINKPAD A22E 2645-45U
-
-xkb_geometry "common" {
- width = 290;
- height = 150;
- baseColor = "grey80";
- labelColor = "white";
-
- shape "FN0" { cornerRadius = 1, { [17, 12] }, { [2, 0], [15, 10] } };
- shape "NORM" { cornerRadius = 1, { [18, 18] }, { [2.5, 0], [15.5, 14] } };
- shape "BKSP" { cornerRadius = 1, { [37, 18] }, { [2.5, 0], [34.5, 14] } };
- shape "TABK" { cornerRadius = 1, { [27, 18] }, { [2.5, 0], [24.5, 14] } };
- shape "CAPS" { cornerRadius = 1, { [31, 18] }, { [1, 0], [30, 16] },
- { [1, 0], [26, 16] },
- { [2.5, 0], [24.5, 14] } };
- shape "RTSH" { cornerRadius = 1, { [50, 18] }, { [2.5, 0], [46.5, 14] } };
- shape "MODK" { cornerRadius = 1, { [27.5, 18] }, { [2.5, 0], [25, 14] } };
- shape "SPCE" { cornerRadius = 1, { [100, 18] }, { [2.5, 0], [97.5, 14] } };
- shape "ARRS" { cornerRadius = 1, { [16, 13] }, { [1.5, 0], [14.5, 11] } };
-
- shape "LED" { cornerRadius = 2, { [3, 3] } };
-
- shape "KEYS" { cornerRadius = 2,
- { [0, 0], [19, 0], [19, 13], [172, 13],
- [172, 0], [286, 0], [286, 138], [216, 138],
- [216, 124], [0, 124] } };
-
- solid "KeyPanel" {
- shape = "KEYS";
- left = 2;
- top = 5;
- color = "black";
- };
-
- shape "NULL1" { cornerRadius = 1,
- { [0, 0], [50, 0], [50, 18], [34, 18], [34, 4],
- [16, 4], [16, 18], [0, 18] } };
-
- solid "NullPanel1" {
- shape = "NULL1";
- left = 237;
- top = 110;
- color = "grey80";
- };
-
- shape "NULL2" { cornerRadius = 1, { [17, 13] } };
-
- solid "NullPanel2" {
- shape = "NULL2";
- left = 219;
- top = 129;
- color = "grey80";
- };
-
- shape "NULL3" { cornerRadius = 1,
- { [0, 26],
- [72, 26], [72, 13], [76, 13], [76, 26],
- [149, 26], [149, 13], [153, 13], [153, 26],
- [226, 26], [226, 0], [230, 0], [230, 26],
- [284, 26], [285, 27],
- [0, 27] } };
-
- solid "NullPanel3" {
- shape = "NULL3";
- left = 3;
- top = 6;
- color = "grey80";
- };
-
- indicator.onColor = "green";
- indicator.offColor = "grey10";
- indicator.top = 4;
- indicator.shape = "LED";
- indicator "HDDActivity" { onColor = "red"; left = 100; };
- indicator "Num Lock" { left = 108; };
- indicator "Caps Lock" { left = 114; };
- indicator "Scroll Lock" { left = 120; };
- indicator "Power" { left = 128; };
-
- key.gap = 1;
- key.color = "grey60";
-
- section "Function" {
- left = 2;
- top = 5;
- key.shape = "FN0";
- row {
- top = 1;
- keys { <ESC>, { <PRSC>, 155 }, <SCLK>, <PAUS> };
- };
- row {
- top = 14;
- keys { <FK01>, <FK02>, <FK03>, <FK04>,
- { <FK05>, 6 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 6 }, <FK10>, <FK11>, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Control" {
- left= 2;
- top = 109;
- key.shape = "MODK";
- row {
- top = 1;
- keys { { <FN>, "NORM" }, <LCTL>, <LALT>,
- { <SPCE>, "SPCE" }, <RALT>, <RCTL>
- };
- };
- }; // End of "Control" section
-
- section "Editing" {
- top = 5;
- left = 233;
- key.shape = "FN0";
- row {
- top = 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top = 14;
- keys { <DELE>, <END>, <PGDN> };
- };
- }; // End of "Editing" section
-
- section "Navigation" {
- top = 114;
- left = 236;
- key.shape = "ARRS";
- row {
- top = 1;
- left = 17;
- keys { <UP> };
- };
- row {
- top = 15;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Navigation" section
-
- shape "STIK" { cornerRadius = 4, { [7, 7] } };
-
- solid "STIK" {
- priority = 255;
- color = "red";
- shape = "STIK";
- top = 85;
- left = 126;
- };
-};
-
-// 85 keys
-// US/English (FRU 02K4785).
-xkb_geometry "us" {
- include "thinkpad(common)"
- description = "IBM ThinkPad 560Z/600/600E/A22E, US";
-
- shape "RTRN" { cornerRadius = 1, { [43, 18] }, { [2.5, 0], [40.5, 14] } };
- shape "LFSH" { cornerRadius = 1, { [43, 18] }, { [2.5, 0], [40.5, 14] } };
- shape "BKSL" { cornerRadius = 1, { [28, 18] }, { [2.5, 0], [25.5, 14] } };
-
- section "Alpha" {
- left = 2;
- top = 33;
- key.gap = 1;
- key.color = "grey60";
- key.shape = "NORM";
- row {
- top = 1;
- keys { <AE00>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
- };
- };
- row {
- top = 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" }
- };
- };
- row {
- top = 39;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN" }
- };
- };
- row {
- top = 58;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- }; // End of "Alpha" section
-};
-
-// 86 keys
-// Tested on: DE/German, UK/English (FRU 02K4787).
-xkb_geometry "intl" {
- include "thinkpad(common)"
- description = "IBM ThinkPad 560Z/600/600E/A22E, Intl";
-
- shape "RTRN" { cornerRadius = 1, { [28, 0], [28, 37], [4, 37], [4, 18],
- [0, 18], [0, 0] },
- { [25.5, 0], [25.5, 33], [6.5, 33],
- [6.5, 14], [2.5, 14], [2.5, 0] } };
- shape "LFSH" { cornerRadius = 1, { [24, 18] }, { [2.5, 0], [21.5, 14] } };
-
- section "Alpha" {
- left = 2;
- top = 33;
- key.gap = 1;
- key.color = "grey60";
- key.shape = "NORM";
- row {
- top = 1;
- keys { <AE00>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
- };
- };
- row {
- top = 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" }
- };
- };
- row {
- top = 39;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <AC12>
- };
- };
- row {
- top = 58;
- keys { { <LFSH>, "LFSH" }, <AB00>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- }; // End of "Alpha" section
-};
-
-xkb_geometry "60" {
- width = 290;
- height = 140;
- baseColor = "grey80";
- labelColor = "white";
-
- shape "NORM" { cornerRadius = 1, { [18, 18] }, { [2, 0], [16, 16] } };
-
- shape "ESC" { cornerRadius = 1, { [17, 13] }, { [1.5, 0], [15.5, 12] } };
- shape "FN0" { cornerRadius = 1, { [17, 11] }, { [1.5, 0], [15.5, 10] } };
-
- shape "BKSP" { cornerRadius = 1, { [37, 18] }, { [2, 0], [35, 16] } };
-
- shape "TABK" { cornerRadius = 1, { [27.5, 18] }, { [2, 0], [25.5, 16] } };
- shape "BKSL" { cornerRadius = 1, { [27.5, 18] }, { [2, 0], [25.5, 16] } };
-
- shape "CAPS" { cornerRadius = 1, { [30.5, 18] }, { [2, 0], [28.5, 16] } };
- shape "RTRN" { cornerRadius = 1, { [43.5, 18] }, { [2, 0], [41.5, 16] } };
-
- shape "LFSH" { cornerRadius = 1, { [40, 18] }, { [2, 0], [38, 16] } };
- shape "RTSH" { cornerRadius = 1, { [53, 18] }, { [2, 0], [51, 16] } };
-
- shape "LCTL" { cornerRadius = 1, { [21, 18] }, { [2, 0], [19, 16] } };
- shape "LWIN" { cornerRadius = 1, { [15, 18] }, { [1.5, 0], [13.5, 16] } };
-
- shape "SPCE" { cornerRadius = 1, { [97, 18] }, { [2, 0], [95, 16] } };
-
- shape "ARR1" { cornerRadius = 1, { [17, 13] }, { [1.5, 0], [15.5, 12] } };
- shape "ARR2" { cornerRadius = 1, { [17, 11] }, { [1.5, 0], [15.5, 10] } };
-
- shape "VOL" { cornerRadius = 2.5, { [5, 5] } };
- shape "TVTG" { cornerRadius = 0.5, { [0, 1], [17, 1], [17, 4], [0, 4] } };
-
- shape "KEYS" { cornerRadius = 2,
- { [0, 0], [19, 0], [19, 16], [172, 16],
- [172, 4], [286, 4], [286, 133], [231, 133],
- [231, 126], [0, 126] } };
-
- solid "KeyPanel" {
- shape = "KEYS";
- left = 2;
- top = 3;
- color = "black";
- };
-
- shape "NULL0" { cornerRadius = 0.5,
- { [0, 26],
- [72, 26], [72, 14], [76, 14], [76, 26],
- [149, 26], [149, 14], [153, 14], [153, 26],
- [226, 26], [226, 2], [230, 2], [230, 26],
- [284, 26], [284, 27],
- [0, 27] } };
-
- solid "NullPanel0" {
- shape = "NULL0";
- left = 3;
- top = 6;
- color = "grey80";
- };
-
- shape "NULL1" { cornerRadius = 0.5, { [0, 12], [17, 12], [17, 13], [0, 13] } };
-
- solid "NullPanel1" {
- shape = "NULL1";
- left = 3;
- top = 6;
- color = "grey80";
- };
-
- shape "MEDIA" { cornerRadius = 0.5, { [0, 0], [55, 0], [55, 10], [0, 10] } };
-
- solid "MediaPanel" {
- shape = "MEDIA";
- left = 25.5;
- top = 6;
- color = "black";
- };
-
- section "Volume" {
- left = 22;
- top = 8.5;
- key.shape = "VOL";
- key.gap = 6;
- key.color = "grey20";
-
- row {
- keys { <MUTE>, <VOL->, <VOL+>, {<I1F>, "TVTG", color = "blue"} };
- };
- };
-
- key.gap = 1;
- key.color = "grey60";
-
- section "Function" {
- left = 2;
- top = 3;
- key.shape = "FN0";
- row {
- key.shape = "ESC";
- top = 1;
- keys { <ESC> };
- };
- row {
- top = 5;
- keys { { <PRSC>, 173 }, <SCLK>, <PAUS> };
- };
- row {
- top = 17;
- keys { <FK01>, <FK02>, <FK03>, <FK04>,
- { <FK05>, 6 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 6 }, <FK10>, <FK11>, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Control" {
- left = 2;
- top = 109;
- key.shape = "NORM";
- row {
- top = 1;
- keys { <FN>, { <LCTL>, "LCTL" }, { <LWIN>, "LWIN" }, <LALT>,
- { <SPCE>, "SPCE" }, <RALT>, <MENU>, <RCTL>
- };
- };
- }; // End of "Control" section
-
- section "Editing" {
- top = 7;
- left = 233;
- key.shape = "FN0";
- row {
- top = 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top = 13;
- keys { <DELE>, <END>, <PGDN> };
- };
- }; // End of "Editing" section
-
- section "Navigation" {
- top = 109;
- left = 233;
- row {
- key.shape = "ARR1";
- top = 1;
- keys { <I6A>, <UP>, <I69> };
- };
- row {
- key.shape = "ARR2";
- top = 15;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Navigation" section
-
- shape "STIK" { cornerRadius = 3.5, { [7, 7] } };
-
- solid "STIK" {
- priority = 255;
- color = "red";
- shape = "STIK";
- top = 85.5;
- left = 125.5;
- };
-
- section "Alpha" {
- left = 2;
- top = 33;
- key.shape = "NORM";
- row {
- top = 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
- };
- };
- row {
- top = 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" }
- };
- };
- row {
- top = 39;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN", color = "blue" }
- };
- };
- row {
- top = 58;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- }; // End of "Alpha" section
-};
+// -*- indent-tabs-mode: nil -*-
+
+// Created by Alexander Pohoyda <alexander.pohoyda@gmx.net>
+// Geometry specification for IBM ThinkPad keyboard.
+// Compatible Models: THINKPAD 560Z 2640-90U, THINKPAD 560Z 2640-91U,
+// THINKPAD 560Z 2640-B0U, THINKPAD 560Z 2640-B1U, THINKPAD 560Z 2640-RR3,
+// THINKPAD 600 2645-31U, THINKPAD 600 2645-35U, THINKPAD 600 2645-41U,
+// THINKPAD 600 2645-42U, THINKPAD 600 2645-45U, THINKPAD 600 2645-48U,
+// THINKPAD 600 2645-51U, THINKPAD 600 2645-85U, THINKPAD 600 2645-A1U,
+// THINKPAD 600 2645-RR1, THINKPAD 600 2645-RR2, THINKPAD 600E 2645-3AU,
+// THINKPAD 600E 2645-4AU, THINKPAD 600E 2645-4BU, THINKPAD 600E 2645-55U,
+// THINKPAD 600E 2645-5AU, THINKPAD 600E 2645-5BU, THINKPAD 600E 2645-5JU,
+// THINKPAD 600E 2645-8AO, THINKPAD 600E 2645-8AU, THINKPAD 600E 2645-8BU,
+// THINKPAD 600E 2645-AAU, THINKPAD 600E 2645-RRB, THINKPAD 600E 2645-RRD,
+// THINKPAD 600E 2645-RRF, THINKPAD 600E 2645-RRS, THINKPAD A22E 2645-45U
+
+xkb_geometry "common" {
+ width = 290;
+ height = 150;
+ baseColor = "grey80";
+ labelColor = "white";
+
+ shape "FN0" { cornerRadius = 1, { [17, 12] }, { [2, 0], [15, 10] } };
+ shape "NORM" { cornerRadius = 1, { [18, 18] }, { [2.5, 0], [15.5, 14] } };
+ shape "BKSP" { cornerRadius = 1, { [37, 18] }, { [2.5, 0], [34.5, 14] } };
+ shape "TABK" { cornerRadius = 1, { [27, 18] }, { [2.5, 0], [24.5, 14] } };
+ shape "CAPS" { cornerRadius = 1, { [31, 18] }, { [1, 0], [30, 16] },
+ { [1, 0], [26, 16] },
+ { [2.5, 0], [24.5, 14] } };
+ shape "RTSH" { cornerRadius = 1, { [50, 18] }, { [2.5, 0], [46.5, 14] } };
+ shape "MODK" { cornerRadius = 1, { [27.5, 18] }, { [2.5, 0], [25, 14] } };
+ shape "SPCE" { cornerRadius = 1, { [100, 18] }, { [2.5, 0], [97.5, 14] } };
+ shape "ARRS" { cornerRadius = 1, { [16, 13] }, { [1.5, 0], [14.5, 11] } };
+
+ shape "LED" { cornerRadius = 2, { [3, 3] } };
+
+ shape "KEYS" { cornerRadius = 2,
+ { [0, 0], [19, 0], [19, 13], [172, 13],
+ [172, 0], [286, 0], [286, 138], [216, 138],
+ [216, 124], [0, 124] } };
+
+ solid "KeyPanel" {
+ shape = "KEYS";
+ left = 2;
+ top = 5;
+ color = "black";
+ };
+
+ shape "NULL1" { cornerRadius = 1,
+ { [0, 0], [50, 0], [50, 18], [34, 18], [34, 4],
+ [16, 4], [16, 18], [0, 18] } };
+
+ solid "NullPanel1" {
+ shape = "NULL1";
+ left = 237;
+ top = 110;
+ color = "grey80";
+ };
+
+ shape "NULL2" { cornerRadius = 1, { [17, 13] } };
+
+ solid "NullPanel2" {
+ shape = "NULL2";
+ left = 219;
+ top = 129;
+ color = "grey80";
+ };
+
+ shape "NULL3" { cornerRadius = 1,
+ { [0, 26],
+ [72, 26], [72, 13], [76, 13], [76, 26],
+ [149, 26], [149, 13], [153, 13], [153, 26],
+ [226, 26], [226, 0], [230, 0], [230, 26],
+ [284, 26], [285, 27],
+ [0, 27] } };
+
+ solid "NullPanel3" {
+ shape = "NULL3";
+ left = 3;
+ top = 6;
+ color = "grey80";
+ };
+
+ indicator.onColor = "green";
+ indicator.offColor = "grey10";
+ indicator.top = 4;
+ indicator.shape = "LED";
+ indicator "HDDActivity" { onColor = "red"; left = 100; };
+ indicator "Num Lock" { left = 108; };
+ indicator "Caps Lock" { left = 114; };
+ indicator "Scroll Lock" { left = 120; };
+ indicator "Power" { left = 128; };
+
+ key.gap = 1;
+ key.color = "grey60";
+
+ section "Function" {
+ left = 2;
+ top = 5;
+ key.shape = "FN0";
+ row {
+ top = 1;
+ keys { <ESC>, { <PRSC>, 155 }, <SCLK>, <PAUS> };
+ };
+ row {
+ top = 14;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 6 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 6 }, <FK10>, <FK11>, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Control" {
+ left= 2;
+ top = 109;
+ key.shape = "MODK";
+ row {
+ top = 1;
+ keys { { <FN>, "NORM" }, <LCTL>, <LALT>,
+ { <SPCE>, "SPCE" }, <RALT>, <RCTL>
+ };
+ };
+ }; // End of "Control" section
+
+ section "Editing" {
+ top = 5;
+ left = 233;
+ key.shape = "FN0";
+ row {
+ top = 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top = 14;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ }; // End of "Editing" section
+
+ section "Navigation" {
+ top = 114;
+ left = 236;
+ key.shape = "ARRS";
+ row {
+ top = 1;
+ left = 17;
+ keys { <UP> };
+ };
+ row {
+ top = 15;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Navigation" section
+
+ shape "STIK" { cornerRadius = 4, { [7, 7] } };
+
+ solid "STIK" {
+ priority = 255;
+ color = "red";
+ shape = "STIK";
+ top = 85;
+ left = 126;
+ };
+};
+
+// 85 keys
+// US/English (FRU 02K4785).
+xkb_geometry "us" {
+ include "thinkpad(common)"
+ description = "IBM ThinkPad 560Z/600/600E/A22E, US";
+
+ shape "RTRN" { cornerRadius = 1, { [43, 18] }, { [2.5, 0], [40.5, 14] } };
+ shape "LFSH" { cornerRadius = 1, { [43, 18] }, { [2.5, 0], [40.5, 14] } };
+ shape "BKSL" { cornerRadius = 1, { [28, 18] }, { [2.5, 0], [25.5, 14] } };
+
+ section "Alpha" {
+ left = 2;
+ top = 33;
+ key.gap = 1;
+ key.color = "grey60";
+ key.shape = "NORM";
+ row {
+ top = 1;
+ keys { <AE00>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top = 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top = 39;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top = 58;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ }; // End of "Alpha" section
+};
+
+// 86 keys
+// Tested on: DE/German, UK/English (FRU 02K4787).
+xkb_geometry "intl" {
+ include "thinkpad(common)"
+ description = "IBM ThinkPad 560Z/600/600E/A22E, Intl";
+
+ shape "RTRN" { cornerRadius = 1, { [28, 0], [28, 37], [4, 37], [4, 18],
+ [0, 18], [0, 0] },
+ { [25.5, 0], [25.5, 33], [6.5, 33],
+ [6.5, 14], [2.5, 14], [2.5, 0] } };
+ shape "LFSH" { cornerRadius = 1, { [24, 18] }, { [2.5, 0], [21.5, 14] } };
+
+ section "Alpha" {
+ left = 2;
+ top = 33;
+ key.gap = 1;
+ key.color = "grey60";
+ key.shape = "NORM";
+ row {
+ top = 1;
+ keys { <AE00>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top = 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top = 39;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <AC12>
+ };
+ };
+ row {
+ top = 58;
+ keys { { <LFSH>, "LFSH" }, <AB00>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ }; // End of "Alpha" section
+};
+
+xkb_geometry "60" {
+ width = 290;
+ height = 140;
+ baseColor = "grey80";
+ labelColor = "white";
+
+ shape "NORM" { cornerRadius = 1, { [18, 18] }, { [2, 0], [16, 16] } };
+
+ shape "ESC" { cornerRadius = 1, { [17, 13] }, { [1.5, 0], [15.5, 12] } };
+ shape "FN0" { cornerRadius = 1, { [17, 11] }, { [1.5, 0], [15.5, 10] } };
+
+ shape "BKSP" { cornerRadius = 1, { [37, 18] }, { [2, 0], [35, 16] } };
+
+ shape "TABK" { cornerRadius = 1, { [27.5, 18] }, { [2, 0], [25.5, 16] } };
+ shape "BKSL" { cornerRadius = 1, { [27.5, 18] }, { [2, 0], [25.5, 16] } };
+
+ shape "CAPS" { cornerRadius = 1, { [30.5, 18] }, { [2, 0], [28.5, 16] } };
+ shape "RTRN" { cornerRadius = 1, { [43.5, 18] }, { [2, 0], [41.5, 16] } };
+
+ shape "LFSH" { cornerRadius = 1, { [40, 18] }, { [2, 0], [38, 16] } };
+ shape "RTSH" { cornerRadius = 1, { [53, 18] }, { [2, 0], [51, 16] } };
+
+ shape "LCTL" { cornerRadius = 1, { [21, 18] }, { [2, 0], [19, 16] } };
+ shape "LWIN" { cornerRadius = 1, { [15, 18] }, { [1.5, 0], [13.5, 16] } };
+
+ shape "SPCE" { cornerRadius = 1, { [97, 18] }, { [2, 0], [95, 16] } };
+
+ shape "ARR1" { cornerRadius = 1, { [17, 13] }, { [1.5, 0], [15.5, 12] } };
+ shape "ARR2" { cornerRadius = 1, { [17, 11] }, { [1.5, 0], [15.5, 10] } };
+
+ shape "VOL" { cornerRadius = 2.5, { [5, 5] } };
+ shape "TVTG" { cornerRadius = 0.5, { [0, 1], [17, 1], [17, 4], [0, 4] } };
+
+ shape "KEYS" { cornerRadius = 2,
+ { [0, 0], [19, 0], [19, 16], [172, 16],
+ [172, 4], [286, 4], [286, 133], [231, 133],
+ [231, 126], [0, 126] } };
+
+ solid "KeyPanel" {
+ shape = "KEYS";
+ left = 2;
+ top = 3;
+ color = "black";
+ };
+
+ shape "NULL0" { cornerRadius = 0.5,
+ { [0, 26],
+ [72, 26], [72, 14], [76, 14], [76, 26],
+ [149, 26], [149, 14], [153, 14], [153, 26],
+ [226, 26], [226, 2], [230, 2], [230, 26],
+ [284, 26], [284, 27],
+ [0, 27] } };
+
+ solid "NullPanel0" {
+ shape = "NULL0";
+ left = 3;
+ top = 6;
+ color = "grey80";
+ };
+
+ shape "NULL1" { cornerRadius = 0.5, { [0, 12], [17, 12], [17, 13], [0, 13] } };
+
+ solid "NullPanel1" {
+ shape = "NULL1";
+ left = 3;
+ top = 6;
+ color = "grey80";
+ };
+
+ shape "MEDIA" { cornerRadius = 0.5, { [0, 0], [55, 0], [55, 10], [0, 10] } };
+
+ solid "MediaPanel" {
+ shape = "MEDIA";
+ left = 25.5;
+ top = 6;
+ color = "black";
+ };
+
+ section "Volume" {
+ left = 22;
+ top = 8.5;
+ key.shape = "VOL";
+ key.gap = 6;
+ key.color = "grey20";
+
+ row {
+ keys { <MUTE>, <VOL->, <VOL+>, {<I1F>, "TVTG", color = "blue"} };
+ };
+ };
+
+ key.gap = 1;
+ key.color = "grey60";
+
+ section "Function" {
+ left = 2;
+ top = 3;
+ key.shape = "FN0";
+ row {
+ key.shape = "ESC";
+ top = 1;
+ keys { <ESC> };
+ };
+ row {
+ top = 5;
+ keys { { <PRSC>, 173 }, <SCLK>, <PAUS> };
+ };
+ row {
+ top = 17;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 6 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 6 }, <FK10>, <FK11>, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Control" {
+ left = 2;
+ top = 109;
+ key.shape = "NORM";
+ row {
+ top = 1;
+ keys { <FN>, { <LCTL>, "LCTL" }, { <LWIN>, "LWIN" }, <LALT>,
+ { <SPCE>, "SPCE" }, <RALT>, <MENU>, <RCTL>
+ };
+ };
+ }; // End of "Control" section
+
+ section "Editing" {
+ top = 7;
+ left = 233;
+ key.shape = "FN0";
+ row {
+ top = 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top = 13;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ }; // End of "Editing" section
+
+ section "Navigation" {
+ top = 109;
+ left = 233;
+ row {
+ key.shape = "ARR1";
+ top = 1;
+ keys { <I6A>, <UP>, <I69> };
+ };
+ row {
+ key.shape = "ARR2";
+ top = 15;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Navigation" section
+
+ shape "STIK" { cornerRadius = 3.5, { [7, 7] } };
+
+ solid "STIK" {
+ priority = 255;
+ color = "red";
+ shape = "STIK";
+ top = 85.5;
+ left = 125.5;
+ };
+
+ section "Alpha" {
+ left = 2;
+ top = 33;
+ key.shape = "NORM";
+ row {
+ top = 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top = 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top = 39;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN", color = "blue" }
+ };
+ };
+ row {
+ top = 58;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ }; // End of "Alpha" section
+};
diff --git a/xorg-server/xkeyboard-config/geometry/winbook b/xorg-server/xkeyboard-config/geometry/winbook
index e4de47861..570deb358 100644
--- a/xorg-server/xkeyboard-config/geometry/winbook
+++ b/xorg-server/xkeyboard-config/geometry/winbook
@@ -1,144 +1,143 @@
-// $Xorg: winbook,v 1.3 2000/08/17 19:54:36 cpqbld Exp $
-default xkb_geometry "XP5" {
-
- description= "WinBook XP5";
- width= 281;
- height= 180;
-
- shape.cornerRadius= 1;
-
- shape "NORM" {
- { [17,17] },
- { [ 2, 1], [ 15, 15 ] }
- };
- shape "FKEY" {
- { [ 15, 10 ] },
- { [ 1, 0 ], [ 14, 9.5 ] }
- };
- shape "ONE" {
- { [ 28, 17 ] },
- { [ 11, 0 ], [ 28, 17 ] },
- { [ 13, 1 ], [ 26, 15 ] }
- };
- shape "WIDE" { // backspace, caps lock, ctrl alt ?
- { [ 24.5, 17 ] },
- { [ 2, 1 ], [ 22.5, 15 ] }
- };
- shape "WIDR" { // backslash, left shift
- { [ 35, 17 ] },
- { [ 2, 1 ], [ 33, 15 ] }
- };
- shape "RTRN" {
- { [ 45, 17 ] },
- { [ 2, 1 ], [ 43, 15 ] }
- };
- shape "SPCE" {
- { [ 90, 17 ] },
- { [ 2, 1 ], [ 88, 15 ] }
- };
- shape "STIK" {
- cornerRadius= 4,
- { [ 8, 8 ] }
- };
- shape "BTN" {
- { [ 31, 6 ] }
- };
-
- section.left= 2;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 0.5;
-
- key.color= "grey10";
- labelColor= "white";
- baseColor= "grey20";
-
- section "Whole" {
- top= 10;
- row {
- top= 11;
- key.shape= "FKEY";
- keys {
- <ESC>,
- <FK01>, <FK02>, <FK03>, <FK04>, <FK05>, <FK06>,
- <FK07>, <FK08>, <FK09>, <FK10>, <FK11>, <FK12>,
- <PAUS>, <HOME>, <END>, <PGUP>
- };
- };
- row {
- top= 22;
- keys {
- { <AEO1>, "ONE" },
- <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, shape="WIDE" },
- <PGDN>
- };
- };
- row {
- top= 40;
- keys {
- <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <BKSL>, "WIDR" }
- };
- };
- row {
- top= 58;
- keys { { <CAPS>, shape="WIDE" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, shape="RTRN" }
- };
- };
- row {
- top= 76;
- keys {
- { <LFSH>, shape="WIDR" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- <RTSH>, <UP>, <NMLK>
- };
- };
- row {
- top= 94;
- keys {
- { <LCTL>, "WIDE" }, <FUNC>, { <LALT>, "WIDE" },
- <TLDE>, { <SPCE>, shape="SPCE" }, <INS>, <DELE>,
- <LEFT>, <DOWN>, <RGHT>
- };
- };
- overlay "KPAD" {
- <AE07>=<KP7>, <AE08>=<KP8>, <AE09>=<KP9>, <AE10>=<KPMU>,
- <AD07>=<KP4>, <AD08>=<KP5>, <AD09>=<KP6>, <AD10>=<KPSU>,
- <AC07>=<KP1>, <AC08>=<KP2>, <AC09>=<KP3>, <AC10>=<KPAD>,
- <AB07>=<KP0>, <AB09>=<KPDL>, <AB10>=<KPSL>
- };
- }; // End of "Whole" section
-
- solid "STIK" {
- color= "red";
- shape= "STIK";
- top= 81;
- left= 112;
- };
-
- solid "BTN1" {
- color= "red";
- shape= "BTN";
- top= 137;
- left= 93;
- };
-
- solid "BTN2" {
- color= "red";
- shape= "BTN";
- top= 137;
- left= 127;
- };
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-};
+default xkb_geometry "XP5" {
+
+ description= "WinBook XP5";
+ width= 281;
+ height= 180;
+
+ shape.cornerRadius= 1;
+
+ shape "NORM" {
+ { [17,17] },
+ { [ 2, 1], [ 15, 15 ] }
+ };
+ shape "FKEY" {
+ { [ 15, 10 ] },
+ { [ 1, 0 ], [ 14, 9.5 ] }
+ };
+ shape "ONE" {
+ { [ 28, 17 ] },
+ { [ 11, 0 ], [ 28, 17 ] },
+ { [ 13, 1 ], [ 26, 15 ] }
+ };
+ shape "WIDE" { // backspace, caps lock, ctrl alt ?
+ { [ 24.5, 17 ] },
+ { [ 2, 1 ], [ 22.5, 15 ] }
+ };
+ shape "WIDR" { // backslash, left shift
+ { [ 35, 17 ] },
+ { [ 2, 1 ], [ 33, 15 ] }
+ };
+ shape "RTRN" {
+ { [ 45, 17 ] },
+ { [ 2, 1 ], [ 43, 15 ] }
+ };
+ shape "SPCE" {
+ { [ 90, 17 ] },
+ { [ 2, 1 ], [ 88, 15 ] }
+ };
+ shape "STIK" {
+ cornerRadius= 4,
+ { [ 8, 8 ] }
+ };
+ shape "BTN" {
+ { [ 31, 6 ] }
+ };
+
+ section.left= 2;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 0.5;
+
+ key.color= "grey10";
+ labelColor= "white";
+ baseColor= "grey20";
+
+ section "Whole" {
+ top= 10;
+ row {
+ top= 11;
+ key.shape= "FKEY";
+ keys {
+ <ESC>,
+ <FK01>, <FK02>, <FK03>, <FK04>, <FK05>, <FK06>,
+ <FK07>, <FK08>, <FK09>, <FK10>, <FK11>, <FK12>,
+ <PAUS>, <HOME>, <END>, <PGUP>
+ };
+ };
+ row {
+ top= 22;
+ keys {
+ { <AEO1>, "ONE" },
+ <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, shape="WIDE" },
+ <PGDN>
+ };
+ };
+ row {
+ top= 40;
+ keys {
+ <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <BKSL>, "WIDR" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <CAPS>, shape="WIDE" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, shape="RTRN" }
+ };
+ };
+ row {
+ top= 76;
+ keys {
+ { <LFSH>, shape="WIDR" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ <RTSH>, <UP>, <NMLK>
+ };
+ };
+ row {
+ top= 94;
+ keys {
+ { <LCTL>, "WIDE" }, <FUNC>, { <LALT>, "WIDE" },
+ <TLDE>, { <SPCE>, shape="SPCE" }, <INS>, <DELE>,
+ <LEFT>, <DOWN>, <RGHT>
+ };
+ };
+ overlay "KPAD" {
+ <AE07>=<KP7>, <AE08>=<KP8>, <AE09>=<KP9>, <AE10>=<KPMU>,
+ <AD07>=<KP4>, <AD08>=<KP5>, <AD09>=<KP6>, <AD10>=<KPSU>,
+ <AC07>=<KP1>, <AC08>=<KP2>, <AC09>=<KP3>, <AC10>=<KPAD>,
+ <AB07>=<KP0>, <AB09>=<KPDL>, <AB10>=<KPSL>
+ };
+ }; // End of "Whole" section
+
+ solid "STIK" {
+ color= "red";
+ shape= "STIK";
+ top= 81;
+ left= 112;
+ };
+
+ solid "BTN1" {
+ color= "red";
+ shape= "BTN";
+ top= 137;
+ left= 93;
+ };
+
+ solid "BTN2" {
+ color= "red";
+ shape= "BTN";
+ top= 137;
+ left= 127;
+ };
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/amiga b/xorg-server/xkeyboard-config/keycodes/amiga
index 7d2576701..f374ea658 100644
--- a/xorg-server/xkeyboard-config/keycodes/amiga
+++ b/xorg-server/xkeyboard-config/keycodes/amiga
@@ -1,231 +1,225 @@
-// $Xorg: amiga,v 1.3 2000/08/17 19:54:37 cpqbld Exp $
-
-
-
-// $XFree86: xc/programs/xkbcomp/keycodes/amiga,v 3.2 1997/10/26 13:25:35 dawes Exp $
-
-default xkb_keycodes "usa1" {
-
- minimum= 8;
- maximum= 255;
-
- <ESC> = 77;
- <FK01> = 88;
- <FK02> = 89;
- <FK03> = 90;
- <FK04> = 91;
- <FK05> = 92;
- <FK06> = 93;
- <FK07> = 94;
- <FK08> = 95;
- <FK09> = 96;
- <FK10> = 97;
-
- <TLDE> = 8;
- <AE01> = 9;
- <AE02> = 10;
- <AE03> = 11;
- <AE04> = 12;
- <AE05> = 13;
- <AE06> = 14;
- <AE07> = 15;
- <AE08> = 16;
- <AE09> = 17;
- <AE10> = 18;
- <AE11> = 19;
- <AE12> = 20;
- <BKSL> = 21;
- <BKSP> = 73;
-
- <TAB> = 74;
- <AD01> = 24;
- <AD02> = 25;
- <AD03> = 26;
- <AD04> = 27;
- <AD05> = 28;
- <AD06> = 29;
- <AD07> = 30;
- <AD08> = 31;
- <AD09> = 32;
- <AD10> = 33;
- <AD11> = 34;
- <AD12> = 35;
- <RTRN> = 76;
-
- <LCTL> = 107;
- <CAPS> = 106;
- <AC01> = 40;
- <AC02> = 41;
- <AC03> = 42;
- <AC04> = 43;
- <AC05> = 44;
- <AC06> = 45;
- <AC07> = 46;
- <AC08> = 47;
- <AC09> = 48;
- <AC10> = 49;
- <AC11> = 50;
-
- <LFSH> = 104;
- <AB01> = 57;
- <AB02> = 58;
- <AB03> = 59;
- <AB04> = 60;
- <AB05> = 61;
- <AB06> = 62;
- <AB07> = 63;
- <AB08> = 64;
- <AB09> = 65;
- <AB10> = 66;
- <RTSH> = 105;
-
- <LALT> = 108;
- <LAMI> = 110;
- <SPCE> = 72;
- <RAMI> = 111;
- <RALT> = 109;
-
- <DELE> = 78;
- <HELP> = 103;
- <UP> = 84;
- <LEFT> = 87;
- <DOWN> = 85;
- <RGHT> = 86;
-
- <KPLP> = 98;
- <KPRP> = 99;
- <KPDV> = 100;
- <KPMU> = 101;
-
- <KP7> = 69;
- <KP8> = 70;
- <KP9> = 71;
- <KPSU> = 82;
-
- <KP4> = 53;
- <KP5> = 54;
- <KP6> = 55;
- <KPAD> = 102;
-
- <KP1> = 37;
- <KP2> = 38;
- <KP3> = 39;
-
- <KP0> = 23;
- <KPDC> = 68;
- <KPEN> = 75;
-};
-
-xkb_keycodes "de" {
-
- minimum= 8;
- maximum= 255;
-
- <ESC> = 77;
- <FK01> = 88;
- <FK02> = 89;
- <FK03> = 90;
- <FK04> = 91;
- <FK05> = 92;
- <FK06> = 93;
- <FK07> = 94;
- <FK08> = 95;
- <FK09> = 96;
- <FK10> = 97;
-
- <TLDE> = 8;
- <AE01> = 9;
- <AE02> = 10;
- <AE03> = 11;
- <AE04> = 12;
- <AE05> = 13;
- <AE06> = 14;
- <AE07> = 15;
- <AE08> = 16;
- <AE09> = 17;
- <AE10> = 18;
- <AE11> = 19;
- <AE12> = 20;
- <BKSL> = 21;
- <BKSP> = 73;
-
- <TAB> = 74;
- <AD01> = 24;
- <AD02> = 25;
- <AD03> = 26;
- <AD04> = 27;
- <AD05> = 28;
- <AD06> = 29;
- <AD07> = 30;
- <AD08> = 31;
- <AD09> = 32;
- <AD10> = 33;
- <AD11> = 34;
- <AD12> = 35;
- <RTRN> = 76;
-
- <LCTL> = 107;
- <CAPS> = 106;
- <AC01> = 40;
- <AC02> = 41;
- <AC03> = 42;
- <AC04> = 43;
- <AC05> = 44;
- <AC06> = 45;
- <AC07> = 46;
- <AC08> = 47;
- <AC09> = 48;
- <AC10> = 49;
- <AC11> = 50;
- <AC12> = 51;
-
- <LFSH> = 104;
- <LSGT> = 56;
- <AB01> = 57;
- <AB02> = 58;
- <AB03> = 59;
- <AB04> = 60;
- <AB05> = 61;
- <AB06> = 62;
- <AB07> = 63;
- <AB08> = 64;
- <AB09> = 65;
- <AB10> = 66;
- <RTSH> = 105;
-
- <LALT> = 108;
- <LAMI> = 110;
- <SPCE> = 72;
- <RAMI> = 111;
- <RALT> = 109;
-
- <DELE> = 78;
- <HELP> = 103;
- <UP> = 84;
- <LEFT> = 87;
- <DOWN> = 85;
- <RGHT> = 86;
-
- <KPLP> = 98;
- <KPRP> = 99;
- <KPDV> = 100;
- <KPMU> = 101;
-
- <KP7> = 69;
- <KP8> = 70;
- <KP9> = 71;
- <KPSU> = 82;
-
- <KP4> = 53;
- <KP5> = 54;
- <KP6> = 55;
- <KPAD> = 102;
-
- <KP1> = 37;
- <KP2> = 38;
- <KP3> = 39;
-
- <KP0> = 23;
- <KPDC> = 68;
- <KPEN> = 75;
-};
+default xkb_keycodes "usa1" {
+
+ minimum= 8;
+ maximum= 255;
+
+ <ESC> = 77;
+ <FK01> = 88;
+ <FK02> = 89;
+ <FK03> = 90;
+ <FK04> = 91;
+ <FK05> = 92;
+ <FK06> = 93;
+ <FK07> = 94;
+ <FK08> = 95;
+ <FK09> = 96;
+ <FK10> = 97;
+
+ <TLDE> = 8;
+ <AE01> = 9;
+ <AE02> = 10;
+ <AE03> = 11;
+ <AE04> = 12;
+ <AE05> = 13;
+ <AE06> = 14;
+ <AE07> = 15;
+ <AE08> = 16;
+ <AE09> = 17;
+ <AE10> = 18;
+ <AE11> = 19;
+ <AE12> = 20;
+ <BKSL> = 21;
+ <BKSP> = 73;
+
+ <TAB> = 74;
+ <AD01> = 24;
+ <AD02> = 25;
+ <AD03> = 26;
+ <AD04> = 27;
+ <AD05> = 28;
+ <AD06> = 29;
+ <AD07> = 30;
+ <AD08> = 31;
+ <AD09> = 32;
+ <AD10> = 33;
+ <AD11> = 34;
+ <AD12> = 35;
+ <RTRN> = 76;
+
+ <LCTL> = 107;
+ <CAPS> = 106;
+ <AC01> = 40;
+ <AC02> = 41;
+ <AC03> = 42;
+ <AC04> = 43;
+ <AC05> = 44;
+ <AC06> = 45;
+ <AC07> = 46;
+ <AC08> = 47;
+ <AC09> = 48;
+ <AC10> = 49;
+ <AC11> = 50;
+
+ <LFSH> = 104;
+ <AB01> = 57;
+ <AB02> = 58;
+ <AB03> = 59;
+ <AB04> = 60;
+ <AB05> = 61;
+ <AB06> = 62;
+ <AB07> = 63;
+ <AB08> = 64;
+ <AB09> = 65;
+ <AB10> = 66;
+ <RTSH> = 105;
+
+ <LALT> = 108;
+ <LAMI> = 110;
+ <SPCE> = 72;
+ <RAMI> = 111;
+ <RALT> = 109;
+
+ <DELE> = 78;
+ <HELP> = 103;
+ <UP> = 84;
+ <LEFT> = 87;
+ <DOWN> = 85;
+ <RGHT> = 86;
+
+ <KPLP> = 98;
+ <KPRP> = 99;
+ <KPDV> = 100;
+ <KPMU> = 101;
+
+ <KP7> = 69;
+ <KP8> = 70;
+ <KP9> = 71;
+ <KPSU> = 82;
+
+ <KP4> = 53;
+ <KP5> = 54;
+ <KP6> = 55;
+ <KPAD> = 102;
+
+ <KP1> = 37;
+ <KP2> = 38;
+ <KP3> = 39;
+
+ <KP0> = 23;
+ <KPDC> = 68;
+ <KPEN> = 75;
+};
+
+xkb_keycodes "de" {
+
+ minimum= 8;
+ maximum= 255;
+
+ <ESC> = 77;
+ <FK01> = 88;
+ <FK02> = 89;
+ <FK03> = 90;
+ <FK04> = 91;
+ <FK05> = 92;
+ <FK06> = 93;
+ <FK07> = 94;
+ <FK08> = 95;
+ <FK09> = 96;
+ <FK10> = 97;
+
+ <TLDE> = 8;
+ <AE01> = 9;
+ <AE02> = 10;
+ <AE03> = 11;
+ <AE04> = 12;
+ <AE05> = 13;
+ <AE06> = 14;
+ <AE07> = 15;
+ <AE08> = 16;
+ <AE09> = 17;
+ <AE10> = 18;
+ <AE11> = 19;
+ <AE12> = 20;
+ <BKSL> = 21;
+ <BKSP> = 73;
+
+ <TAB> = 74;
+ <AD01> = 24;
+ <AD02> = 25;
+ <AD03> = 26;
+ <AD04> = 27;
+ <AD05> = 28;
+ <AD06> = 29;
+ <AD07> = 30;
+ <AD08> = 31;
+ <AD09> = 32;
+ <AD10> = 33;
+ <AD11> = 34;
+ <AD12> = 35;
+ <RTRN> = 76;
+
+ <LCTL> = 107;
+ <CAPS> = 106;
+ <AC01> = 40;
+ <AC02> = 41;
+ <AC03> = 42;
+ <AC04> = 43;
+ <AC05> = 44;
+ <AC06> = 45;
+ <AC07> = 46;
+ <AC08> = 47;
+ <AC09> = 48;
+ <AC10> = 49;
+ <AC11> = 50;
+ <AC12> = 51;
+
+ <LFSH> = 104;
+ <LSGT> = 56;
+ <AB01> = 57;
+ <AB02> = 58;
+ <AB03> = 59;
+ <AB04> = 60;
+ <AB05> = 61;
+ <AB06> = 62;
+ <AB07> = 63;
+ <AB08> = 64;
+ <AB09> = 65;
+ <AB10> = 66;
+ <RTSH> = 105;
+
+ <LALT> = 108;
+ <LAMI> = 110;
+ <SPCE> = 72;
+ <RAMI> = 111;
+ <RALT> = 109;
+
+ <DELE> = 78;
+ <HELP> = 103;
+ <UP> = 84;
+ <LEFT> = 87;
+ <DOWN> = 85;
+ <RGHT> = 86;
+
+ <KPLP> = 98;
+ <KPRP> = 99;
+ <KPDV> = 100;
+ <KPMU> = 101;
+
+ <KP7> = 69;
+ <KP8> = 70;
+ <KP9> = 71;
+ <KPSU> = 82;
+
+ <KP4> = 53;
+ <KP5> = 54;
+ <KP6> = 55;
+ <KPAD> = 102;
+
+ <KP1> = 37;
+ <KP2> = 38;
+ <KP3> = 39;
+
+ <KP0> = 23;
+ <KPDC> = 68;
+ <KPEN> = 75;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/ataritt b/xorg-server/xkeyboard-config/keycodes/ataritt
index 7eae09f49..c6d31d3ae 100644
--- a/xorg-server/xkeyboard-config/keycodes/ataritt
+++ b/xorg-server/xkeyboard-config/keycodes/ataritt
@@ -1,123 +1,117 @@
-// $Xorg: ataritt,v 1.3 2000/08/17 19:54:37 cpqbld Exp $
-
-
-
-// $XFree86: xc/programs/xkbcomp/keycodes/ataritt,v 3.1 1997/10/26 13:25:35 dawes Exp $
-
-default xkb_keycodes "us" {
-
- minimum= 8;
- maximum= 255;
-
- <ESC> = 9;
- <AE01> = 10;
- <AE02> = 11;
- <AE03> = 12;
- <AE04> = 13;
- <AE05> = 14;
- <AE06> = 15;
- <AE07> = 16;
- <AE08> = 17;
- <AE09> = 18;
- <AE10> = 19;
- <AE11> = 20;
- <AE12> = 21;
- <TLDE> = 49;
- <BKSP> = 22;
-
- <TAB> = 23;
- <AD01> = 24;
- <AD02> = 25;
- <AD03> = 26;
- <AD04> = 27;
- <AD05> = 28;
- <AD06> = 29;
- <AD07> = 30;
- <AD08> = 31;
- <AD09> = 32;
- <AD10> = 33;
- <AD11> = 34;
- <AD12> = 35;
- <RTRN> = 36;
- <DELE> = 91;
-
- <LCTL> = 37;
- <AC01> = 38;
- <AC02> = 39;
- <AC03> = 40;
- <AC04> = 41;
- <AC05> = 42;
- <AC06> = 43;
- <AC07> = 44;
- <AC08> = 45;
- <AC09> = 46;
- <AC10> = 47;
- <AC11> = 48;
- <BKSL> = 51;
-
- <LFSH> = 50;
- <AB01> = 52;
- <AB02> = 53;
- <AB03> = 54;
- <AB04> = 55;
- <AB05> = 56;
- <AB06> = 57;
- <AB07> = 58;
- <AB08> = 59;
- <AB09> = 60;
- <AB10> = 61;
- <RTSH> = 62;
-
- <ALT> = 64;
- <SPCE> = 65;
- <CAPS> = 66;
-
- <FK01> = 67;
- <FK02> = 68;
- <FK03> = 69;
- <FK04> = 70;
- <FK05> = 71;
- <FK06> = 72;
- <FK07> = 73;
- <FK08> = 74;
- <FK09> = 75;
- <FK10> = 76;
-
- <HELP> = 106;
- <UNDO> = 105;
- <INS> = 90;
- <HOME> = 79;
- <UP> = 80;
- <LEFT> = 83;
- <DOWN> = 88;
- <RGHT> = 85;
-
- <KPLP> = 107;
- <KPRP> = 108;
- <KPDV> = 109;
- <KPMU> = 110;
-
- <KP7> = 111;
- <KP8> = 112;
- <KP9> = 113;
- <KPSU> = 82;
-
- <KP4> = 114;
- <KP5> = 115;
- <KP6> = 116;
- <KPAD> = 86;
-
- <KP1> = 117;
- <KP2> = 118;
- <KP3> = 119;
-
- <KP0> = 120;
- <KPDC> = 121;
- <KPEN> = 122;
-};
-
-xkb_keycodes "de" {
- include "ataritt(us)"
-
- <LSGT> = 104;
-};
+default xkb_keycodes "us" {
+
+ minimum= 8;
+ maximum= 255;
+
+ <ESC> = 9;
+ <AE01> = 10;
+ <AE02> = 11;
+ <AE03> = 12;
+ <AE04> = 13;
+ <AE05> = 14;
+ <AE06> = 15;
+ <AE07> = 16;
+ <AE08> = 17;
+ <AE09> = 18;
+ <AE10> = 19;
+ <AE11> = 20;
+ <AE12> = 21;
+ <TLDE> = 49;
+ <BKSP> = 22;
+
+ <TAB> = 23;
+ <AD01> = 24;
+ <AD02> = 25;
+ <AD03> = 26;
+ <AD04> = 27;
+ <AD05> = 28;
+ <AD06> = 29;
+ <AD07> = 30;
+ <AD08> = 31;
+ <AD09> = 32;
+ <AD10> = 33;
+ <AD11> = 34;
+ <AD12> = 35;
+ <RTRN> = 36;
+ <DELE> = 91;
+
+ <LCTL> = 37;
+ <AC01> = 38;
+ <AC02> = 39;
+ <AC03> = 40;
+ <AC04> = 41;
+ <AC05> = 42;
+ <AC06> = 43;
+ <AC07> = 44;
+ <AC08> = 45;
+ <AC09> = 46;
+ <AC10> = 47;
+ <AC11> = 48;
+ <BKSL> = 51;
+
+ <LFSH> = 50;
+ <AB01> = 52;
+ <AB02> = 53;
+ <AB03> = 54;
+ <AB04> = 55;
+ <AB05> = 56;
+ <AB06> = 57;
+ <AB07> = 58;
+ <AB08> = 59;
+ <AB09> = 60;
+ <AB10> = 61;
+ <RTSH> = 62;
+
+ <ALT> = 64;
+ <SPCE> = 65;
+ <CAPS> = 66;
+
+ <FK01> = 67;
+ <FK02> = 68;
+ <FK03> = 69;
+ <FK04> = 70;
+ <FK05> = 71;
+ <FK06> = 72;
+ <FK07> = 73;
+ <FK08> = 74;
+ <FK09> = 75;
+ <FK10> = 76;
+
+ <HELP> = 106;
+ <UNDO> = 105;
+ <INS> = 90;
+ <HOME> = 79;
+ <UP> = 80;
+ <LEFT> = 83;
+ <DOWN> = 88;
+ <RGHT> = 85;
+
+ <KPLP> = 107;
+ <KPRP> = 108;
+ <KPDV> = 109;
+ <KPMU> = 110;
+
+ <KP7> = 111;
+ <KP8> = 112;
+ <KP9> = 113;
+ <KPSU> = 82;
+
+ <KP4> = 114;
+ <KP5> = 115;
+ <KP6> = 116;
+ <KPAD> = 86;
+
+ <KP1> = 117;
+ <KP2> = 118;
+ <KP3> = 119;
+
+ <KP0> = 120;
+ <KPDC> = 121;
+ <KPEN> = 122;
+};
+
+xkb_keycodes "de" {
+ include "ataritt(us)"
+
+ <LSGT> = 104;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/digital_vndr/lk b/xorg-server/xkeyboard-config/keycodes/digital_vndr/lk
index 8523b95dd..2c1421e88 100644
--- a/xorg-server/xkeyboard-config/keycodes/digital_vndr/lk
+++ b/xorg-server/xkeyboard-config/keycodes/digital_vndr/lk
@@ -1,271 +1,270 @@
-// $Xorg: lk,v 1.3 2000/08/17 19:54:38 cpqbld Exp $
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//Permission is hereby granted, free of charge, to any person obtaining
-//a copy of this software and associated documentation files (the
-//"Software"), to deal in the Software without restriction, including
-//without limitation the rights to use, copy, modify, merge, publish,
-//distribute, sublicense, and sell copies of the Software, and to
-//permit persons to whom the Software is furnished to do so, subject to
-//the following conditions:
-//
-//The above copyright notice and this permission notice shall be included
-//in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
-//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
-//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of the Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log
-// Revision 1.2 1996/06/18 09:13:22 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.6.2 1995/08/07 17:40:34 William_Walker
-// Upgrade XKB to protocol 0.62 (dual submit from decx11)
-// [1995/08/06 14:06:25 William_Walker]
-//
-// Revision 1.1.2.4 1995/08/05 15:25:55 William_Walker
-// Upgrade to XKB protocol 0.62
-// [1995/08/05 14:39:58 William_Walker]
-//
-// Revision 1.1.2.3 1995/06/27 12:17:31 William_Walker
-// Rename <TLDE> to ISO9995 compliant <AE00>.
-// [1995/06/26 20:24:04 William_Walker]
-//
-// Revision 1.1.2.2 1995/06/05 19:21:28 William_Walker
-// New file. I love keymaps.
-// [1995/06/05 18:07:29 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: lk Revision: /main/3 (DEC) Date: 1996/01/24 12:13:31
-//
-xkb_keycodes "lk_common" {
- // "Function" keys
- <FK01> = 86;
- <FK02> = 87;
- <FK03> = 88;
- <FK04> = 89;
- <FK05> = 90;
- <FK06> = 100;
- <FK07> = 101;
- <FK08> = 102;
- <FK09> = 103;
- <FK10> = 104;
- <FK11> = 113;
- <FK12> = 114;
-
- <UP> = 170;
- <LEFT> = 167;
- <DOWN> = 169;
- <RGHT> = 168;
-
- // "Keypad" keys
- <KP7> = 157;
- <KP8> = 158;
- <KP9> = 159;
- <KP4> = 153;
- <KP5> = 154;
- <KP6> = 155;
- <KP1> = 150;
- <KP2> = 151;
- <KP3> = 152;
- <KPEN> = 149;
- <KP0> = 146;
- <KPDL> = 148;
-
- // "Alphanumeric" keys
- <AE00> = 191;
- <AE01> = 192;
- <AE02> = 197;
- <AE03> = 203;
- <AE04> = 208;
- <AE05> = 214;
- <AE06> = 219;
- <AE07> = 224;
- <AE08> = 229;
- <AE09> = 234;
- <AE10> = 239;
- <AE11> = 249;
- <AE12> = 245;
- <BKSP> = 188;
-
- <TAB> = 190;
- <AD01> = 193;
- <AD02> = 198;
- <AD03> = 204;
- <AD04> = 209;
- <AD05> = 215;
- <AD06> = 220;
- <AD07> = 225;
- <AD08> = 230;
- <AD09> = 235;
- <AD10> = 240;
- <AD11> = 250;
- <AD12> = 246;
- <RTRN> = 189;
-
- <LCTL> = 175;
- <CAPS> = 176;
- <AC01> = 194;
- <AC02> = 199;
- <AC03> = 205;
- <AC04> = 210;
- <AC05> = 216;
- <AC06> = 221;
- <AC07> = 226;
- <AC08> = 231;
- <AC09> = 236;
- <AC10> = 242;
- <AC11> = 251;
-
- <LFSH> = 174;
- <AB01> = 195;
- <AB02> = 200;
- <AB03> = 206;
- <AB04> = 211;
- <AB05> = 217;
- <AB06> = 222;
- <AB07> = 227;
- <AB08> = 232;
- <AB09> = 237;
- <AB10> = 243;
- <RTSH> = 171;
-
- <SPCE> = 212;
-
- <LDM> = 255; // Support R5 Lock Down Modifiers
-
- alias <TLDE> = <AE00>;
-};
-
-xkb_keycodes "lkx01" {
- include "digital_vndr/lk(lk_common)"
- <AB00> = 201;
- <FK13> = 115;
- <FK14> = 116;
- <FK17> = 128;
- <FK18> = 129;
- <FK19> = 130;
- <FK20> = 131;
- <HELP> = 124;
- <DO> = 125;
- <FIND> = 138;
- <INS> = 139;
- <DELE> = 140;
- <SELE> = 141;
- <PGUP> = 142;
- <PGDN> = 143;
- <KPF1> = 161;
- <KPF2> = 162;
- <KPF3> = 163;
- <KPF4> = 164;
- <KPSU> = 160;
- <KPCO> = 156;
- <BKSL> = 247;
- <LCMP> = 177;
-};
-
-xkb_keycodes "lk201" {
- include "digital_vndr/lk(lkx01)"
- indicator 4 = "Scroll Lock";
- indicator 3 = "Caps Lock";
- indicator 2 = "Compose";
- indicator 1 = "Wait";
-};
-
-xkb_keycodes "lk421" {
- include "digital_vndr/lk(lkx01)"
- <LALT> = 172;
- <RALT> = 178;
- <RCMP> = 173;
-};
-
-xkb_keycodes "lk401" {
- include "digital_vndr/lk(lk421)"
- indicator 4 = "Scroll Lock";
- indicator 3 = "Caps Lock";
-};
-
-xkb_keycodes "lk44x" {
- include "digital_vndr/lk(lk_common)"
- <ESC> = 85;
- <PRSC> = 115;
- <SCLK> = 116;
- <PAUS> = 124;
- <INS> = 138;
- <HOME> = 139;
- <PGUP> = 140;
- <DELE> = 141;
- <END> = 142;
- <PGDN> = 143;
- <NMLK> = 161;
- <KPDV> = 162;
- <KPMU> = 163;
- <KPSU> = 164;
- <KPAD> = 156;
- <LALT> = 172;
- <RALT> = 178;
- <RCTL> = 173;
-};
-
-xkb_keycodes "lk443" {
- include "digital_vndr/lk(lk44x)"
- <BKSL> = 247;
- indicator 3 = "Caps Lock";
- indicator 4 = "Scroll Lock";
- indicator 5 = "Num Lock";
-};
-
-xkb_keycodes "lk444" {
- include "digital_vndr/lk(lk44x)"
- <BKSL> = 201;
- <AC12> = 247;
- indicator 3 = "Caps Lock";
- indicator 4 = "Scroll Lock";
- indicator 5 = "Num Lock";
-};
-
-// LK201-LT = lk201
-// LK421-AJ = lk421 +AB11
-// LK421-JJ = lk421aj+MUHE+KANJ+HIRA
-// LK401-AJ = lk401
-// LK401-BJ = lk401 +MUHE+KANJ+HIRA
-// LK401-JJ = lk401bj+AB11
-// LK401-LT = lk401
-// LK441-LT = lk443
-
-xkb_keycodes "lk421aj" {
- include "digital_vndr/lk(lk421)"
- <AB11> = 252;
-};
-
-xkb_keycodes "lk421jj" {
- include "digital_vndr/lk(lk421aj)"
- <MUHE> = 94;
- <KANJ> = 95;
- <HIRA> = 97;
-};
-
-xkb_keycodes "lk401bj" {
- include "digital_vndr/lk(lk401)"
- <MUHE> = 94;
- <KANJ> = 95;
- <HIRA> = 97;
-};
-
-xkb_keycodes "lk401jj" {
- include "digital_vndr/lk(lk401bj)"
- <AB11> = 252;
-};
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//Permission is hereby granted, free of charge, to any person obtaining
+//a copy of this software and associated documentation files (the
+//"Software"), to deal in the Software without restriction, including
+//without limitation the rights to use, copy, modify, merge, publish,
+//distribute, sublicense, and sell copies of the Software, and to
+//permit persons to whom the Software is furnished to do so, subject to
+//the following conditions:
+//
+//The above copyright notice and this permission notice shall be included
+//in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
+//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of the Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log
+// Revision 1.2 1996/06/18 09:13:22 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.6.2 1995/08/07 17:40:34 William_Walker
+// Upgrade XKB to protocol 0.62 (dual submit from decx11)
+// [1995/08/06 14:06:25 William_Walker]
+//
+// Revision 1.1.2.4 1995/08/05 15:25:55 William_Walker
+// Upgrade to XKB protocol 0.62
+// [1995/08/05 14:39:58 William_Walker]
+//
+// Revision 1.1.2.3 1995/06/27 12:17:31 William_Walker
+// Rename <TLDE> to ISO9995 compliant <AE00>.
+// [1995/06/26 20:24:04 William_Walker]
+//
+// Revision 1.1.2.2 1995/06/05 19:21:28 William_Walker
+// New file. I love keymaps.
+// [1995/06/05 18:07:29 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: lk Revision: /main/3 (DEC) Date: 1996/01/24 12:13:31
+//
+xkb_keycodes "lk_common" {
+ // "Function" keys
+ <FK01> = 86;
+ <FK02> = 87;
+ <FK03> = 88;
+ <FK04> = 89;
+ <FK05> = 90;
+ <FK06> = 100;
+ <FK07> = 101;
+ <FK08> = 102;
+ <FK09> = 103;
+ <FK10> = 104;
+ <FK11> = 113;
+ <FK12> = 114;
+
+ <UP> = 170;
+ <LEFT> = 167;
+ <DOWN> = 169;
+ <RGHT> = 168;
+
+ // "Keypad" keys
+ <KP7> = 157;
+ <KP8> = 158;
+ <KP9> = 159;
+ <KP4> = 153;
+ <KP5> = 154;
+ <KP6> = 155;
+ <KP1> = 150;
+ <KP2> = 151;
+ <KP3> = 152;
+ <KPEN> = 149;
+ <KP0> = 146;
+ <KPDL> = 148;
+
+ // "Alphanumeric" keys
+ <AE00> = 191;
+ <AE01> = 192;
+ <AE02> = 197;
+ <AE03> = 203;
+ <AE04> = 208;
+ <AE05> = 214;
+ <AE06> = 219;
+ <AE07> = 224;
+ <AE08> = 229;
+ <AE09> = 234;
+ <AE10> = 239;
+ <AE11> = 249;
+ <AE12> = 245;
+ <BKSP> = 188;
+
+ <TAB> = 190;
+ <AD01> = 193;
+ <AD02> = 198;
+ <AD03> = 204;
+ <AD04> = 209;
+ <AD05> = 215;
+ <AD06> = 220;
+ <AD07> = 225;
+ <AD08> = 230;
+ <AD09> = 235;
+ <AD10> = 240;
+ <AD11> = 250;
+ <AD12> = 246;
+ <RTRN> = 189;
+
+ <LCTL> = 175;
+ <CAPS> = 176;
+ <AC01> = 194;
+ <AC02> = 199;
+ <AC03> = 205;
+ <AC04> = 210;
+ <AC05> = 216;
+ <AC06> = 221;
+ <AC07> = 226;
+ <AC08> = 231;
+ <AC09> = 236;
+ <AC10> = 242;
+ <AC11> = 251;
+
+ <LFSH> = 174;
+ <AB01> = 195;
+ <AB02> = 200;
+ <AB03> = 206;
+ <AB04> = 211;
+ <AB05> = 217;
+ <AB06> = 222;
+ <AB07> = 227;
+ <AB08> = 232;
+ <AB09> = 237;
+ <AB10> = 243;
+ <RTSH> = 171;
+
+ <SPCE> = 212;
+
+ <LDM> = 255; // Support R5 Lock Down Modifiers
+
+ alias <TLDE> = <AE00>;
+};
+
+xkb_keycodes "lkx01" {
+ include "digital_vndr/lk(lk_common)"
+ <AB00> = 201;
+ <FK13> = 115;
+ <FK14> = 116;
+ <FK17> = 128;
+ <FK18> = 129;
+ <FK19> = 130;
+ <FK20> = 131;
+ <HELP> = 124;
+ <DO> = 125;
+ <FIND> = 138;
+ <INS> = 139;
+ <DELE> = 140;
+ <SELE> = 141;
+ <PGUP> = 142;
+ <PGDN> = 143;
+ <KPF1> = 161;
+ <KPF2> = 162;
+ <KPF3> = 163;
+ <KPF4> = 164;
+ <KPSU> = 160;
+ <KPCO> = 156;
+ <BKSL> = 247;
+ <LCMP> = 177;
+};
+
+xkb_keycodes "lk201" {
+ include "digital_vndr/lk(lkx01)"
+ indicator 4 = "Scroll Lock";
+ indicator 3 = "Caps Lock";
+ indicator 2 = "Compose";
+ indicator 1 = "Wait";
+};
+
+xkb_keycodes "lk421" {
+ include "digital_vndr/lk(lkx01)"
+ <LALT> = 172;
+ <RALT> = 178;
+ <RCMP> = 173;
+};
+
+xkb_keycodes "lk401" {
+ include "digital_vndr/lk(lk421)"
+ indicator 4 = "Scroll Lock";
+ indicator 3 = "Caps Lock";
+};
+
+xkb_keycodes "lk44x" {
+ include "digital_vndr/lk(lk_common)"
+ <ESC> = 85;
+ <PRSC> = 115;
+ <SCLK> = 116;
+ <PAUS> = 124;
+ <INS> = 138;
+ <HOME> = 139;
+ <PGUP> = 140;
+ <DELE> = 141;
+ <END> = 142;
+ <PGDN> = 143;
+ <NMLK> = 161;
+ <KPDV> = 162;
+ <KPMU> = 163;
+ <KPSU> = 164;
+ <KPAD> = 156;
+ <LALT> = 172;
+ <RALT> = 178;
+ <RCTL> = 173;
+};
+
+xkb_keycodes "lk443" {
+ include "digital_vndr/lk(lk44x)"
+ <BKSL> = 247;
+ indicator 3 = "Caps Lock";
+ indicator 4 = "Scroll Lock";
+ indicator 5 = "Num Lock";
+};
+
+xkb_keycodes "lk444" {
+ include "digital_vndr/lk(lk44x)"
+ <BKSL> = 201;
+ <AC12> = 247;
+ indicator 3 = "Caps Lock";
+ indicator 4 = "Scroll Lock";
+ indicator 5 = "Num Lock";
+};
+
+// LK201-LT = lk201
+// LK421-AJ = lk421 +AB11
+// LK421-JJ = lk421aj+MUHE+KANJ+HIRA
+// LK401-AJ = lk401
+// LK401-BJ = lk401 +MUHE+KANJ+HIRA
+// LK401-JJ = lk401bj+AB11
+// LK401-LT = lk401
+// LK441-LT = lk443
+
+xkb_keycodes "lk421aj" {
+ include "digital_vndr/lk(lk421)"
+ <AB11> = 252;
+};
+
+xkb_keycodes "lk421jj" {
+ include "digital_vndr/lk(lk421aj)"
+ <MUHE> = 94;
+ <KANJ> = 95;
+ <HIRA> = 97;
+};
+
+xkb_keycodes "lk401bj" {
+ include "digital_vndr/lk(lk401)"
+ <MUHE> = 94;
+ <KANJ> = 95;
+ <HIRA> = 97;
+};
+
+xkb_keycodes "lk401jj" {
+ include "digital_vndr/lk(lk401bj)"
+ <AB11> = 252;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/digital_vndr/pc b/xorg-server/xkeyboard-config/keycodes/digital_vndr/pc
index 511715627..8cf06f3f0 100644
--- a/xorg-server/xkeyboard-config/keycodes/digital_vndr/pc
+++ b/xorg-server/xkeyboard-config/keycodes/digital_vndr/pc
@@ -1,280 +1,277 @@
-// $Xorg: pc,v 1.3 2000/08/17 19:54:38 cpqbld Exp $
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//Permission is hereby granted, free of charge, to any person obtaining
-//a copy of this software and associated documentation files (the
-//"Software"), to deal in the Software without restriction, including
-//without limitation the rights to use, copy, modify, merge, publish,
-//distribute, sublicense, and sell copies of the Software, and to
-//permit persons to whom the Software is furnished to do so, subject to
-//the following conditions:
-//
-//The above copyright notice and this permission notice shall be included
-//in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
-//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
-//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of the Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log
-// Revision 1.2 1996/06/18 09:13:25 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.6.3 1995/10/25 21:00:14 William_Walker
-// Add pc104-key support
-// [1995/10/23 15:46:21 William_Walker]
-//
-// Revision 1.1.6.2 1995/08/07 17:40:37 William_Walker
-// Upgrade XKB to protocol 0.62 (dual submit from decx11)
-// [1995/08/06 14:06:28 William_Walker]
-//
-// Revision 1.1.2.4 1995/08/05 15:25:56 William_Walker
-// Upgrade to XKB protocol 0.62
-// [1995/08/05 14:40:02 William_Walker]
-//
-// Revision 1.1.2.3 1995/06/27 12:17:32 William_Walker
-// Rename <TLDE> to ISO9995 compliant <AE00>.
-// [1995/06/26 20:24:07 William_Walker]
-//
-// Revision 1.1.2.2 1995/06/05 19:21:31 William_Walker
-// New file. I love keymaps.
-// [1995/06/05 18:07:34 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: pc Revision: /main/3 (DEC) Date: 1996/01/24 12:13:36
-//
-xkb_keycodes "pc_common" {
- // "Function" keys
- <FK01> = 9;
- <FK02> = 15;
- <FK03> = 23;
- <FK04> = 31;
- <FK05> = 39;
- <FK06> = 47;
- <FK07> = 55;
- <FK08> = 63;
- <FK09> = 71;
- <FK10> = 79;
- <FK11> = 86;
- <FK12> = 94;
-
- // "Editing" keys
-
- <UP> = 99;
- <LEFT> = 97;
- <DOWN> = 96;
- <RGHT> = 106;
-
- // "Keypad" keys
- <KP7> = 108;
- <KP8> = 117;
- <KP9> = 125;
-
- <KP4> = 107;
- <KP5> = 115;
- <KP6> = 116;
-
- <KP1> = 105;
- <KP2> = 114;
- <KP3> = 122;
- <KPEN> = 121;
-
- <KP0> = 112;
- <KPDL> = 113;
-
- // "Alphanumeric" keys
- <AE01> = 22;
- <AE02> = 30;
- <AE03> = 38;
- <AE04> = 37;
- <AE05> = 46;
- <AE06> = 54;
- <AE07> = 61;
- <AE08> = 62;
- <AE09> = 70;
- <AE10> = 69;
- <AE11> = 78;
- <AE12> = 85;
- <BKSP> = 102;
-
- <TAB> = 13;
- <AD01> = 21;
- <AD02> = 29;
- <AD03> = 36;
- <AD04> = 45;
- <AD05> = 44;
- <AD06> = 53;
- <AD07> = 60;
- <AD08> = 67;
- <AD09> = 68;
- <AD10> = 77;
- <AD11> = 84;
- <AD12> = 91;
-
- <CAPS> = 20;
- <AC01> = 28;
- <AC02> = 27;
- <AC03> = 35;
- <AC04> = 43;
- <AC05> = 52;
- <AC06> = 51;
- <AC07> = 59;
- <AC08> = 66;
- <AC09> = 75;
- <AC10> = 76;
- <AC11> = 82;
- <RTRN> = 90;
-
- <LFSH> = 18;
- <AB01> = 26;
- <AB02> = 34;
- <AB03> = 33;
- <AB04> = 42;
- <AB05> = 50;
- <AB06> = 49;
- <AB07> = 58;
- <AB08> = 65;
- <AB09> = 73;
- <AB10> = 74;
- <RTSH> = 89;
-
- <LCTL> = 17;
- <LALT> = 25;
- <SPCE> = 41;
- <RALT> = 57;
-
- <LDM> = 255; // Support R5 Lock Down Modifiers
-
-};
-
-xkb_keycodes "pc10x" {
- include "digital_vndr/pc(pc_common)"
- <ESC> = 8;
- <AE00> = 14;
- <PRSC> = 87;
- <SCLK> = 95;
- <PAUS> = 98;
- <INS> = 103;
- <HOME> = 110;
- <PGUP> = 111;
- <DELE> = 100;
- <END> = 101;
- <PGDN> = 109;
- <NMLK> = 118;
- <KPDV> = 119;
- <KPMU> = 126;
- <KPSU> = 132;
- <KPAD> = 124;
- <RCTL> = 88;
-
- alias <TLDE> = <AE00>;
-
- indicator 3 = "Caps Lock";
- indicator 4 = "Scroll Lock";
-};
-
-xkb_keycodes "pc101" {
- include "digital_vndr/pc(pc10x)"
- <BKSL> = 92;
- indicator 5 = "Num Lock";
-};
-
-
-xkb_keycodes "pc102" {
- include "digital_vndr/pc(pc10x)"
- <BKSL> = 19;
- <AC12> = 83;
- indicator 5 = "Num Lock";
-};
-
-xkb_keycodes "pc104" {
- include "digital_vndr/pc(pc101)"
- <LWIN> = 139;
- <RWIN> = 140;
- <MENU> = 141;
-};
-
-xkb_keycodes "lk411_common" {
- include "digital_vndr/pc(pc_common)"
- <AE00> = 8;
- <AB00> = 14;
- <FK13> = 24;
- <FK14> = 10;
- <FK17> = 16;
- <FK18> = 87;
- <FK19> = 95;
- <FK20> = 98;
- <HELP> = 11;
- <DO> = 12;
- <FIND> = 110;
- <INS> = 103;
- <DELE> = 100;
- <SELE> = 101;
- <PGUP> = 111;
- <PGDN> = 109;
- <KPF1> = 118;
- <KPF2> = 119;
- <KPF3> = 126;
- <KPF4> = 132;
- <KPSU> = 19;
- <KPCO> = 124;
- <LCMP> = 40;
- <RCMP> = 88;
-
- alias <TLDE> = <AE00>;
-
- indicator 3 = "Caps Lock";
- indicator 4 = "Scroll Lock";
-};
-
-xkb_keycodes "lk411" {
- include "digital_vndr/pc(lk411_common)"
- <BKSL> = 92;
-};
-
-xkb_keycodes "lk450" {
- include "digital_vndr/pc(lk411)"
- indicator 2 = "Compose";
- indicator 1 = "Wait";
-};
-
-// Japanese variants
-//
-// PCXAJ-AA = pc+BKSL+AC12+AB11+MUHE+KANJ+HIRA+indicator
-// LK411-AJ = lk411+MUHE+KANJ+HIRA
-// LK411-JJ = lk411+BKSL+AZ01+MUHE+KANJ+HIRA
-// LK411-LT = lk411
-
-xkb_keycodes "pcxajaa" {
- include "digital_vndr/pc(pc10x)"
- <BKSL> = 93;
- <AC12> = 83;
- <AB11> = 81;
- <MUHE> = 133;
- <KANJ> = 134;
- <HIRA> = 135;
- indicator 5 = "Group 2";
-};
-
-xkb_keycodes "lk411jj" {
- include "digital_vndr/pc(lk411_common)"
- <AB11> = 81;
- <BKSL> = 83;
- <MUHE> = 133;
- <KANJ> = 134;
- <HIRA> = 135;
-};
-
-
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//Permission is hereby granted, free of charge, to any person obtaining
+//a copy of this software and associated documentation files (the
+//"Software"), to deal in the Software without restriction, including
+//without limitation the rights to use, copy, modify, merge, publish,
+//distribute, sublicense, and sell copies of the Software, and to
+//permit persons to whom the Software is furnished to do so, subject to
+//the following conditions:
+//
+//The above copyright notice and this permission notice shall be included
+//in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
+//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of the Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log
+// Revision 1.2 1996/06/18 09:13:25 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.6.3 1995/10/25 21:00:14 William_Walker
+// Add pc104-key support
+// [1995/10/23 15:46:21 William_Walker]
+//
+// Revision 1.1.6.2 1995/08/07 17:40:37 William_Walker
+// Upgrade XKB to protocol 0.62 (dual submit from decx11)
+// [1995/08/06 14:06:28 William_Walker]
+//
+// Revision 1.1.2.4 1995/08/05 15:25:56 William_Walker
+// Upgrade to XKB protocol 0.62
+// [1995/08/05 14:40:02 William_Walker]
+//
+// Revision 1.1.2.3 1995/06/27 12:17:32 William_Walker
+// Rename <TLDE> to ISO9995 compliant <AE00>.
+// [1995/06/26 20:24:07 William_Walker]
+//
+// Revision 1.1.2.2 1995/06/05 19:21:31 William_Walker
+// New file. I love keymaps.
+// [1995/06/05 18:07:34 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: pc Revision: /main/3 (DEC) Date: 1996/01/24 12:13:36
+//
+xkb_keycodes "pc_common" {
+ // "Function" keys
+ <FK01> = 9;
+ <FK02> = 15;
+ <FK03> = 23;
+ <FK04> = 31;
+ <FK05> = 39;
+ <FK06> = 47;
+ <FK07> = 55;
+ <FK08> = 63;
+ <FK09> = 71;
+ <FK10> = 79;
+ <FK11> = 86;
+ <FK12> = 94;
+
+ // "Editing" keys
+
+ <UP> = 99;
+ <LEFT> = 97;
+ <DOWN> = 96;
+ <RGHT> = 106;
+
+ // "Keypad" keys
+ <KP7> = 108;
+ <KP8> = 117;
+ <KP9> = 125;
+
+ <KP4> = 107;
+ <KP5> = 115;
+ <KP6> = 116;
+
+ <KP1> = 105;
+ <KP2> = 114;
+ <KP3> = 122;
+ <KPEN> = 121;
+
+ <KP0> = 112;
+ <KPDL> = 113;
+
+ // "Alphanumeric" keys
+ <AE01> = 22;
+ <AE02> = 30;
+ <AE03> = 38;
+ <AE04> = 37;
+ <AE05> = 46;
+ <AE06> = 54;
+ <AE07> = 61;
+ <AE08> = 62;
+ <AE09> = 70;
+ <AE10> = 69;
+ <AE11> = 78;
+ <AE12> = 85;
+ <BKSP> = 102;
+
+ <TAB> = 13;
+ <AD01> = 21;
+ <AD02> = 29;
+ <AD03> = 36;
+ <AD04> = 45;
+ <AD05> = 44;
+ <AD06> = 53;
+ <AD07> = 60;
+ <AD08> = 67;
+ <AD09> = 68;
+ <AD10> = 77;
+ <AD11> = 84;
+ <AD12> = 91;
+
+ <CAPS> = 20;
+ <AC01> = 28;
+ <AC02> = 27;
+ <AC03> = 35;
+ <AC04> = 43;
+ <AC05> = 52;
+ <AC06> = 51;
+ <AC07> = 59;
+ <AC08> = 66;
+ <AC09> = 75;
+ <AC10> = 76;
+ <AC11> = 82;
+ <RTRN> = 90;
+
+ <LFSH> = 18;
+ <AB01> = 26;
+ <AB02> = 34;
+ <AB03> = 33;
+ <AB04> = 42;
+ <AB05> = 50;
+ <AB06> = 49;
+ <AB07> = 58;
+ <AB08> = 65;
+ <AB09> = 73;
+ <AB10> = 74;
+ <RTSH> = 89;
+
+ <LCTL> = 17;
+ <LALT> = 25;
+ <SPCE> = 41;
+ <RALT> = 57;
+
+ <LDM> = 255; // Support R5 Lock Down Modifiers
+
+};
+
+xkb_keycodes "pc10x" {
+ include "digital_vndr/pc(pc_common)"
+ <ESC> = 8;
+ <AE00> = 14;
+ <PRSC> = 87;
+ <SCLK> = 95;
+ <PAUS> = 98;
+ <INS> = 103;
+ <HOME> = 110;
+ <PGUP> = 111;
+ <DELE> = 100;
+ <END> = 101;
+ <PGDN> = 109;
+ <NMLK> = 118;
+ <KPDV> = 119;
+ <KPMU> = 126;
+ <KPSU> = 132;
+ <KPAD> = 124;
+ <RCTL> = 88;
+
+ alias <TLDE> = <AE00>;
+
+ indicator 3 = "Caps Lock";
+ indicator 4 = "Scroll Lock";
+};
+
+xkb_keycodes "pc101" {
+ include "digital_vndr/pc(pc10x)"
+ <BKSL> = 92;
+ indicator 5 = "Num Lock";
+};
+
+
+xkb_keycodes "pc102" {
+ include "digital_vndr/pc(pc10x)"
+ <BKSL> = 19;
+ <AC12> = 83;
+ indicator 5 = "Num Lock";
+};
+
+xkb_keycodes "pc104" {
+ include "digital_vndr/pc(pc101)"
+ <LWIN> = 139;
+ <RWIN> = 140;
+ <MENU> = 141;
+};
+
+xkb_keycodes "lk411_common" {
+ include "digital_vndr/pc(pc_common)"
+ <AE00> = 8;
+ <AB00> = 14;
+ <FK13> = 24;
+ <FK14> = 10;
+ <FK17> = 16;
+ <FK18> = 87;
+ <FK19> = 95;
+ <FK20> = 98;
+ <HELP> = 11;
+ <DO> = 12;
+ <FIND> = 110;
+ <INS> = 103;
+ <DELE> = 100;
+ <SELE> = 101;
+ <PGUP> = 111;
+ <PGDN> = 109;
+ <KPF1> = 118;
+ <KPF2> = 119;
+ <KPF3> = 126;
+ <KPF4> = 132;
+ <KPSU> = 19;
+ <KPCO> = 124;
+ <LCMP> = 40;
+ <RCMP> = 88;
+
+ alias <TLDE> = <AE00>;
+
+ indicator 3 = "Caps Lock";
+ indicator 4 = "Scroll Lock";
+};
+
+xkb_keycodes "lk411" {
+ include "digital_vndr/pc(lk411_common)"
+ <BKSL> = 92;
+};
+
+xkb_keycodes "lk450" {
+ include "digital_vndr/pc(lk411)"
+ indicator 2 = "Compose";
+ indicator 1 = "Wait";
+};
+
+// Japanese variants
+//
+// PCXAJ-AA = pc+BKSL+AC12+AB11+MUHE+KANJ+HIRA+indicator
+// LK411-AJ = lk411+MUHE+KANJ+HIRA
+// LK411-JJ = lk411+BKSL+AZ01+MUHE+KANJ+HIRA
+// LK411-LT = lk411
+
+xkb_keycodes "pcxajaa" {
+ include "digital_vndr/pc(pc10x)"
+ <BKSL> = 93;
+ <AC12> = 83;
+ <AB11> = 81;
+ <MUHE> = 133;
+ <KANJ> = 134;
+ <HIRA> = 135;
+ indicator 5 = "Group 2";
+};
+
+xkb_keycodes "lk411jj" {
+ include "digital_vndr/pc(lk411_common)"
+ <AB11> = 81;
+ <BKSL> = 83;
+ <MUHE> = 133;
+ <KANJ> = 134;
+ <HIRA> = 135;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/evdev b/xorg-server/xkeyboard-config/keycodes/evdev
index d6963a2d5..de035c898 100644
--- a/xorg-server/xkeyboard-config/keycodes/evdev
+++ b/xorg-server/xkeyboard-config/keycodes/evdev
@@ -1,313 +1,314 @@
-// translation from evdev scancodes to something resembling xfree86 keycodes.
-
-default xkb_keycodes "evdev" {
- minimum = 8;
- maximum = 255;
-
- # Added for pc105 compatibility
- <LSGT> = 94;
-
- <TLDE> = 49;
- <AE01> = 10;
- <AE02> = 11;
- <AE03> = 12;
- <AE04> = 13;
- <AE05> = 14;
- <AE06> = 15;
- <AE07> = 16;
- <AE08> = 17;
- <AE09> = 18;
- <AE10> = 19;
- <AE11> = 20;
- <AE12> = 21;
- <BKSP> = 22;
-
- <TAB> = 23;
- <AD01> = 24;
- <AD02> = 25;
- <AD03> = 26;
- <AD04> = 27;
- <AD05> = 28;
- <AD06> = 29;
- <AD07> = 30;
- <AD08> = 31;
- <AD09> = 32;
- <AD10> = 33;
- <AD11> = 34;
- <AD12> = 35;
- <BKSL> = 51;
- alias <AC12> = <BKSL>;
- <RTRN> = 36;
-
- <CAPS> = 66;
- <AC01> = 38;
- <AC02> = 39;
- <AC03> = 40;
- <AC04> = 41;
- <AC05> = 42;
- <AC06> = 43;
- <AC07> = 44;
- <AC08> = 45;
- <AC09> = 46;
- <AC10> = 47;
- <AC11> = 48;
-
- <LFSH> = 50;
- <AB01> = 52;
- <AB02> = 53;
- <AB03> = 54;
- <AB04> = 55;
- <AB05> = 56;
- <AB06> = 57;
- <AB07> = 58;
- <AB08> = 59;
- <AB09> = 60;
- <AB10> = 61;
- <RTSH> = 62;
-
- <LALT> = 64;
- <LCTL> = 37;
- <SPCE> = 65;
- <RCTL> = 105;
- <RALT> = 108;
- // Microsoft keyboard extra keys
- <LWIN> = 133;
- <RWIN> = 134;
- <COMP> = 135;
- alias <MENU> = <COMP>;
-
- <ESC> = 9;
- <FK01> = 67;
- <FK02> = 68;
- <FK03> = 69;
- <FK04> = 70;
- <FK05> = 71;
- <FK06> = 72;
- <FK07> = 73;
- <FK08> = 74;
- <FK09> = 75;
- <FK10> = 76;
- <FK11> = 95;
- <FK12> = 96;
-
- <PRSC> = 107;
- // <SYRQ> = 107;
- <SCLK> = 78;
- <PAUS> = 127;
- // <BRK> = 419;
-
- <INS> = 118;
- <HOME> = 110;
- <PGUP> = 112;
- <DELE> = 119;
- <END> = 115;
- <PGDN> = 117;
-
- <UP> = 111;
- <LEFT> = 113;
- <DOWN> = 116;
- <RGHT> = 114;
-
- <NMLK> = 77;
- <KPDV> = 106;
- <KPMU> = 63;
- <KPSU> = 82;
-
- <KP7> = 79;
- <KP8> = 80;
- <KP9> = 81;
- <KPAD> = 86;
-
- <KP4> = 83;
- <KP5> = 84;
- <KP6> = 85;
-
- <KP1> = 87;
- <KP2> = 88;
- <KP3> = 89;
- <KPEN> = 104;
-
- <KP0> = 90;
- <KPDL> = 91;
- <KPEQ> = 125;
-
- <FK13> = 191;
- <FK14> = 192;
- <FK15> = 193;
- <FK16> = 194;
- <FK17> = 195;
- <FK18> = 196;
- <FK19> = 197;
- <FK20> = 198;
- <FK21> = 199;
- <FK22> = 200;
- <FK23> = 201;
- <FK24> = 202;
-
- // Keys that are generated on Japanese keyboards
-
- //<HZTG> = 93; // Hankaku/Zenkakau toggle - not actually used
- alias <HZTG> = <TLDE>;
- <HKTG> = 101; // Hiragana/Katakana toggle
- <AB11> = 97; // backslash/underscore
- <HENK> = 100; // Henkan
- <MUHE> = 102; // Muhenkan
- <AE13> = 132; // Yen
- <KATA> = 98; // Katakana
- <HIRA> = 99; // Hiragana
- <JPCM> = 103; // KPJPComma
- //<RO> = 97; // Romaji
-
- // Keys that are generated on Korean keyboards
-
- <HNGL> = 130; // Hangul Latin toggle
- <HJCV> = 131; // Hangul to Hanja conversion
-
- // Solaris compatibility
-
- alias <LMTA> = <LWIN>;
- alias <RMTA> = <RWIN>;
- <MUTE> = 121;
- <VOL-> = 122;
- <VOL+> = 123;
- <POWR> = 124;
- <STOP> = 136;
- <AGAI> = 137;
- <PROP> = 138;
- <UNDO> = 139;
- <FRNT> = 140;
- <COPY> = 141;
- <OPEN> = 142;
- <PAST> = 143;
- <FIND> = 144;
- <CUT> = 145;
- <HELP> = 146;
-
- // Extended keys that may be generated on "Internet" keyboards.
- // evdev has standardize names for these.
-
- <LNFD> = 109; // #define KEY_LINEFEED 101
- <I120> = 120; // #define KEY_MACRO 112
- <I126> = 126; // #define KEY_KPPLUSMINUS 118
- <I129> = 129; // #define KEY_KPCOMMA 121
- <I147> = 147; // #define KEY_MENU 139
- <I148> = 148; // #define KEY_CALC 140
- <I149> = 149; // #define KEY_SETUP 141
- <I150> = 150; // #define KEY_SLEEP 142
- <I151> = 151; // #define KEY_WAKEUP 143
- <I152> = 152; // #define KEY_FILE 144
- <I153> = 153; // #define KEY_SENDFILE 145
- <I154> = 154; // #define KEY_DELETEFILE 146
- <I155> = 155; // #define KEY_XFER 147
- <I156> = 156; // #define KEY_PROG1 148
- <I157> = 157; // #define KEY_PROG2 149
- <I158> = 158; // #define KEY_WWW 150
- <I159> = 159; // #define KEY_MSDOS 151
- <I160> = 160; // #define KEY_COFFEE 152
- <I161> = 161; // #define KEY_DIRECTION 153
- <I162> = 162; // #define KEY_CYCLEWINDOWS 154
- <I163> = 163; // #define KEY_MAIL 155
- <I164> = 164; // #define KEY_BOOKMARKS 156
- <I165> = 165; // #define KEY_COMPUTER 157
- <I166> = 166; // #define KEY_BACK 158
- <I167> = 167; // #define KEY_FORWARD 159
- <I168> = 168; // #define KEY_CLOSECD 160
- <I169> = 169; // #define KEY_EJECTCD 161
- <I170> = 170; // #define KEY_EJECTCLOSECD 162
- <I171> = 171; // #define KEY_NEXTSONG 163
- <I172> = 172; // #define KEY_PLAYPAUSE 164
- <I173> = 173; // #define KEY_PREVIOUSSONG 165
- <I174> = 174; // #define KEY_STOPCD 166
- <I175> = 175; // #define KEY_RECORD 167
- <I176> = 176; // #define KEY_REWIND 168
- <I177> = 177; // #define KEY_PHONE 169
- <I178> = 178; // #define KEY_ISO 170
- <I179> = 179; // #define KEY_CONFIG 171
- <I180> = 180; // #define KEY_HOMEPAGE 172
- <I181> = 181; // #define KEY_REFRESH 173
- <I182> = 182; // #define KEY_EXIT 174
- <I183> = 183; // #define KEY_MOVE 175
- <I184> = 184; // #define KEY_EDIT 176
- <I185> = 185; // #define KEY_SCROLLUP 177
- <I186> = 186; // #define KEY_SCROLLDOWN 178
- <I187> = 187; // #define KEY_KPLEFTPAREN 179
- <I188> = 188; // #define KEY_KPRIGHTPAREN 180
- <I189> = 189; // #define KEY_NEW 181
- <I190> = 190; // #define KEY_REDO 182
- <I208> = 208; // #define KEY_PLAYCD 200
- <I209> = 209; // #define KEY_PAUSECD 201
- <I210> = 210; // #define KEY_PROG3 202
- <I211> = 211; // #define KEY_PROG4 203 conflicts with AB11
- <I213> = 213; // #define KEY_SUSPEND 205
- <I214> = 214; // #define KEY_CLOSE 206
- <I215> = 215; // #define KEY_PLAY 207
- <I216> = 216; // #define KEY_FASTFORWARD 208
- <I217> = 217; // #define KEY_BASSBOOST 209
- <I218> = 218; // #define KEY_PRINT 210
- <I219> = 219; // #define KEY_HP 211
- <I220> = 220; // #define KEY_CAMERA 212
- <I221> = 221; // #define KEY_SOUND 213
- <I222> = 222; // #define KEY_QUESTION 214
- <I223> = 223; // #define KEY_EMAIL 215
- <I224> = 224; // #define KEY_CHAT 216
- <I225> = 225; // #define KEY_SEARCH 217
- <I226> = 226; // #define KEY_CONNECT 218
- <I227> = 227; // #define KEY_FINANCE 219
- <I228> = 228; // #define KEY_SPORT 220
- <I229> = 229; // #define KEY_SHOP 221
- <I230> = 230; // #define KEY_ALTERASE 222
- <I231> = 231; // #define KEY_CANCEL 223
- <I232> = 232; // #define KEY_BRIGHTNESSDOWN 224
- <I233> = 233; // #define KEY_BRIGHTNESSUP 225
- <I234> = 234; // #define KEY_MEDIA 226
- <I235> = 235; // #define KEY_SWITCHVIDEOMODE 227
- <I236> = 236; // #define KEY_KBDILLUMTOGGLE 228
- <I237> = 237; // #define KEY_KBDILLUMDOWN 229
- <I238> = 238; // #define KEY_KBDILLUMUP 230
- <I239> = 239; // #define KEY_SEND 231
- <I240> = 240; // #define KEY_REPLY 232
- <I241> = 241; // #define KEY_FORWARDMAIL 233
- <I242> = 242; // #define KEY_SAVE 234
- <I243> = 243; // #define KEY_DOCUMENTS 235
- <I244> = 244; // #define KEY_BATTERY 236
- <I245> = 245; // #define KEY_BLUETOOTH 237
- <I246> = 246; // #define KEY_WLAN 238
- <I247> = 247; // #define KEY_UWB 239
- <I248> = 248; // #define KEY_UNKNOWN 240
- <I249> = 249; // #define KEY_VIDEO_NEXT 241
- <I250> = 250; // #define KEY_VIDEO_PREV 242
- <I251> = 251; // #define KEY_BRIGHTNESS_CYCLE 243
- <I252> = 252; // #define KEY_BRIGHTNESS_ZERO 244
- <I253> = 253; // #define KEY_DISPLAY_OFF 245
-
- // Fake keycodes for virtual keys
- <LVL3> = 92;
- <MDSW> = 203;
- <ALT> = 204;
- <META> = 205;
- <SUPR> = 206;
- <HYPR> = 207;
-
- indicator 1 = "Caps Lock";
- indicator 2 = "Num Lock";
- indicator 3 = "Scroll Lock";
- indicator 4 = "Compose";
- indicator 5 = "Kana";
- indicator 6 = "Sleep";
- indicator 7 = "Suspend";
- indicator 8 = "Mute";
- indicator 9 = "Misc";
- indicator 10 = "Mail";
- indicator 11 = "Charging";
-
- alias <ALGR> = <RALT>;
-
- // For Brazilian ABNT2
- alias <KPPT> = <I129>;
-};
-
-// PC98
-xkb_keycodes "pc98" {
- include "evdev(evdev)"
-};
-
+// translation from evdev scancodes to something resembling xfree86 keycodes.
+
+default xkb_keycodes "evdev" {
+ minimum = 8;
+ maximum = 255;
+
+ # Added for pc105 compatibility
+ <LSGT> = 94;
+
+ <TLDE> = 49;
+ <AE01> = 10;
+ <AE02> = 11;
+ <AE03> = 12;
+ <AE04> = 13;
+ <AE05> = 14;
+ <AE06> = 15;
+ <AE07> = 16;
+ <AE08> = 17;
+ <AE09> = 18;
+ <AE10> = 19;
+ <AE11> = 20;
+ <AE12> = 21;
+ <BKSP> = 22;
+
+ <TAB> = 23;
+ <AD01> = 24;
+ <AD02> = 25;
+ <AD03> = 26;
+ <AD04> = 27;
+ <AD05> = 28;
+ <AD06> = 29;
+ <AD07> = 30;
+ <AD08> = 31;
+ <AD09> = 32;
+ <AD10> = 33;
+ <AD11> = 34;
+ <AD12> = 35;
+ <BKSL> = 51;
+ alias <AC12> = <BKSL>;
+ <RTRN> = 36;
+
+ <CAPS> = 66;
+ <AC01> = 38;
+ <AC02> = 39;
+ <AC03> = 40;
+ <AC04> = 41;
+ <AC05> = 42;
+ <AC06> = 43;
+ <AC07> = 44;
+ <AC08> = 45;
+ <AC09> = 46;
+ <AC10> = 47;
+ <AC11> = 48;
+
+ <LFSH> = 50;
+ <AB01> = 52;
+ <AB02> = 53;
+ <AB03> = 54;
+ <AB04> = 55;
+ <AB05> = 56;
+ <AB06> = 57;
+ <AB07> = 58;
+ <AB08> = 59;
+ <AB09> = 60;
+ <AB10> = 61;
+ <RTSH> = 62;
+
+ <LALT> = 64;
+ <LCTL> = 37;
+ <SPCE> = 65;
+ <RCTL> = 105;
+ <RALT> = 108;
+ // Microsoft keyboard extra keys
+ <LWIN> = 133;
+ <RWIN> = 134;
+ <COMP> = 135;
+ alias <MENU> = <COMP>;
+
+ <ESC> = 9;
+ <FK01> = 67;
+ <FK02> = 68;
+ <FK03> = 69;
+ <FK04> = 70;
+ <FK05> = 71;
+ <FK06> = 72;
+ <FK07> = 73;
+ <FK08> = 74;
+ <FK09> = 75;
+ <FK10> = 76;
+ <FK11> = 95;
+ <FK12> = 96;
+
+ <PRSC> = 107;
+ // <SYRQ> = 107;
+ <SCLK> = 78;
+ <PAUS> = 127;
+ // <BRK> = 419;
+
+ <INS> = 118;
+ <HOME> = 110;
+ <PGUP> = 112;
+ <DELE> = 119;
+ <END> = 115;
+ <PGDN> = 117;
+
+ <UP> = 111;
+ <LEFT> = 113;
+ <DOWN> = 116;
+ <RGHT> = 114;
+
+ <NMLK> = 77;
+ <KPDV> = 106;
+ <KPMU> = 63;
+ <KPSU> = 82;
+
+ <KP7> = 79;
+ <KP8> = 80;
+ <KP9> = 81;
+ <KPAD> = 86;
+
+ <KP4> = 83;
+ <KP5> = 84;
+ <KP6> = 85;
+
+ <KP1> = 87;
+ <KP2> = 88;
+ <KP3> = 89;
+ <KPEN> = 104;
+
+ <KP0> = 90;
+ <KPDL> = 91;
+ <KPEQ> = 125;
+
+ <FK13> = 191;
+ <FK14> = 192;
+ <FK15> = 193;
+ <FK16> = 194;
+ <FK17> = 195;
+ <FK18> = 196;
+ <FK19> = 197;
+ <FK20> = 198;
+ <FK21> = 199;
+ <FK22> = 200;
+ <FK23> = 201;
+ <FK24> = 202;
+
+ // Keys that are generated on Japanese keyboards
+
+ //<HZTG> = 93; // Hankaku/Zenkakau toggle - not actually used
+ alias <HZTG> = <TLDE>;
+ <HKTG> = 101; // Hiragana/Katakana toggle
+ <AB11> = 97; // backslash/underscore
+ <HENK> = 100; // Henkan
+ <MUHE> = 102; // Muhenkan
+ <AE13> = 132; // Yen
+ <KATA> = 98; // Katakana
+ <HIRA> = 99; // Hiragana
+ <JPCM> = 103; // KPJPComma
+ //<RO> = 97; // Romaji
+
+ // Keys that are generated on Korean keyboards
+
+ <HNGL> = 130; // Hangul Latin toggle
+ <HJCV> = 131; // Hangul to Hanja conversion
+
+ // Solaris compatibility
+
+ alias <LMTA> = <LWIN>;
+ alias <RMTA> = <RWIN>;
+ <MUTE> = 121;
+ <VOL-> = 122;
+ <VOL+> = 123;
+ <POWR> = 124;
+ <STOP> = 136;
+ <AGAI> = 137;
+ <PROP> = 138;
+ <UNDO> = 139;
+ <FRNT> = 140;
+ <COPY> = 141;
+ <OPEN> = 142;
+ <PAST> = 143;
+ <FIND> = 144;
+ <CUT> = 145;
+ <HELP> = 146;
+
+ // Extended keys that may be generated on "Internet" keyboards.
+ // evdev has standardize names for these.
+
+ <LNFD> = 109; // #define KEY_LINEFEED 101
+ <I120> = 120; // #define KEY_MACRO 112
+ <I126> = 126; // #define KEY_KPPLUSMINUS 118
+ <I128> = 128; // #define KEY_SCALE 120
+ <I129> = 129; // #define KEY_KPCOMMA 121
+ <I147> = 147; // #define KEY_MENU 139
+ <I148> = 148; // #define KEY_CALC 140
+ <I149> = 149; // #define KEY_SETUP 141
+ <I150> = 150; // #define KEY_SLEEP 142
+ <I151> = 151; // #define KEY_WAKEUP 143
+ <I152> = 152; // #define KEY_FILE 144
+ <I153> = 153; // #define KEY_SENDFILE 145
+ <I154> = 154; // #define KEY_DELETEFILE 146
+ <I155> = 155; // #define KEY_XFER 147
+ <I156> = 156; // #define KEY_PROG1 148
+ <I157> = 157; // #define KEY_PROG2 149
+ <I158> = 158; // #define KEY_WWW 150
+ <I159> = 159; // #define KEY_MSDOS 151
+ <I160> = 160; // #define KEY_COFFEE 152
+ <I161> = 161; // #define KEY_DIRECTION 153
+ <I162> = 162; // #define KEY_CYCLEWINDOWS 154
+ <I163> = 163; // #define KEY_MAIL 155
+ <I164> = 164; // #define KEY_BOOKMARKS 156
+ <I165> = 165; // #define KEY_COMPUTER 157
+ <I166> = 166; // #define KEY_BACK 158
+ <I167> = 167; // #define KEY_FORWARD 159
+ <I168> = 168; // #define KEY_CLOSECD 160
+ <I169> = 169; // #define KEY_EJECTCD 161
+ <I170> = 170; // #define KEY_EJECTCLOSECD 162
+ <I171> = 171; // #define KEY_NEXTSONG 163
+ <I172> = 172; // #define KEY_PLAYPAUSE 164
+ <I173> = 173; // #define KEY_PREVIOUSSONG 165
+ <I174> = 174; // #define KEY_STOPCD 166
+ <I175> = 175; // #define KEY_RECORD 167
+ <I176> = 176; // #define KEY_REWIND 168
+ <I177> = 177; // #define KEY_PHONE 169
+ <I178> = 178; // #define KEY_ISO 170
+ <I179> = 179; // #define KEY_CONFIG 171
+ <I180> = 180; // #define KEY_HOMEPAGE 172
+ <I181> = 181; // #define KEY_REFRESH 173
+ <I182> = 182; // #define KEY_EXIT 174
+ <I183> = 183; // #define KEY_MOVE 175
+ <I184> = 184; // #define KEY_EDIT 176
+ <I185> = 185; // #define KEY_SCROLLUP 177
+ <I186> = 186; // #define KEY_SCROLLDOWN 178
+ <I187> = 187; // #define KEY_KPLEFTPAREN 179
+ <I188> = 188; // #define KEY_KPRIGHTPAREN 180
+ <I189> = 189; // #define KEY_NEW 181
+ <I190> = 190; // #define KEY_REDO 182
+ <I208> = 208; // #define KEY_PLAYCD 200
+ <I209> = 209; // #define KEY_PAUSECD 201
+ <I210> = 210; // #define KEY_PROG3 202
+ <I211> = 211; // #define KEY_PROG4 203 conflicts with AB11
+ <I212> = 212; // #define KEY_DASHBOARD 204
+ <I213> = 213; // #define KEY_SUSPEND 205
+ <I214> = 214; // #define KEY_CLOSE 206
+ <I215> = 215; // #define KEY_PLAY 207
+ <I216> = 216; // #define KEY_FASTFORWARD 208
+ <I217> = 217; // #define KEY_BASSBOOST 209
+ <I218> = 218; // #define KEY_PRINT 210
+ <I219> = 219; // #define KEY_HP 211
+ <I220> = 220; // #define KEY_CAMERA 212
+ <I221> = 221; // #define KEY_SOUND 213
+ <I222> = 222; // #define KEY_QUESTION 214
+ <I223> = 223; // #define KEY_EMAIL 215
+ <I224> = 224; // #define KEY_CHAT 216
+ <I225> = 225; // #define KEY_SEARCH 217
+ <I226> = 226; // #define KEY_CONNECT 218
+ <I227> = 227; // #define KEY_FINANCE 219
+ <I228> = 228; // #define KEY_SPORT 220
+ <I229> = 229; // #define KEY_SHOP 221
+ <I230> = 230; // #define KEY_ALTERASE 222
+ <I231> = 231; // #define KEY_CANCEL 223
+ <I232> = 232; // #define KEY_BRIGHTNESSDOWN 224
+ <I233> = 233; // #define KEY_BRIGHTNESSUP 225
+ <I234> = 234; // #define KEY_MEDIA 226
+ <I235> = 235; // #define KEY_SWITCHVIDEOMODE 227
+ <I236> = 236; // #define KEY_KBDILLUMTOGGLE 228
+ <I237> = 237; // #define KEY_KBDILLUMDOWN 229
+ <I238> = 238; // #define KEY_KBDILLUMUP 230
+ <I239> = 239; // #define KEY_SEND 231
+ <I240> = 240; // #define KEY_REPLY 232
+ <I241> = 241; // #define KEY_FORWARDMAIL 233
+ <I242> = 242; // #define KEY_SAVE 234
+ <I243> = 243; // #define KEY_DOCUMENTS 235
+ <I244> = 244; // #define KEY_BATTERY 236
+ <I245> = 245; // #define KEY_BLUETOOTH 237
+ <I246> = 246; // #define KEY_WLAN 238
+ <I247> = 247; // #define KEY_UWB 239
+ <I248> = 248; // #define KEY_UNKNOWN 240
+ <I249> = 249; // #define KEY_VIDEO_NEXT 241
+ <I250> = 250; // #define KEY_VIDEO_PREV 242
+ <I251> = 251; // #define KEY_BRIGHTNESS_CYCLE 243
+ <I252> = 252; // #define KEY_BRIGHTNESS_ZERO 244
+ <I253> = 253; // #define KEY_DISPLAY_OFF 245
+
+ // Fake keycodes for virtual keys
+ <LVL3> = 92;
+ <MDSW> = 203;
+ <ALT> = 204;
+ <META> = 205;
+ <SUPR> = 206;
+ <HYPR> = 207;
+
+ indicator 1 = "Caps Lock";
+ indicator 2 = "Num Lock";
+ indicator 3 = "Scroll Lock";
+ indicator 4 = "Compose";
+ indicator 5 = "Kana";
+ indicator 6 = "Sleep";
+ indicator 7 = "Suspend";
+ indicator 8 = "Mute";
+ indicator 9 = "Misc";
+ indicator 10 = "Mail";
+ indicator 11 = "Charging";
+
+ alias <ALGR> = <RALT>;
+
+ // For Brazilian ABNT2
+ alias <KPPT> = <I129>;
+};
+
+// PC98
+xkb_keycodes "pc98" {
+ include "evdev(evdev)"
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/fujitsu b/xorg-server/xkeyboard-config/keycodes/fujitsu
index c36a3a984..373621038 100644
--- a/xorg-server/xkeyboard-config/keycodes/fujitsu
+++ b/xorg-server/xkeyboard-config/keycodes/fujitsu
@@ -1,187 +1,186 @@
-// $Xorg: fujitsu,v 1.4 2001/02/09 02:05:52 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-default xkb_keycodes "138" {
-
- minimum= 8;
- maximum= 255;
-
- <ESC> = 37;
- <AE01> = 38;
- <AE02> = 39;
- <AE03> = 40;
- <AE04> = 41;
- <AE05> = 42;
- <AE06> = 43;
- <AE07> = 44;
- <AE08> = 45;
- <AE09> = 46;
- <AE10> = 47;
- <AE11> = 48;
- <AE12> = 49;
- <TLDE> = 50;
- <BKSP> = 51;
-
- <TAB> = 61;
- <AD01> = 62;
- <AD02> = 63;
- <AD03> = 64;
- <AD04> = 65;
- <AD05> = 66;
- <AD06> = 67;
- <AD07> = 68;
- <AD08> = 69;
- <AD09> = 70;
- <AD10> = 71;
- <AD11> = 72;
- <AD12> = 73;
-
- <LCTL> = 84;
- <AC01> = 85;
- <AC02> = 86;
- <AC03> = 87;
- <AC04> = 88;
- <AC05> = 89;
- <AC06> = 90;
- <AC07> = 91;
- <AC08> = 92;
- <AC09> = 93;
- <AC10> = 94;
- <AC11> = 95;
- <BKSL> = 96;
- <RTRN> = 97;
-
- <LFSH> = 107;
- <AB01> = 108;
- <AB02> = 109;
- <AB03> = 110;
- <AB04> = 111;
- <AB05> = 112;
- <AB06> = 113;
- <AB07> = 114;
- <AB08> = 115;
- <AB09> = 116;
- <AB10> = 117;
- <AB11> = 52;
- <RTSH> = 118;
-
- <CAPS> = 127;
- <LALT> = 27;
- <LMTA> = 128;
- <UNK4> = 125;
- <SPCE> = 129;
- <UNK5> = 10;
- <RMTA> = 130;
- <RALT> = 23;
- <COMP> = 75;
- <LNFD> = 119;
- <UNK6> = 56;
-
- <FK01> = 13;
- <FK02> = 14;
- <FK03> = 16;
- <FK04> = 18;
- <FK05> = 20;
- <FK06> = 22;
- <FK07> = 24;
- <FK08> = 25;
- <FK09> = 26;
- <FK10> = 15;
- <FK11> = 17;
- <FK12> = 19;
- <FK13> = 137;
- <FK14> = 138;
- <FK15> = 139;
- <FK16> = 140;
- <FK17> = 141;
- <FK18> = 142;
- <FK19> = 143;
- <FK20> = 144;
- <FK21> = 145;
- <FK22> = 146;
- <FK23> = 147;
- <FK24> = 148;
- <FK25> = 153;
- <FK26> = 154;
- <FK27> = 155;
- <FK28> = 156;
- <FK29> = 149;
- <FK30> = 150;
- <FK31> = 151;
- <FK32> = 152;
-
- <UNDO> = 34;
- <COPY> = 59;
- <PAST> = 81;
- <CUT> = 105;
- <HELP> = 126;
-
- <BREA> = 9;
- <PRSC> = 30;
- <KNJI> = 21;
- <PAUS> = 29;
-
- <UNK0> = 82;
- <UNK1> = 83;
- <UNK2> = 12;
- <PGUP> = 35;
- <HOME> = 32;
- <PGDN> = 36;
- <UNK3> = 28;
- <DEL> = 74;
- <INS> = 60;
- <UP> = 33;
- <DOWN> = 103;
- <LEFT> = 57;
- <RGHT> = 80;
- <EXEC> = 11;
-
- <KPMU> = 55;
- <KPDV> = 54;
- <KPAD> = 133;
- <KPSU> = 79;
-
- <KP7> = 76;
- <KP8> = 77;
- <KP9> = 78;
- <KPEQ> = 53;
-
- <KP4> = 99;
- <KP5> = 100;
- <KP6> = 101;
- <KPDC> = 58;
-
- <KP1> = 120;
- <KP2> = 121;
- <KP3> = 122;
- <KPEN> = 98;
-
- <KP0> = 102;
- <KP00> = 31;
-
- <UNK7> = 123;
- <UNK8> = 124;
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+default xkb_keycodes "138" {
+
+ minimum= 8;
+ maximum= 255;
+
+ <ESC> = 37;
+ <AE01> = 38;
+ <AE02> = 39;
+ <AE03> = 40;
+ <AE04> = 41;
+ <AE05> = 42;
+ <AE06> = 43;
+ <AE07> = 44;
+ <AE08> = 45;
+ <AE09> = 46;
+ <AE10> = 47;
+ <AE11> = 48;
+ <AE12> = 49;
+ <TLDE> = 50;
+ <BKSP> = 51;
+
+ <TAB> = 61;
+ <AD01> = 62;
+ <AD02> = 63;
+ <AD03> = 64;
+ <AD04> = 65;
+ <AD05> = 66;
+ <AD06> = 67;
+ <AD07> = 68;
+ <AD08> = 69;
+ <AD09> = 70;
+ <AD10> = 71;
+ <AD11> = 72;
+ <AD12> = 73;
+
+ <LCTL> = 84;
+ <AC01> = 85;
+ <AC02> = 86;
+ <AC03> = 87;
+ <AC04> = 88;
+ <AC05> = 89;
+ <AC06> = 90;
+ <AC07> = 91;
+ <AC08> = 92;
+ <AC09> = 93;
+ <AC10> = 94;
+ <AC11> = 95;
+ <BKSL> = 96;
+ <RTRN> = 97;
+
+ <LFSH> = 107;
+ <AB01> = 108;
+ <AB02> = 109;
+ <AB03> = 110;
+ <AB04> = 111;
+ <AB05> = 112;
+ <AB06> = 113;
+ <AB07> = 114;
+ <AB08> = 115;
+ <AB09> = 116;
+ <AB10> = 117;
+ <AB11> = 52;
+ <RTSH> = 118;
+
+ <CAPS> = 127;
+ <LALT> = 27;
+ <LMTA> = 128;
+ <UNK4> = 125;
+ <SPCE> = 129;
+ <UNK5> = 10;
+ <RMTA> = 130;
+ <RALT> = 23;
+ <COMP> = 75;
+ <LNFD> = 119;
+ <UNK6> = 56;
+
+ <FK01> = 13;
+ <FK02> = 14;
+ <FK03> = 16;
+ <FK04> = 18;
+ <FK05> = 20;
+ <FK06> = 22;
+ <FK07> = 24;
+ <FK08> = 25;
+ <FK09> = 26;
+ <FK10> = 15;
+ <FK11> = 17;
+ <FK12> = 19;
+ <FK13> = 137;
+ <FK14> = 138;
+ <FK15> = 139;
+ <FK16> = 140;
+ <FK17> = 141;
+ <FK18> = 142;
+ <FK19> = 143;
+ <FK20> = 144;
+ <FK21> = 145;
+ <FK22> = 146;
+ <FK23> = 147;
+ <FK24> = 148;
+ <FK25> = 153;
+ <FK26> = 154;
+ <FK27> = 155;
+ <FK28> = 156;
+ <FK29> = 149;
+ <FK30> = 150;
+ <FK31> = 151;
+ <FK32> = 152;
+
+ <UNDO> = 34;
+ <COPY> = 59;
+ <PAST> = 81;
+ <CUT> = 105;
+ <HELP> = 126;
+
+ <BREA> = 9;
+ <PRSC> = 30;
+ <KNJI> = 21;
+ <PAUS> = 29;
+
+ <UNK0> = 82;
+ <UNK1> = 83;
+ <UNK2> = 12;
+ <PGUP> = 35;
+ <HOME> = 32;
+ <PGDN> = 36;
+ <UNK3> = 28;
+ <DEL> = 74;
+ <INS> = 60;
+ <UP> = 33;
+ <DOWN> = 103;
+ <LEFT> = 57;
+ <RGHT> = 80;
+ <EXEC> = 11;
+
+ <KPMU> = 55;
+ <KPDV> = 54;
+ <KPAD> = 133;
+ <KPSU> = 79;
+
+ <KP7> = 76;
+ <KP8> = 77;
+ <KP9> = 78;
+ <KPEQ> = 53;
+
+ <KP4> = 99;
+ <KP5> = 100;
+ <KP6> = 101;
+ <KPDC> = 58;
+
+ <KP1> = 120;
+ <KP2> = 121;
+ <KP3> = 122;
+ <KPEN> = 98;
+
+ <KP0> = 102;
+ <KP00> = 31;
+
+ <UNK7> = 123;
+ <UNK8> = 124;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/hp b/xorg-server/xkeyboard-config/keycodes/hp
index 0c98072d3..544389578 100644
--- a/xorg-server/xkeyboard-config/keycodes/hp
+++ b/xorg-server/xkeyboard-config/keycodes/hp
@@ -1,271 +1,270 @@
-// $Xorg: hp,v 1.4 2001/02/09 02:05:52 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-default xkb_keycodes "hp-101" {
-
- <TLDE> = 23;
- <AE01> = 31;
- <AE02> = 39;
- <AE03> = 47;
- <AE04> = 46;
- <AE05> = 55;
- <AE06> = 63;
- <AE07> = 70;
- <AE08> = 71;
- <AE09> = 79;
- <AE10> = 78;
- <AE11> = 87;
- <AE12> = 94;
- <BKSP> = 111;
-
- <TAB> = 22;
- <AD01> = 30;
- <AD02> = 38;
- <AD03> = 45;
- <AD04> = 54;
- <AD05> = 53;
- <AD06> = 62;
- <AD07> = 69;
- <AD08> = 76;
- <AD09> = 77;
- <AD10> = 86;
- <AD11> = 93;
- <AD12> = 100;
- <BKSL> = 101;
-
- <CAPS> = 29;
- <AC01> = 37;
- <AC02> = 36;
- <AC03> = 44;
- <AC04> = 52;
- <AC05> = 61;
- <AC06> = 60;
- <AC07> = 68;
- <AC08> = 75;
- <AC09> = 84;
- <AC10> = 85;
- <AC11> = 91;
- <RTRN> = 99;
-
- <LFSH> = 27;
- <AB01> = 35;
- <AB02> = 43;
- <AB03> = 42;
- <AB04> = 51;
- <AB05> = 59;
- <AB06> = 58;
- <AB07> = 67;
- <AB08> = 74;
- <AB09> = 82;
- <AB10> = 83;
- <RTSH> = 98;
-
- <LCTL> = 26;
- <LALT> = 34;
- <SPCE> = 50;
- <RALT> = 66;
- <RCTL> = 97;
-
- <ESC> = 17;
- <FK01> = 16;
- <FK02> = 24;
- <FK03> = 32;
- <FK04> = 40;
- <FK05> = 48;
- <FK06> = 56;
- <FK07> = 64;
- <FK08> = 72;
- <FK09> = 80;
- <FK10> = 88;
- <FK11> = 95;
- <FK12> = 103;
-
- <PRSC> = 96;
- <SCLK> = 104;
- <PAUS> = 107;
-
- <INS> = 112;
- <HOME> = 119;
- <PGUP> = 120;
- <DELE> = 109;
- <END> = 110;
- <PGDN> = 118;
-
- <UP> = 108;
- <LEFT> = 106;
- <DOWN> = 105;
- <RGHT> = 115;
-
- <NMLK> = 127;
- <KPDV> = 128;
- <KPMU> = 135;
- <KPSU> = 141;
-
- <KP7> = 117;
- <KP8> = 126;
- <KP9> = 134;
- <KPAD> = 133;
-
- <KP4> = 116;
- <KP5> = 124;
- <KP6> = 125;
-
- <KP1> = 114;
- <KP2> = 123;
- <KP3> = 131;
- <KPEN> = 130;
-
- <KP0> = 121;
- <KPDL> = 122;
-
- indicator 1 = "Caps Lock";
- indicator 2 = "Num Lock";
- indicator 3 = "Scroll Lock";
-};
-
-xkb_keycodes "hil" {
-
- <TLDE> = 71;
- <AE01> = 70;
- <AE02> = 69;
- <AE03> = 68;
- <AE04> = 67;
- <AE05> = 66;
- <AE06> = 65;
- <AE07> = 64;
- <AE08> = 96;
- <AE09> = 97;
- <AE10> = 98;
- <AE11> = 99;
- <AE12> = 100;
- <BKSP> = 101;
-
- <TAB> = 63;
- <AD01> = 62;
- <AD02> = 61;
- <AD03> = 60;
- <AD04> = 59;
- <AD05> = 58;
- <AD06> = 57;
- <AD07> = 56;
- <AD08> = 104;
- <AD09> = 105;
- <AD10> = 106;
- <AD11> = 107;
- <AD12> = 108;
- <BKSL> = 109;
-
- <CAPS> = 55;
- <AC01> = 53;
- <AC02> = 52;
- <AC03> = 51;
- <AC04> = 50;
- <AC05> = 49;
- <AC06> = 48;
- <AC07> = 112;
- <AC08> = 113;
- <AC09> = 114;
- <AC10> = 115;
- <AC11> = 116;
- <RTRN> = 117;
-
- <LFSH> = 13;
- <AB01> = 36;
- <AB02> = 35;
- <AB03> = 34;
- <AB04> = 33;
- <AB05> = 32;
- <AB06> = 128;
- <AB07> = 120;
- <AB08> = 121;
- <AB09> = 122;
- <AB10> = 123;
- <RTSH> = 12;
-
- <LCTL> = 14;
- <LALT> = 11;
- <SPCE> = 129;
- <RALT> = 10;
- <PRSC> = 87;
-
- <ESC> = 39;
- <BRK> = 15;
- <STOP> = 86;
- <FK01> = 84;
- <FK02> = 83;
- <FK03> = 82;
- <FK04> = 81;
- <MENU> = 80;
- <SYST> = 88;
- <FK05> = 89;
- <FK06> = 90;
- <FK07> = 91;
- <FK08> = 92;
- <FK09> = 45;
- <FK10> = 41;
- <FK11> = 43;
- <FK12> = 47;
- <CLRL> = 94;
- <CLR> = 95;
-
- <INSL> = 102;
- <DELL> = 103;
- <INSC> = 110;
- <DELC> = 111;
-
- <HOME> = 118;
- <PGUP> = 119;
- <PGDN> = 127;
- <SELE> = 125;
-
- <UP> = 134;
- <LEFT> = 132;
- <DOWN> = 133;
- <RGHT> = 135;
-
- <KPDV> = 25;
- <KPMU> = 29;
- <KPAD> = 27;
- <KPSU> = 31;
-
- <KP7> = 21;
- <KP8> = 17;
- <KP9> = 19;
- <KPEN> = 23;
-
- <KP4> = 16;
- <KP5> = 18;
- <KP6> = 20;
- <KPSP> = 22;
-
- <KP1> = 24;
- <KP2> = 26;
- <KP3> = 28;
- <KPTB> = 46;
-
- <KP0> = 30;
- <KPDL> = 44;
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+default xkb_keycodes "hp-101" {
+
+ <TLDE> = 23;
+ <AE01> = 31;
+ <AE02> = 39;
+ <AE03> = 47;
+ <AE04> = 46;
+ <AE05> = 55;
+ <AE06> = 63;
+ <AE07> = 70;
+ <AE08> = 71;
+ <AE09> = 79;
+ <AE10> = 78;
+ <AE11> = 87;
+ <AE12> = 94;
+ <BKSP> = 111;
+
+ <TAB> = 22;
+ <AD01> = 30;
+ <AD02> = 38;
+ <AD03> = 45;
+ <AD04> = 54;
+ <AD05> = 53;
+ <AD06> = 62;
+ <AD07> = 69;
+ <AD08> = 76;
+ <AD09> = 77;
+ <AD10> = 86;
+ <AD11> = 93;
+ <AD12> = 100;
+ <BKSL> = 101;
+
+ <CAPS> = 29;
+ <AC01> = 37;
+ <AC02> = 36;
+ <AC03> = 44;
+ <AC04> = 52;
+ <AC05> = 61;
+ <AC06> = 60;
+ <AC07> = 68;
+ <AC08> = 75;
+ <AC09> = 84;
+ <AC10> = 85;
+ <AC11> = 91;
+ <RTRN> = 99;
+
+ <LFSH> = 27;
+ <AB01> = 35;
+ <AB02> = 43;
+ <AB03> = 42;
+ <AB04> = 51;
+ <AB05> = 59;
+ <AB06> = 58;
+ <AB07> = 67;
+ <AB08> = 74;
+ <AB09> = 82;
+ <AB10> = 83;
+ <RTSH> = 98;
+
+ <LCTL> = 26;
+ <LALT> = 34;
+ <SPCE> = 50;
+ <RALT> = 66;
+ <RCTL> = 97;
+
+ <ESC> = 17;
+ <FK01> = 16;
+ <FK02> = 24;
+ <FK03> = 32;
+ <FK04> = 40;
+ <FK05> = 48;
+ <FK06> = 56;
+ <FK07> = 64;
+ <FK08> = 72;
+ <FK09> = 80;
+ <FK10> = 88;
+ <FK11> = 95;
+ <FK12> = 103;
+
+ <PRSC> = 96;
+ <SCLK> = 104;
+ <PAUS> = 107;
+
+ <INS> = 112;
+ <HOME> = 119;
+ <PGUP> = 120;
+ <DELE> = 109;
+ <END> = 110;
+ <PGDN> = 118;
+
+ <UP> = 108;
+ <LEFT> = 106;
+ <DOWN> = 105;
+ <RGHT> = 115;
+
+ <NMLK> = 127;
+ <KPDV> = 128;
+ <KPMU> = 135;
+ <KPSU> = 141;
+
+ <KP7> = 117;
+ <KP8> = 126;
+ <KP9> = 134;
+ <KPAD> = 133;
+
+ <KP4> = 116;
+ <KP5> = 124;
+ <KP6> = 125;
+
+ <KP1> = 114;
+ <KP2> = 123;
+ <KP3> = 131;
+ <KPEN> = 130;
+
+ <KP0> = 121;
+ <KPDL> = 122;
+
+ indicator 1 = "Caps Lock";
+ indicator 2 = "Num Lock";
+ indicator 3 = "Scroll Lock";
+};
+
+xkb_keycodes "hil" {
+
+ <TLDE> = 71;
+ <AE01> = 70;
+ <AE02> = 69;
+ <AE03> = 68;
+ <AE04> = 67;
+ <AE05> = 66;
+ <AE06> = 65;
+ <AE07> = 64;
+ <AE08> = 96;
+ <AE09> = 97;
+ <AE10> = 98;
+ <AE11> = 99;
+ <AE12> = 100;
+ <BKSP> = 101;
+
+ <TAB> = 63;
+ <AD01> = 62;
+ <AD02> = 61;
+ <AD03> = 60;
+ <AD04> = 59;
+ <AD05> = 58;
+ <AD06> = 57;
+ <AD07> = 56;
+ <AD08> = 104;
+ <AD09> = 105;
+ <AD10> = 106;
+ <AD11> = 107;
+ <AD12> = 108;
+ <BKSL> = 109;
+
+ <CAPS> = 55;
+ <AC01> = 53;
+ <AC02> = 52;
+ <AC03> = 51;
+ <AC04> = 50;
+ <AC05> = 49;
+ <AC06> = 48;
+ <AC07> = 112;
+ <AC08> = 113;
+ <AC09> = 114;
+ <AC10> = 115;
+ <AC11> = 116;
+ <RTRN> = 117;
+
+ <LFSH> = 13;
+ <AB01> = 36;
+ <AB02> = 35;
+ <AB03> = 34;
+ <AB04> = 33;
+ <AB05> = 32;
+ <AB06> = 128;
+ <AB07> = 120;
+ <AB08> = 121;
+ <AB09> = 122;
+ <AB10> = 123;
+ <RTSH> = 12;
+
+ <LCTL> = 14;
+ <LALT> = 11;
+ <SPCE> = 129;
+ <RALT> = 10;
+ <PRSC> = 87;
+
+ <ESC> = 39;
+ <BRK> = 15;
+ <STOP> = 86;
+ <FK01> = 84;
+ <FK02> = 83;
+ <FK03> = 82;
+ <FK04> = 81;
+ <MENU> = 80;
+ <SYST> = 88;
+ <FK05> = 89;
+ <FK06> = 90;
+ <FK07> = 91;
+ <FK08> = 92;
+ <FK09> = 45;
+ <FK10> = 41;
+ <FK11> = 43;
+ <FK12> = 47;
+ <CLRL> = 94;
+ <CLR> = 95;
+
+ <INSL> = 102;
+ <DELL> = 103;
+ <INSC> = 110;
+ <DELC> = 111;
+
+ <HOME> = 118;
+ <PGUP> = 119;
+ <PGDN> = 127;
+ <SELE> = 125;
+
+ <UP> = 134;
+ <LEFT> = 132;
+ <DOWN> = 133;
+ <RGHT> = 135;
+
+ <KPDV> = 25;
+ <KPMU> = 29;
+ <KPAD> = 27;
+ <KPSU> = 31;
+
+ <KP7> = 21;
+ <KP8> = 17;
+ <KP9> = 19;
+ <KPEN> = 23;
+
+ <KP4> = 16;
+ <KP5> = 18;
+ <KP6> = 20;
+ <KPSP> = 22;
+
+ <KP1> = 24;
+ <KP2> = 26;
+ <KP3> = 28;
+ <KPTB> = 46;
+
+ <KP0> = 30;
+ <KPDL> = 44;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/ibm b/xorg-server/xkeyboard-config/keycodes/ibm
index 303d4b360..3ce84a70a 100644
--- a/xorg-server/xkeyboard-config/keycodes/ibm
+++ b/xorg-server/xkeyboard-config/keycodes/ibm
@@ -1,151 +1,150 @@
-// $Xorg: ibm,v 1.4 2001/02/09 02:05:52 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-xkb_keycodes "rs6k-101" {
-
- <TLDE> = 9;
- <AE01> = 10;
- <AE02> = 11;
- <AE03> = 12;
- <AE04> = 13;
- <AE05> = 14;
- <AE06> = 15;
- <AE07> = 16;
- <AE08> = 17;
- <AE09> = 18;
- <AE10> = 19;
- <AE11> = 20;
- <AE12> = 21;
- <BKSP> = 23;
-
- <TAB> = 24;
- <AD01> = 25;
- <AD02> = 26;
- <AD03> = 27;
- <AD04> = 28;
- <AD05> = 29;
- <AD06> = 30;
- <AD07> = 31;
- <AD08> = 32;
- <AD09> = 33;
- <AD10> = 34;
- <AD11> = 35;
- <AD12> = 36;
- <BKSL> = 37;
-
- <CAPS> = 38;
- <AC01> = 39;
- <AC02> = 40;
- <AC03> = 41;
- <AC04> = 42;
- <AC05> = 43;
- <AC06> = 44;
- <AC07> = 45;
- <AC08> = 46;
- <AC09> = 47;
- <AC10> = 48;
- <AC11> = 49;
- <RTRN> = 51;
-
- <LFSH> = 52;
- <AB01> = 54;
- <AB02> = 55;
- <AB03> = 56;
- <AB04> = 57;
- <AB05> = 58;
- <AB06> = 59;
- <AB07> = 60;
- <AB08> = 61;
- <AB09> = 62;
- <AB10> = 63;
- <RTSH> = 65;
-
- <LCTL> = 66;
- <LALT> = 68;
- <SPCE> = 69;
- <RALT> = 70;
- <RCTL> = 72;
-
- <ESC> = 118;
- <FK01> = 120;
- <FK02> = 121;
- <FK03> = 122;
- <FK04> = 123;
- <FK05> = 124;
- <FK06> = 125;
- <FK07> = 126;
- <FK08> = 127;
- <FK09> = 128;
- <FK10> = 129;
- <FK11> = 130;
- <FK12> = 131;
-
- <PRSC> = 132;
- <SCLK> = 133;
- <PAUS> = 134;
-
- <INS> = 83;
- <HOME> = 88;
- <PGUP> = 93;
- <DELE> = 84;
- <END> = 89;
- <PGDN> = 94;
-
- <UP> = 91;
- <LEFT> = 87;
- <DOWN> = 92;
- <RGHT> = 97;
-
- <NMLK> = 98;
- <KPDV> = 103;
- <KPMU> = 108;
- <KPSU> = 113;
-
- <KP7> = 99;
- <KP8> = 104;
- <KP9> = 109;
- <KPAD> = 114;
-
- <KP4> = 100;
- <KP5> = 105;
- <KP6> = 110;
-
- <KP1> = 101;
- <KP2> = 106;
- <KP3> = 111;
- <KPEN> = 116;
-
- <KP0> = 107;
- <KPDL> = 112;
-
- indicator 1 = "Caps Lock";
- indicator 2 = "Num Lock";
- indicator 3 = "Scroll Lock";
-};
-xkb_keycodes "rs6k-102" {
- include "ibm(rs6k-101)"
- <LSGT> = 53;
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+xkb_keycodes "rs6k-101" {
+
+ <TLDE> = 9;
+ <AE01> = 10;
+ <AE02> = 11;
+ <AE03> = 12;
+ <AE04> = 13;
+ <AE05> = 14;
+ <AE06> = 15;
+ <AE07> = 16;
+ <AE08> = 17;
+ <AE09> = 18;
+ <AE10> = 19;
+ <AE11> = 20;
+ <AE12> = 21;
+ <BKSP> = 23;
+
+ <TAB> = 24;
+ <AD01> = 25;
+ <AD02> = 26;
+ <AD03> = 27;
+ <AD04> = 28;
+ <AD05> = 29;
+ <AD06> = 30;
+ <AD07> = 31;
+ <AD08> = 32;
+ <AD09> = 33;
+ <AD10> = 34;
+ <AD11> = 35;
+ <AD12> = 36;
+ <BKSL> = 37;
+
+ <CAPS> = 38;
+ <AC01> = 39;
+ <AC02> = 40;
+ <AC03> = 41;
+ <AC04> = 42;
+ <AC05> = 43;
+ <AC06> = 44;
+ <AC07> = 45;
+ <AC08> = 46;
+ <AC09> = 47;
+ <AC10> = 48;
+ <AC11> = 49;
+ <RTRN> = 51;
+
+ <LFSH> = 52;
+ <AB01> = 54;
+ <AB02> = 55;
+ <AB03> = 56;
+ <AB04> = 57;
+ <AB05> = 58;
+ <AB06> = 59;
+ <AB07> = 60;
+ <AB08> = 61;
+ <AB09> = 62;
+ <AB10> = 63;
+ <RTSH> = 65;
+
+ <LCTL> = 66;
+ <LALT> = 68;
+ <SPCE> = 69;
+ <RALT> = 70;
+ <RCTL> = 72;
+
+ <ESC> = 118;
+ <FK01> = 120;
+ <FK02> = 121;
+ <FK03> = 122;
+ <FK04> = 123;
+ <FK05> = 124;
+ <FK06> = 125;
+ <FK07> = 126;
+ <FK08> = 127;
+ <FK09> = 128;
+ <FK10> = 129;
+ <FK11> = 130;
+ <FK12> = 131;
+
+ <PRSC> = 132;
+ <SCLK> = 133;
+ <PAUS> = 134;
+
+ <INS> = 83;
+ <HOME> = 88;
+ <PGUP> = 93;
+ <DELE> = 84;
+ <END> = 89;
+ <PGDN> = 94;
+
+ <UP> = 91;
+ <LEFT> = 87;
+ <DOWN> = 92;
+ <RGHT> = 97;
+
+ <NMLK> = 98;
+ <KPDV> = 103;
+ <KPMU> = 108;
+ <KPSU> = 113;
+
+ <KP7> = 99;
+ <KP8> = 104;
+ <KP9> = 109;
+ <KPAD> = 114;
+
+ <KP4> = 100;
+ <KP5> = 105;
+ <KP6> = 110;
+
+ <KP1> = 101;
+ <KP2> = 106;
+ <KP3> = 111;
+ <KPEN> = 116;
+
+ <KP0> = 107;
+ <KPDL> = 112;
+
+ indicator 1 = "Caps Lock";
+ indicator 2 = "Num Lock";
+ indicator 3 = "Scroll Lock";
+};
+xkb_keycodes "rs6k-102" {
+ include "ibm(rs6k-101)"
+ <LSGT> = 53;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/macintosh b/xorg-server/xkeyboard-config/keycodes/macintosh
index 5b0a2614a..a6e6ee061 100644
--- a/xorg-server/xkeyboard-config/keycodes/macintosh
+++ b/xorg-server/xkeyboard-config/keycodes/macintosh
@@ -1,4 +1,3 @@
-// $XConsortium: macintosh /main/10 1996/01/24 12:17:35 kaleb $
//
//Copyright (c) 1996 X Consortium
//
@@ -26,7 +25,6 @@
//other dealings in this Software without prior written authorization
//from the X Consortium.
//
-// $XFree86: xc/programs/xkbcomp/keycodes/macintosh,v 1.4 2001/10/02 19:57:00 alanh Exp $
//
default xkb_keycodes "macintosh" {
include "xfree86"
@@ -208,4 +206,3 @@ xkb_keycodes "jisevdev" {
alias <KANA> = <HJCV>; // Switch to kana mode
alias <EISU> = <HNGL>; // Switch to alphanumeric mode
};
-
diff --git a/xorg-server/xkeyboard-config/keycodes/sgi_vndr/indigo b/xorg-server/xkeyboard-config/keycodes/sgi_vndr/indigo
index 6605ade53..2f5f45bfc 100644
--- a/xorg-server/xkeyboard-config/keycodes/sgi_vndr/indigo
+++ b/xorg-server/xkeyboard-config/keycodes/sgi_vndr/indigo
@@ -1,140 +1,139 @@
-// $Xorg: indigo,v 1.3 2000/08/17 19:54:39 cpqbld Exp $
-default xkb_keycodes "pc101" {
- minimum= 8;
- maximum= 255;
-
- <TLDE> = 62;
- <AE01> = 15;
- <AE02> = 21;
- <AE03> = 22;
- <AE04> = 29;
- <AE05> = 30;
- <AE06> = 37;
- <AE07> = 38;
- <AE08> = 45;
- <AE09> = 46;
- <AE10> = 53;
- <AE11> = 54;
- <AE12> = 61;
- <BKSP> = 68;
-
- <TAB> = 16;
- <AD01> = 17;
- <AD02> = 23;
- <AD03> = 24;
- <AD04> = 31;
- <AD05> = 32;
- <AD06> = 39;
- <AD07> = 40;
- <AD08> = 47;
- <AD09> = 48;
- <AD10> = 55;
- <AD11> = 56;
- <AD12> = 63;
- <RTRN> = 58;
-
- <CAPS> = 11;
- <AC01> = 18;
- <AC02> = 19;
- <AC03> = 25;
- <AC04> = 26;
- <AC05> = 33;
- <AC06> = 34;
- <AC07> = 41;
- <AC08> = 42;
- <AC09> = 49;
- <AC10> = 50;
- <AC11> = 57;
-
- <LFSH> = 13;
- <AB01> = 27;
- <AB02> = 28;
- <AB03> = 35;
- <AB04> = 36;
- <AB05> = 43;
- <AB06> = 44;
- <AB07> = 51;
- <AB08> = 52;
- <AB09> = 59;
- <AB10> = 60;
- <RTSH> = 12;
- <BKSL> = 64;
-
- <LALT> = 91;
- <LCTL> = 10;
- <SPCE> = 90;
- <RCTL> = 93;
- <RALT> = 92;
-
- <ESC> = 14;
- <FK01> = 94;
- <FK02> = 95;
- <FK03> = 96;
- <FK04> = 97;
- <FK05> = 98;
- <FK06> = 99;
- <FK07> = 100;
- <FK08> = 101;
- <FK09> = 102;
- <FK10> = 103;
- <FK11> = 104;
- <FK12> = 105;
-
- <PRSC> = 106;
- <SCLK> = 107;
- <PAUS> = 108;
-
- <INS> = 109;
- <HOME> = 110;
- <PGUP> = 111;
- <DELE> = 69;
- <END> = 112;
- <PGDN> = 113;
-
- <UP> = 88;
- <LEFT> = 80;
- <DOWN> = 81;
- <RGHT> = 87;
-
- <NMLK> = 114;
- <KPDV> = 115;
- <KPMU> = 116;
- <KPSU> = 83;
-
- <KP7> = 74;
- <KP8> = 75;
- <KP9> = 82;
- <KPAD> = 117;
-
- <KP4> = 70;
- <KP5> = 76;
- <KP6> = 77;
-
- <KP1> = 65;
- <KP2> = 71;
- <KP3> = 72;
- <KPEN> = 89;
-
- <KP0> = 66;
- <KPDL> = 73;
-
- alias <AE00> = <TLDE>;
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
- alias <AA01> = <LALT>;
- alias <AA09> = <RALT>;
- alias <ALGR> = <RALT>;
- alias <AA12> = <RCTL>;
-
- virtual indicator 1 = "L1";
- virtual indicator 2 = "L2";
- virtual indicator 3 = "L3";
- virtual indicator 4 = "L4";
- indicator 5 = "Caps Lock";
- indicator 6 = "Num Lock";
- indicator 7 = "Scroll Lock";
-};
-xkb_keycodes "pc102" {
- include "sgi_vndr/indigo(pc101)"
- <LSGT> = 118;
-};
+default xkb_keycodes "pc101" {
+ minimum= 8;
+ maximum= 255;
+
+ <TLDE> = 62;
+ <AE01> = 15;
+ <AE02> = 21;
+ <AE03> = 22;
+ <AE04> = 29;
+ <AE05> = 30;
+ <AE06> = 37;
+ <AE07> = 38;
+ <AE08> = 45;
+ <AE09> = 46;
+ <AE10> = 53;
+ <AE11> = 54;
+ <AE12> = 61;
+ <BKSP> = 68;
+
+ <TAB> = 16;
+ <AD01> = 17;
+ <AD02> = 23;
+ <AD03> = 24;
+ <AD04> = 31;
+ <AD05> = 32;
+ <AD06> = 39;
+ <AD07> = 40;
+ <AD08> = 47;
+ <AD09> = 48;
+ <AD10> = 55;
+ <AD11> = 56;
+ <AD12> = 63;
+ <RTRN> = 58;
+
+ <CAPS> = 11;
+ <AC01> = 18;
+ <AC02> = 19;
+ <AC03> = 25;
+ <AC04> = 26;
+ <AC05> = 33;
+ <AC06> = 34;
+ <AC07> = 41;
+ <AC08> = 42;
+ <AC09> = 49;
+ <AC10> = 50;
+ <AC11> = 57;
+
+ <LFSH> = 13;
+ <AB01> = 27;
+ <AB02> = 28;
+ <AB03> = 35;
+ <AB04> = 36;
+ <AB05> = 43;
+ <AB06> = 44;
+ <AB07> = 51;
+ <AB08> = 52;
+ <AB09> = 59;
+ <AB10> = 60;
+ <RTSH> = 12;
+ <BKSL> = 64;
+
+ <LALT> = 91;
+ <LCTL> = 10;
+ <SPCE> = 90;
+ <RCTL> = 93;
+ <RALT> = 92;
+
+ <ESC> = 14;
+ <FK01> = 94;
+ <FK02> = 95;
+ <FK03> = 96;
+ <FK04> = 97;
+ <FK05> = 98;
+ <FK06> = 99;
+ <FK07> = 100;
+ <FK08> = 101;
+ <FK09> = 102;
+ <FK10> = 103;
+ <FK11> = 104;
+ <FK12> = 105;
+
+ <PRSC> = 106;
+ <SCLK> = 107;
+ <PAUS> = 108;
+
+ <INS> = 109;
+ <HOME> = 110;
+ <PGUP> = 111;
+ <DELE> = 69;
+ <END> = 112;
+ <PGDN> = 113;
+
+ <UP> = 88;
+ <LEFT> = 80;
+ <DOWN> = 81;
+ <RGHT> = 87;
+
+ <NMLK> = 114;
+ <KPDV> = 115;
+ <KPMU> = 116;
+ <KPSU> = 83;
+
+ <KP7> = 74;
+ <KP8> = 75;
+ <KP9> = 82;
+ <KPAD> = 117;
+
+ <KP4> = 70;
+ <KP5> = 76;
+ <KP6> = 77;
+
+ <KP1> = 65;
+ <KP2> = 71;
+ <KP3> = 72;
+ <KPEN> = 89;
+
+ <KP0> = 66;
+ <KPDL> = 73;
+
+ alias <AE00> = <TLDE>;
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+ alias <AA01> = <LALT>;
+ alias <AA09> = <RALT>;
+ alias <ALGR> = <RALT>;
+ alias <AA12> = <RCTL>;
+
+ virtual indicator 1 = "L1";
+ virtual indicator 2 = "L2";
+ virtual indicator 3 = "L3";
+ virtual indicator 4 = "L4";
+ indicator 5 = "Caps Lock";
+ indicator 6 = "Num Lock";
+ indicator 7 = "Scroll Lock";
+};
+xkb_keycodes "pc102" {
+ include "sgi_vndr/indigo(pc101)"
+ <LSGT> = 118;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/sgi_vndr/indy b/xorg-server/xkeyboard-config/keycodes/sgi_vndr/indy
index e16a0cbc1..aab3749b5 100644
--- a/xorg-server/xkeyboard-config/keycodes/sgi_vndr/indy
+++ b/xorg-server/xkeyboard-config/keycodes/sgi_vndr/indy
@@ -1,203 +1,202 @@
-// $Xorg: indy,v 1.3 2000/08/17 19:54:39 cpqbld Exp $
-default xkb_keycodes "universal" {
- minimum= 8;
- maximum= 255;
- include "sgi_vndr/indy(pc105)"
- alternate <BKSL> = 91;
- alternate <BKSL> = 100;
- alternate <BKSL> = 101;
-};
-xkb_keycodes "pc101" {
- minimum= 8;
- maximum= 255;
-
- <TLDE> = 22;
- <AE01> = 30;
- <AE02> = 38;
- <AE03> = 46;
- <AE04> = 45;
- <AE05> = 54;
- <AE06> = 62;
- <AE07> = 69;
- <AE08> = 70;
- <AE09> = 78;
- <AE10> = 77;
- <AE11> = 86;
- <AE12> = 93;
- <BKSP> = 110;
-
- <TAB> = 21;
- <AD01> = 29;
- <AD02> = 37;
- <AD03> = 44;
- <AD04> = 53;
- <AD05> = 52;
- <AD06> = 61;
- <AD07> = 68;
- <AD08> = 75;
- <AD09> = 76;
- <AD10> = 85;
- <AD11> = 92;
- <AD12> = 99;
- <RTRN> = 98;
-
- <CAPS> = 28;
- <AC01> = 36;
- <AC02> = 35;
- <AC03> = 43;
- <AC04> = 51;
- <AC05> = 60;
- <AC06> = 59;
- <AC07> = 67;
- <AC08> = 74;
- <AC09> = 83;
- <AC10> = 84;
- <AC11> = 90;
-
- <LFSH> = 26;
- <AB01> = 34;
- <AB02> = 42;
- <AB03> = 41;
- <AB04> = 50;
- <AB05> = 58;
- <AB06> = 57;
- <AB07> = 66;
- <AB08> = 73;
- <AB09> = 81;
- <AB10> = 82;
- <RTSH> = 97;
- <BKSL> = 100;
-
- <LALT> = 33;
- <LCTL> = 25;
- <SPCE> = 49;
- <RCTL> = 96;
- <RALT> = 65;
-
- <ESC> = 16;
- <FK01> = 15;
- <FK02> = 23;
- <FK03> = 31;
- <FK04> = 39;
- <FK05> = 47;
- <FK06> = 55;
- <FK07> = 63;
- <FK08> = 71;
- <FK09> = 79;
- <FK10> = 87;
- <FK11> = 94;
- <FK12> = 102;
-
- <PRSC> = 95;
- <SCLK> = 103;
- <PAUS> = 106;
-
- <INS> = 111;
- <HOME> = 118;
- <PGUP> = 119;
- <DELE> = 108;
- <END> = 109;
- <PGDN> = 117;
-
- <UP> = 107;
- <LEFT> = 105;
- <DOWN> = 104;
- <RGHT> = 114;
-
- <NMLK> = 126;
- <KPDV> = 127;
- <KPMU> = 134;
- <KPSU> = 140;
-
- <KP7> = 116;
- <KP8> = 125;
- <KP9> = 133;
- <KPAD> = 132;
-
- <KP4> = 115;
- <KP5> = 123;
- <KP6> = 124;
-
- <KP1> = 113;
- <KP2> = 122;
- <KP3> = 130;
- <KPEN> = 129;
-
- <KP0> = 120;
- <KPDL> = 121;
-
- alias <AE00> = <TLDE>;
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
- alias <AA01> = <LALT>;
- alias <AA09> = <RALT>;
- alias <ALGR> = <RALT>;
- alias <AA12> = <RCTL>;
-
- virtual indicator 1 = "L1";
- virtual indicator 2 = "L2";
- virtual indicator 3 = "L3";
- virtual indicator 4 = "L4";
- indicator 5 = "Caps Lock";
- indicator 6 = "Num Lock";
- indicator 7 = "Scroll Lock";
-
-};
-xkb_keycodes "pc102" {
- <BKSL> = 91;
- <LSGT> = 27;
- augment "sgi_vndr/indy(pc101)"
- maximum= 255;
- minimum= 8;
-};
-xkb_keycodes "pc104" {
- include "sgi_vndr/indy(pc101)"
- minimum= 8;
- maximum= 255;
-
- // These key names are here to support so-called "Windows95"
- // keyboards like the Microsoft Natural keyboard.
- <LWIN> = 147;
- <RWIN> = 148;
- <MENU> = 149;
-};
-xkb_keycodes "pc105" {
- <LSGT> = 27;
- augment "sgi_vndr/indy(pc104)"
- minimum= 8;
- maximum= 255;
-};
-xkb_keycodes "jp106" {
- <HZTG> = 22;
- <AB11> = 89;
- <AC12> = 91;
- <NFER> = 141;
- <XFER> = 142;
- <HKTG> = 143;
- alias <TLDE> = <HZTG>;
- alias <AE00> = <HZTG>;
- alias <AE13> = <BKSL>;
- augment "sgi_vndr/indy(pc101)"
- minimum= 8;
- maximum= 255;
-};
-// can be combined with any other "indy" keycode
-// description to add virtual keys which can be
-// used to implement an overlay-based numeric
-// keypad.
-partial hidden xkb_keycodes "overlayKeypad" {
- <KO7> = 17;
- <KO8> = 18;
- <KO9> = 19;
- <KO6> = 146;
- <KO5> = 145;
- <KO4> = 144;
- <KO1> = 136;
- <KO2> = 137;
- <KO3> = 138;
- <KO0> = 135;
- <KODL> = 139;
-};
-partial hidden xkb_keycodes "shiftLock" {
- indicator 5 = "Shift Lock";
-};
+default xkb_keycodes "universal" {
+ minimum= 8;
+ maximum= 255;
+ include "sgi_vndr/indy(pc105)"
+ alternate <BKSL> = 91;
+ alternate <BKSL> = 100;
+ alternate <BKSL> = 101;
+};
+xkb_keycodes "pc101" {
+ minimum= 8;
+ maximum= 255;
+
+ <TLDE> = 22;
+ <AE01> = 30;
+ <AE02> = 38;
+ <AE03> = 46;
+ <AE04> = 45;
+ <AE05> = 54;
+ <AE06> = 62;
+ <AE07> = 69;
+ <AE08> = 70;
+ <AE09> = 78;
+ <AE10> = 77;
+ <AE11> = 86;
+ <AE12> = 93;
+ <BKSP> = 110;
+
+ <TAB> = 21;
+ <AD01> = 29;
+ <AD02> = 37;
+ <AD03> = 44;
+ <AD04> = 53;
+ <AD05> = 52;
+ <AD06> = 61;
+ <AD07> = 68;
+ <AD08> = 75;
+ <AD09> = 76;
+ <AD10> = 85;
+ <AD11> = 92;
+ <AD12> = 99;
+ <RTRN> = 98;
+
+ <CAPS> = 28;
+ <AC01> = 36;
+ <AC02> = 35;
+ <AC03> = 43;
+ <AC04> = 51;
+ <AC05> = 60;
+ <AC06> = 59;
+ <AC07> = 67;
+ <AC08> = 74;
+ <AC09> = 83;
+ <AC10> = 84;
+ <AC11> = 90;
+
+ <LFSH> = 26;
+ <AB01> = 34;
+ <AB02> = 42;
+ <AB03> = 41;
+ <AB04> = 50;
+ <AB05> = 58;
+ <AB06> = 57;
+ <AB07> = 66;
+ <AB08> = 73;
+ <AB09> = 81;
+ <AB10> = 82;
+ <RTSH> = 97;
+ <BKSL> = 100;
+
+ <LALT> = 33;
+ <LCTL> = 25;
+ <SPCE> = 49;
+ <RCTL> = 96;
+ <RALT> = 65;
+
+ <ESC> = 16;
+ <FK01> = 15;
+ <FK02> = 23;
+ <FK03> = 31;
+ <FK04> = 39;
+ <FK05> = 47;
+ <FK06> = 55;
+ <FK07> = 63;
+ <FK08> = 71;
+ <FK09> = 79;
+ <FK10> = 87;
+ <FK11> = 94;
+ <FK12> = 102;
+
+ <PRSC> = 95;
+ <SCLK> = 103;
+ <PAUS> = 106;
+
+ <INS> = 111;
+ <HOME> = 118;
+ <PGUP> = 119;
+ <DELE> = 108;
+ <END> = 109;
+ <PGDN> = 117;
+
+ <UP> = 107;
+ <LEFT> = 105;
+ <DOWN> = 104;
+ <RGHT> = 114;
+
+ <NMLK> = 126;
+ <KPDV> = 127;
+ <KPMU> = 134;
+ <KPSU> = 140;
+
+ <KP7> = 116;
+ <KP8> = 125;
+ <KP9> = 133;
+ <KPAD> = 132;
+
+ <KP4> = 115;
+ <KP5> = 123;
+ <KP6> = 124;
+
+ <KP1> = 113;
+ <KP2> = 122;
+ <KP3> = 130;
+ <KPEN> = 129;
+
+ <KP0> = 120;
+ <KPDL> = 121;
+
+ alias <AE00> = <TLDE>;
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+ alias <AA01> = <LALT>;
+ alias <AA09> = <RALT>;
+ alias <ALGR> = <RALT>;
+ alias <AA12> = <RCTL>;
+
+ virtual indicator 1 = "L1";
+ virtual indicator 2 = "L2";
+ virtual indicator 3 = "L3";
+ virtual indicator 4 = "L4";
+ indicator 5 = "Caps Lock";
+ indicator 6 = "Num Lock";
+ indicator 7 = "Scroll Lock";
+
+};
+xkb_keycodes "pc102" {
+ <BKSL> = 91;
+ <LSGT> = 27;
+ augment "sgi_vndr/indy(pc101)"
+ maximum= 255;
+ minimum= 8;
+};
+xkb_keycodes "pc104" {
+ include "sgi_vndr/indy(pc101)"
+ minimum= 8;
+ maximum= 255;
+
+ // These key names are here to support so-called "Windows95"
+ // keyboards like the Microsoft Natural keyboard.
+ <LWIN> = 147;
+ <RWIN> = 148;
+ <MENU> = 149;
+};
+xkb_keycodes "pc105" {
+ <LSGT> = 27;
+ augment "sgi_vndr/indy(pc104)"
+ minimum= 8;
+ maximum= 255;
+};
+xkb_keycodes "jp106" {
+ <HZTG> = 22;
+ <AB11> = 89;
+ <AC12> = 91;
+ <NFER> = 141;
+ <XFER> = 142;
+ <HKTG> = 143;
+ alias <TLDE> = <HZTG>;
+ alias <AE00> = <HZTG>;
+ alias <AE13> = <BKSL>;
+ augment "sgi_vndr/indy(pc101)"
+ minimum= 8;
+ maximum= 255;
+};
+// can be combined with any other "indy" keycode
+// description to add virtual keys which can be
+// used to implement an overlay-based numeric
+// keypad.
+partial hidden xkb_keycodes "overlayKeypad" {
+ <KO7> = 17;
+ <KO8> = 18;
+ <KO9> = 19;
+ <KO6> = 146;
+ <KO5> = 145;
+ <KO4> = 144;
+ <KO1> = 136;
+ <KO2> = 137;
+ <KO3> = 138;
+ <KO0> = 135;
+ <KODL> = 139;
+};
+partial hidden xkb_keycodes "shiftLock" {
+ indicator 5 = "Shift Lock";
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/sgi_vndr/iris b/xorg-server/xkeyboard-config/keycodes/sgi_vndr/iris
index a4118a6b4..18068175d 100644
--- a/xorg-server/xkeyboard-config/keycodes/sgi_vndr/iris
+++ b/xorg-server/xkeyboard-config/keycodes/sgi_vndr/iris
@@ -1,11 +1,10 @@
-// $Xorg: iris,v 1.3 2000/08/17 19:54:39 cpqbld Exp $
-default xkb_keycodes "iris" {
- include "sgi_vndr/indigo(pc101)"
- indicator 1 = "L1";
- indicator 2 = "L2";
- indicator 3 = "L3";
- indicator 4 = "L4";
- indicator 5 = "Caps Lock";
- indicator 6 = "Num Lock";
- indicator 7 = "Scroll Lock";
-};
+default xkb_keycodes "iris" {
+ include "sgi_vndr/indigo(pc101)"
+ indicator 1 = "L1";
+ indicator 2 = "L2";
+ indicator 3 = "L3";
+ indicator 4 = "L4";
+ indicator 5 = "Caps Lock";
+ indicator 6 = "Num Lock";
+ indicator 7 = "Scroll Lock";
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/sony b/xorg-server/xkeyboard-config/keycodes/sony
index 0e720b422..def1eaf6b 100644
--- a/xorg-server/xkeyboard-config/keycodes/sony
+++ b/xorg-server/xkeyboard-config/keycodes/sony
@@ -1,142 +1,141 @@
-// $Xorg: sony,v 1.4 2001/02/09 02:05:52 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-xkb_keycodes "nwp5461" {
-
- <ESC> = 18;
- <AE01> = 19;
- <AE02> = 20;
- <AE03> = 21;
- <AE04> = 22;
- <AE05> = 23;
- <AE06> = 24;
- <AE07> = 25;
- <AE08> = 26;
- <AE09> = 27;
- <AE10> = 28;
- <AE11> = 29;
- <AE12> = 30;
- <BKSL> = 31;
- <BKSP> = 32;
-
- <TAB> = 33;
- <AD01> = 34;
- <AD02> = 35;
- <AD03> = 36;
- <AD04> = 37;
- <AD05> = 38;
- <AD06> = 39;
- <AD07> = 40;
- <AD08> = 41;
- <AD09> = 42;
- <AD10> = 43;
- <AD11> = 44;
- <AD12> = 45;
- <DELE> = 46;
-
- <LCTL> = 47;
- <AC01> = 48;
- <AC02> = 49;
- <AC03> = 50;
- <AC04> = 51;
- <AC05> = 52;
- <AC06> = 53;
- <AC07> = 54;
- <AC08> = 55;
- <AC09> = 56;
- <AC10> = 57;
- <AC11> = 58;
- <TLDE> = 59;
- <RTRN> = 60;
-
- <LFSH> = 61;
- <AB01> = 62;
- <AB02> = 63;
- <AB03> = 64;
- <AB04> = 65;
- <AB05> = 66;
- <AB06> = 67;
- <AB07> = 68;
- <AB08> = 69;
- <AB09> = 70;
- <AB10> = 71;
- <AB11> = 72;
- <RTSH> = 73;
-
- <LALT> = 74;
- <CAPS> = 75;
- <STOP> = 76;
- <SPCE> = 77;
- <CUT> = 78;
- <EXEC> = 81;
-
- <FK01> = 8;
- <FK02> = 9;
- <FK03> = 10;
- <FK04> = 11;
- <FK05> = 12;
- <FK06> = 13;
- <FK07> = 14;
- <FK08> = 15;
- <FK09> = 16;
- <FK10> = 17;
- <FK11> = 111;
- <FK12> = 112;
-
- <HELP> = 113;
- <INS> = 114;
- <CLR> = 115;
- <PGUP> = 116;
- <PGDN> = 117;
-
- <KPTB> = 109;
- <UP> = 95;
- <LEFT> = 98;
- <DOWN> = 99;
- <RGHT> = 100;
-
- <KPMU> = 107;
- <KPDV> = 108;
- <KPAD> = 89;
-
- <KP7> = 82;
- <KP8> = 83;
- <KP9> = 84;
- <KPSU> = 85;
-
- <KP4> = 86;
- <KP5> = 87;
- <KP6> = 88;
- <KPSP> = 93;
-
- <KP1> = 90;
- <KP2> = 91;
- <KP3> = 92;
- <KPEN> = 97;
-
- <KP0> = 94;
- <KPDC> = 96;
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+xkb_keycodes "nwp5461" {
+
+ <ESC> = 18;
+ <AE01> = 19;
+ <AE02> = 20;
+ <AE03> = 21;
+ <AE04> = 22;
+ <AE05> = 23;
+ <AE06> = 24;
+ <AE07> = 25;
+ <AE08> = 26;
+ <AE09> = 27;
+ <AE10> = 28;
+ <AE11> = 29;
+ <AE12> = 30;
+ <BKSL> = 31;
+ <BKSP> = 32;
+
+ <TAB> = 33;
+ <AD01> = 34;
+ <AD02> = 35;
+ <AD03> = 36;
+ <AD04> = 37;
+ <AD05> = 38;
+ <AD06> = 39;
+ <AD07> = 40;
+ <AD08> = 41;
+ <AD09> = 42;
+ <AD10> = 43;
+ <AD11> = 44;
+ <AD12> = 45;
+ <DELE> = 46;
+
+ <LCTL> = 47;
+ <AC01> = 48;
+ <AC02> = 49;
+ <AC03> = 50;
+ <AC04> = 51;
+ <AC05> = 52;
+ <AC06> = 53;
+ <AC07> = 54;
+ <AC08> = 55;
+ <AC09> = 56;
+ <AC10> = 57;
+ <AC11> = 58;
+ <TLDE> = 59;
+ <RTRN> = 60;
+
+ <LFSH> = 61;
+ <AB01> = 62;
+ <AB02> = 63;
+ <AB03> = 64;
+ <AB04> = 65;
+ <AB05> = 66;
+ <AB06> = 67;
+ <AB07> = 68;
+ <AB08> = 69;
+ <AB09> = 70;
+ <AB10> = 71;
+ <AB11> = 72;
+ <RTSH> = 73;
+
+ <LALT> = 74;
+ <CAPS> = 75;
+ <STOP> = 76;
+ <SPCE> = 77;
+ <CUT> = 78;
+ <EXEC> = 81;
+
+ <FK01> = 8;
+ <FK02> = 9;
+ <FK03> = 10;
+ <FK04> = 11;
+ <FK05> = 12;
+ <FK06> = 13;
+ <FK07> = 14;
+ <FK08> = 15;
+ <FK09> = 16;
+ <FK10> = 17;
+ <FK11> = 111;
+ <FK12> = 112;
+
+ <HELP> = 113;
+ <INS> = 114;
+ <CLR> = 115;
+ <PGUP> = 116;
+ <PGDN> = 117;
+
+ <KPTB> = 109;
+ <UP> = 95;
+ <LEFT> = 98;
+ <DOWN> = 99;
+ <RGHT> = 100;
+
+ <KPMU> = 107;
+ <KPDV> = 108;
+ <KPAD> = 89;
+
+ <KP7> = 82;
+ <KP8> = 83;
+ <KP9> = 84;
+ <KPSU> = 85;
+
+ <KP4> = 86;
+ <KP5> = 87;
+ <KP6> = 88;
+ <KPSP> = 93;
+
+ <KP1> = 90;
+ <KP2> = 91;
+ <KP3> = 92;
+ <KPEN> = 97;
+
+ <KP0> = 94;
+ <KPDC> = 96;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/sun b/xorg-server/xkeyboard-config/keycodes/sun
index a6ffdb39f..7cb38e304 100644
--- a/xorg-server/xkeyboard-config/keycodes/sun
+++ b/xorg-server/xkeyboard-config/keycodes/sun
@@ -1,954 +1,950 @@
-// $XdotOrg: $
-// $Xorg: sun,v 1.4 2001/02/09 02:05:52 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-// ---------------------------------------------------------------------------
-// Copyright 2004 Sun Microsystems, Inc. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice (including the next
-// paragraph) shall be included in all copies or substantial portions of the
-// Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-// DEALINGS IN THE SOFTWARE.
-//
-// ---------------------------------------------------------------------------
-//
-// $XFree86: xc/programs/xkbcomp/keycodes/sun,v 3.6 2003/08/09 14:30:48 pascal Exp $
-//
-
-default xkb_keycodes "type4" {
-
- minimum= 8;
- maximum= 255;
-
- <ESC> = 36;
- <AE01> = 37;
- <AE02> = 38;
- <AE03> = 39;
- <AE04> = 40;
- <AE05> = 41;
- <AE06> = 42;
- <AE07> = 43;
- <AE08> = 44;
- <AE09> = 45;
- <AE10> = 46;
- <AE11> = 47;
- <AE12> = 48;
- <TLDE> = 49;
- <BKSP> = 50;
-
- <TAB> = 60;
- <AD01> = 61;
- <AD02> = 62;
- <AD03> = 63;
- <AD04> = 64;
- <AD05> = 65;
- <AD06> = 66;
- <AD07> = 67;
- <AD08> = 68;
- <AD09> = 69;
- <AD10> = 70;
- <AD11> = 71;
- <AD12> = 72;
- <DELE> = 73;
-
- <LCTL> = 83;
- <AC01> = 84;
- <AC02> = 85;
- <AC03> = 86;
- <AC04> = 87;
- <AC05> = 88;
- <AC06> = 89;
- <AC07> = 90;
- <AC08> = 91;
- <AC09> = 92;
- <AC10> = 93;
- <AC11> = 94;
- <BKSL> = 95;
- <RTRN> = 96;
-
- <LFSH> = 106;
- <AB01> = 107;
- <AB02> = 108;
- <AB03> = 109;
- <AB04> = 110;
- <AB05> = 111;
- <AB06> = 112;
- <AB07> = 113;
- <AB08> = 114;
- <AB09> = 115;
- <AB10> = 116;
- <RTSH> = 117;
- <LNFD> = 118;
-
- <HELP> = 125;
- <CAPS> = 126;
- <LALT> = 26;
- <LMTA> = 127;
- <SPCE> = 128;
- <RMTA> = 129;
- <COMP> = 74;
- <ALGR> = 20;
- alias <RALT> = <ALGR>;
-
- <FK01> = 12;
- <FK02> = 13;
- <FK03> = 15;
- <FK04> = 17;
- <FK05> = 19;
- <FK06> = 21;
- <FK07> = 23;
- <FK08> = 24;
- <FK09> = 25;
- <FK10> = 14;
- <FK11> = 16;
- <FK12> = 18;
-
- <STOP> = 8;
- <AGAI> = 10;
- <PROP> = 32;
- <UNDO> = 33;
- <FRNT> = 56;
- <COPY> = 58;
- <OPEN> = 79;
- <PAST> = 80;
- <FIND> = 102;
- <CUT> = 104;
-
- <PRSC> = 29;
- <SCLK> = 30;
- <PAUS> = 28;
-
- <NMLK> = 105;
- <KPEQ> = 52;
- <KPDV> = 53;
- <KPMU> = 54;
- <KPSU> = 78;
-
- <KP7> = 75;
- <KP8> = 76;
- <KP9> = 77;
- <KPAD> = 132;
-
- <KP4> = 98;
- <KP5> = 99;
- <KP6> = 100;
-
- <KP1> = 119;
- <KP2> = 120;
- <KP3> = 121;
- <KPEN> = 97;
-
- <KP0> = 101;
- <KPDL> = 57;
- indicator 4 = "Caps Lock";
- indicator 3 = "Compose";
- indicator 2 = "Scroll Lock";
- indicator 1 = "Num Lock";
-};
-
-xkb_keycodes "type5" {
-
- minimum= 8;
- maximum= 255;
-
- <ESC> = 36;
- <AE01> = 37;
- <AE02> = 38;
- <AE03> = 39;
- <AE04> = 40;
- <AE05> = 41;
- <AE06> = 42;
- <AE07> = 43;
- <AE08> = 44;
- <AE09> = 45;
- <AE10> = 46;
- <AE11> = 47;
- <AE12> = 48;
- <TLDE> = 49;
- <BKSP> = 50;
-
- <TAB> = 60;
- <AD01> = 61;
- <AD02> = 62;
- <AD03> = 63;
- <AD04> = 64;
- <AD05> = 65;
- <AD06> = 66;
- <AD07> = 67;
- <AD08> = 68;
- <AD09> = 69;
- <AD10> = 70;
- <AD11> = 71;
- <AD12> = 72;
- <DELE> = 73;
- <COMP> = 74;
- <ALGR> = 20;
- alias <RALT> = <ALGR>;
-
- <LCTL> = 83;
- <AC01> = 84;
- <AC02> = 85;
- <AC03> = 86;
- <AC04> = 87;
- <AC05> = 88;
- <AC06> = 89;
- <AC07> = 90;
- <AC08> = 91;
- <AC09> = 92;
- <AC10> = 93;
- <AC11> = 94;
- <BKSL> = 95;
- <RTRN> = 96;
-
- <LFSH> = 106;
- <AB01> = 107;
- <AB02> = 108;
- <AB03> = 109;
- <AB04> = 110;
- <AB05> = 111;
- <AB06> = 112;
- <AB07> = 113;
- <AB08> = 114;
- <AB09> = 115;
- <AB10> = 116;
- <RTSH> = 117;
-
- <LALT> = 26;
- <CAPS> = 126;
- <LMTA> = 127;
- <SPCE> = 128;
- <RMTA> = 129;
-
- <FK01> = 12;
- <FK02> = 13;
- <FK03> = 15;
- <FK04> = 17;
- <FK05> = 19;
- <FK06> = 21;
- <FK07> = 23;
- <FK08> = 24;
- <FK09> = 25;
- <FK10> = 14;
- <FK11> = 16;
- <FK12> = 18;
- <STOP> = 8;
- <AGAI> = 10;
- <PROP> = 32;
- <UNDO> = 33;
- <FRNT> = 56;
- <COPY> = 58;
- <OPEN> = 79;
- <PAST> = 80;
- <FIND> = 102;
- <CUT> = 104;
-
- <PRSC> = 29;
- <SCLK> = 30;
- <PAUS> = 28;
-
- <NMLK> = 105;
- <KPDV> = 53;
- <KPMU> = 54;
- <KPSU> = 78;
-
- <KP7> = 75;
- <KP8> = 76;
- <KP9> = 77;
- <KPAD> = 132;
-
- <KP4> = 98;
- <KP5> = 99;
- <KP6> = 100;
-
- <KP1> = 119;
- <KP2> = 120;
- <KP3> = 121;
- <KPEN> = 97;
-
- <KP0> = 101;
- <KPDL> = 57;
-
- <UP> = 27;
- <LEFT> = 31;
- <DOWN> = 34;
- <RGHT> = 35;
-
- <INS> = 51;
- <HOME> = 59;
- <END> = 81;
- <PGUP> = 103;
- <PGDN> = 130;
- <HELP> = 125;
-
- <MUTE> = 52;
- <VOL-> = 9;
- <VOL+> = 11;
- <POWR> = 55;
- indicator 4 = "Caps Lock";
- indicator 3 = "Compose";
- indicator 2 = "Scroll Lock";
- indicator 1 = "Num Lock";
-};
-
-xkb_keycodes "type4tuv" {
- include "sun(type4)"
- <LSGT> = 131;
- <BRCR> = 22;
-};
-
-xkb_keycodes "type4_ca" {
- include "sun(type4)"
- <LSGT> = 131;
-};
-
-xkb_keycodes "type4_jp" {
- include "sun(type4)"
- <EXEC> = 122;
- <KANJ> = 123;
- <HENK> = 124;
- <BRCR> = 22;
- alias <UNDR> = <LNFD>;
-};
-
-xkb_keycodes "type4_euro" {
- include "sun(type4)"
- <LSGT> = 131;
-};
-
-xkb_keycodes "type5tuv" {
- include "sun(type5)"
- <LSGT> = 131;
-};
-
-xkb_keycodes "type5_jp" {
- include "sun(type5)"
- <EXEC> = 122;
- <KANJ> = 123;
- <HENK> = 124;
- <UNDR> = 118;
-};
-
-xkb_keycodes "type5_euro" {
- include "sun(type5)"
- <LSGT> = 131;
-};
-
-xkb_keycodes "type5hobo" {
-
- minimum= 8;
- maximum= 255;
-
- <ESC> = 36;
- <AE01> = 37;
- <AE02> = 38;
- <AE03> = 39;
- <AE04> = 40;
- <AE05> = 41;
- <AE06> = 42;
- <AE07> = 43;
- <AE08> = 44;
- <AE09> = 45;
- <AE10> = 46;
- <AE11> = 47;
- <AE12> = 48;
- <TLDE> = 49;
- <BKSP> = 50;
-
- <TAB> = 60;
- <AD01> = 61;
- <AD02> = 62;
- <AD03> = 63;
- <AD04> = 64;
- <AD05> = 65;
- <AD06> = 66;
- <AD07> = 67;
- <AD08> = 68;
- <AD09> = 69;
- <AD10> = 70;
- <AD11> = 71;
- <AD12> = 72;
- <DELE> = 73;
- <COMP> = 74;
- <ALGR> = 20;
- alias <RALT> = <ALGR>;
-
- <LCTL> = 83;
- <AC01> = 84;
- <AC02> = 85;
- <AC03> = 86;
- <AC04> = 87;
- <AC05> = 88;
- <AC06> = 89;
- <AC07> = 90;
- <AC08> = 91;
- <AC09> = 92;
- <AC10> = 93;
- <AC11> = 94;
- <BKSL> = 95;
- <RTRN> = 96;
-
- <LFSH> = 106;
- <AB01> = 107;
- <AB02> = 108;
- <AB03> = 109;
- <AB04> = 110;
- <AB05> = 111;
- <AB06> = 112;
- <AB07> = 113;
- <AB08> = 114;
- <AB09> = 115;
- <AB10> = 116;
- <RTSH> = 117;
-
- <LALT> = 26;
- <CAPS> = 126;
- <LMTA> = 127;
- <SPCE> = 128;
- <RMTA> = 129;
-
- <FK01> = 12;
- <FK02> = 13;
- <FK03> = 15;
- <FK04> = 17;
- <FK05> = 19;
- <FK06> = 21;
- <FK07> = 23;
- <FK08> = 24;
- <FK09> = 25;
- <FK10> = 14;
- <FK11> = 16;
- <FK12> = 18;
- <STOP> = 8;
- <AGAI> = 10;
- <PROP> = 32;
- <UNDO> = 33;
- <FRNT> = 56;
- <COPY> = 58;
- <OPEN> = 79;
- <PAST> = 80;
- <FIND> = 102;
- <CUT> = 104;
-
- <PRSC> = 29;
- <SCLK> = 30;
- <PAUS> = 28;
-
- <NMLK> = 105;
-// <KPDV> = 53;
-// <KPMU> = 54;
-// <KPSU> = 78;
-
-// <KP7> = 75;
-// <KP8> = 76;
-// <KP9> = 77;
-// <KPAD> = 132;
-
-// <KP4> = 98;
-// <KP5> = 99;
-// <KP6> = 100;
-
-// <KP1> = 119;
-// <KP2> = 120;
-// <KP3> = 121;
-// <KPEN> = 97;
-
-// <KP0> = 101;
-// <KPDL> = 57;
-
- <UP> = 27;
- <LEFT> = 31;
- <DOWN> = 34;
- <RGHT> = 35;
-
- <INS> = 51;
- <HOME> = 59;
- <END> = 81;
- <PGUP> = 103;
- <PGDN> = 130;
- <HELP> = 125;
-
- <MUTE> = 52;
- <VOL-> = 9;
- <VOL+> = 11;
- <POWR> = 55;
- indicator 4 = "Caps Lock";
- indicator 3 = "Compose";
- indicator 2 = "Scroll Lock";
- indicator 1 = "Num Lock";
-};
-
-xkb_keycodes "type5tuvhobo" {
- include "sun(type5hobo)"
- <LSGT> = 131;
-
-};
-
-xkb_keycodes "type5_jphobo" {
- include "sun(type5hobo)"
- <EXEC> = 122;
- <KANJ> = 123;
- <HENK> = 124;
- <UNDR> = 118;
-};
-
-xkb_keycodes "type6" {
- include "sun(type5)"
-};
-
-xkb_keycodes "type6tuv" {
- include "sun(type5tuv)"
-};
-
-xkb_keycodes "type6unix" {
- include "sun(type5)"
-};
-
-xkb_keycodes "type6_jp" {
- include "sun(type5_jp)"
-};
-
-xkb_keycodes "type6_euro" {
- include "sun(type5_euro)"
-};
-
-// Even though this is labeled as _usb, I verified these keycodes as accurate
-// on my type5 serial and type6 serial keyboards as well on linux-2.6 boxes.
-// I'm not sure where the "type5" keycodes above are coming from...
-xkb_keycodes "type6_usb" {
- include "xfree86"
-
- <STOP> = 232;
- <AGAI> = 133;
- <PROP> = 134;
- <UNDO> = 135;
- <FRNT> = 140;
- <COPY> = 248;
- <OPEN> = 191;
- <PAST> = 192;
- <FIND> = 122;
- <CUT> = 188;
-
- <HELP> = 245;
-
- // The blank has keycode 239 on my type6 serial kb, but 134 on
- // my type6 usb keyboard (same as <PROP>)
- <BLNK> = 239;
-
- // AltGr + PrScr actually sends a different keycode
- <SYRQ> = 92;
-
- <MUTE> = 160;
- <VOL-> = 174;
- <VOL+> = 176;
- <POWR> = 222;
-
- indicator 4 = "Compose";
-};
-
-xkb_keycodes "type6tuv_usb" {
- include "sun(type6_usb)"
- <LSGT> = 94;
-// <BKSL> = 51;
-};
-
-xkb_keycodes "type6_jp_usb" {
- include "sun(type6_usb)"
- alias <UNDR> = <KPDC>; // 123
- alias <EXEC> = <I0B>; // 139
- alias <KANJ> = <I0A>; // 138
- alias <HENK> = <XFER>; // 129
- indicator 5 = "Kana";
-};
-
-xkb_keycodes "type5_se" {
-
- minimum= 8;
- maximum= 255;
-
- // Row G
- <HELP> = 125;
- //
- <ESC> = 36;
- //
- <FK01> = 12;
- <FK02> = 13;
- <FK03> = 15;
- <FK04> = 17;
- //
- <FK05> = 19;
- <FK06> = 21;
- <FK07> = 23;
- <FK08> = 24;
- //
- <FK09> = 25;
- <FK10> = 14;
- <FK11> = 16;
- <FK12> = 18;
- //
- <PRSC> = 29;
- <SCLK> = 30;
- <PAUS> = 28;
- //
- <MUTE> = 52;
- <VOL-> = 9;
- <VOL+> = 11;
- <POWR> = 55;
- // End Row G
-
- // Row F
- //
- // End Row F
-
- // Row E
- <STOP> = 8;
- <AGAI> = 10;
- //
- <AE00> = 49;
- alias <TLDE> = <AE00>;
- <AE01> = 37;
- <AE02> = 38;
- <AE03> = 39;
- <AE04> = 40;
- <AE05> = 41;
- <AE06> = 42;
- <AE07> = 43;
- <AE08> = 44;
- <AE09> = 45;
- <AE10> = 46;
- <AE11> = 47;
- <AE12> = 48;
- <BKSP> = 50;
- //
- <INS> = 51;
- <HOME> = 59;
- <PGUP> = 103;
- //
- <NMLK> = 105;
- <KPDV> = 53;
- <KPMU> = 54;
- <KPSU> = 78;
- //End Row E
-
- // Row D
- <PROP> = 32;
- <UNDO> = 33;
- //
- <AD00> = 60;
- alias <TAB> = <AD00>;
- <AD01> = 61;
- <AD02> = 62;
- <AD03> = 63;
- <AD04> = 64;
- <AD05> = 65;
- <AD06> = 66;
- <AD07> = 67;
- <AD08> = 68;
- <AD09> = 69;
- <AD10> = 70;
- <AD11> = 71;
- <AD12> = 72;
- //
- <DELE> = 73;
- <END> = 81;
- <PGDN> = 130;
- //
- <KP7> = 75;
- <KP8> = 76;
- <KP9> = 77;
- <KPAD> = 132;
- // End Row D
-
- // Row C
- <FRNT> = 56;
- <COPY> = 58;
- //
- <AC00> = 126;
- alias <CAPS> = <AC00>;
- <AC01> = 84;
- <AC02> = 85;
- <AC03> = 86;
- <AC04> = 87;
- <AC05> = 88;
- <AC06> = 89;
- <AC07> = 90;
- <AC08> = 91;
- <AC09> = 92;
- <AC10> = 93;
- <AC11> = 94;
- <AC12> = 95;
- alias <BKSL> = <AC12>;
- <RTRN> = 96;
- //
- <KP4> = 98;
- <KP5> = 99;
- <KP6> = 100;
- // End Row C
-
- // Row B
- <OPEN> = 79;
- <PAST> = 80;
- //
- <LFSH> = 106;
- <AB00> = 131;
- alias <LSGT> = <AB00>;
- <AB01> = 107;
- <AB02> = 108;
- <AB03> = 109;
- <AB04> = 110;
- <AB05> = 111;
- <AB06> = 112;
- <AB07> = 113;
- <AB08> = 114;
- <AB09> = 115;
- <AB10> = 116;
- <RTSH> = 117;
- //
- <UP> = 27;
- //
- <KP1> = 119;
- <KP2> = 120;
- <KP3> = 121;
- <KPEN> = 97;
- // End Row B
-
- // Row A
- <FIND> = 102;
- <CUT> = 104;
- //
- <LCTL> = 83;
- <LALT> = 26;
- <LMTA> = 127;
- <SPCE> = 128;
- <RMTA> = 129;
- <COMP> = 74;
- <ALGR> = 20;
- alias <RALT> = <ALGR>;
- //
- <LEFT> = 31;
- <DOWN> = 34;
- <RGHT> = 35;
- //
- <KP0> = 101;
- <KPDL> = 57;
- // End Row A
-
- indicator 4 = "Caps Lock";
- indicator 3 = "Compose";
- indicator 2 = "Scroll Lock";
- indicator 1 = "Num Lock";
-};
-
-xkb_keycodes "type5c_se" {
- include "sun(type5_se)"
-};
-
-xkb_keycodes "type4__se" {
-
- minimum= 8;
- maximum= 255;
-
- // Row F
- <STOP> = 8;
- <AGAI> = 10;
- //
- <FK01> = 12;
- <FK02> = 13;
- <FK03> = 15;
- <FK04> = 17;
- <FK05> = 19;
- <FK06> = 21;
- <FK07> = 23;
- <FK08> = 24;
- <FK09> = 25;
- <FK10> = 14;
- <FK11> = 16;
- <FK12> = 18;
- <AF13> = 95;
- alias <TLDE> = <AF13>;
- <AF14> = 22;
- <DELE> = 73;
- //
- <PAUS> = 28;
- <PRSC> = 29;
- <SCLK> = 30;
- <NMLK> = 105;
- // End Row F
-
- // Row E
- <PROP> = 32;
- <UNDO> = 33;
- //
- <AE00> = 36;
- alias <ESC> = <AE00>;
- <AE01> = 37;
- <AE02> = 38;
- <AE03> = 39;
- <AE04> = 40;
- <AE05> = 41;
- <AE06> = 42;
- <AE07> = 43;
- <AE08> = 44;
- <AE09> = 45;
- <AE10> = 46;
- <AE11> = 47;
- <AE12> = 48;
- <BKSP> = 50;
- //
- <KPEQ> = 52;
- <KPDV> = 53;
- <KPMU> = 54;
- <KPSU> = 78;
- // End Row E
-
- // Row D
- <FRNT> = 56;
- <COPY> = 58;
- //
- <AD00> = 60;
- alias <TAB> = <AD00>;
- <AD01> = 61;
- <AD02> = 62;
- <AD03> = 63;
- <AD04> = 64;
- <AD05> = 65;
- <AD06> = 66;
- <AD07> = 67;
- <AD08> = 68;
- <AD09> = 69;
- <AD10> = 70;
- <AD11> = 71;
- <AD12> = 72;
- //
- <KP7> = 75;
- <KP8> = 76;
- <KP9> = 77;
- <KPAD> = 132;
- // End Row D
-
- // Row C
- <OPEN> = 79;
- <PAST> = 80;
- //
- <AC00> = 83;
- // alias <CAPS> = <AC00>;
- <AC01> = 84;
- <AC02> = 85;
- <AC03> = 86;
- <AC04> = 87;
- <AC05> = 88;
- <AC06> = 89;
- <AC07> = 90;
- <AC08> = 91;
- <AC09> = 92;
- <AC10> = 93;
- <AC11> = 94;
- <AC12> = 49;
- alias <BKSL> = <AC12>;
- <RTRN> = 96;
- //
- <KP4> = 98;
- <KP5> = 99;
- <KP6> = 100;
- // End Row C
-
- // Row B
- <FIND> = 102;
- <CUT> = 104;
- //
- <LFSH> = 106;
- <AB00> = 131;
- alias <LSGT> = <AB00>;
- <AB01> = 107;
- <AB02> = 108;
- <AB03> = 109;
- <AB04> = 110;
- <AB05> = 111;
- <AB06> = 112;
- <AB07> = 113;
- <AB08> = 114;
- <AB09> = 115;
- <AB10> = 116;
- <RTSH> = 117;
- <LNFD> = 118;
- //
- <KP1> = 119;
- <KP2> = 120;
- <KP3> = 121;
- <KPEN> = 97;
- // End Row B
-
- // Row A
- <HELP> = 125;
- //
- <AA00> = 126;
- // alias <LCTL> = <AA00>;
- <LALT> = 26;
- <LMTA> = 127;
- <SPCE> = 128;
- <RMTA> = 129;
- <COMP> = 74;
- <ALGR> = 20;
- alias <RALT> = <ALGR>;
- //
- <KP0> = 101;
- <KPDL> = 57;
- // End Row A
-
- indicator 4 = "Caps Lock";
- indicator 3 = "Compose";
- indicator 2 = "Scroll Lock";
- indicator 1 = "Num Lock";
-};
-
-xkb_keycodes "type4_se" {
-
- include "sun(type4__se)"
-
- alias <LCTL> = <AA00>;
- alias <CAPS> = <AC00>;
-};
-
-xkb_keycodes "type4_se_swapctl" {
-
- include "sun(type4__se)"
-
- alias <LCTL> = <AC00>;
- alias <CAPS> = <AA00>;
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+// ---------------------------------------------------------------------------
+// Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice (including the next
+// paragraph) shall be included in all copies or substantial portions of the
+// Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+//
+// ---------------------------------------------------------------------------
+//
+
+default xkb_keycodes "type4" {
+
+ minimum= 8;
+ maximum= 255;
+
+ <ESC> = 36;
+ <AE01> = 37;
+ <AE02> = 38;
+ <AE03> = 39;
+ <AE04> = 40;
+ <AE05> = 41;
+ <AE06> = 42;
+ <AE07> = 43;
+ <AE08> = 44;
+ <AE09> = 45;
+ <AE10> = 46;
+ <AE11> = 47;
+ <AE12> = 48;
+ <TLDE> = 49;
+ <BKSP> = 50;
+
+ <TAB> = 60;
+ <AD01> = 61;
+ <AD02> = 62;
+ <AD03> = 63;
+ <AD04> = 64;
+ <AD05> = 65;
+ <AD06> = 66;
+ <AD07> = 67;
+ <AD08> = 68;
+ <AD09> = 69;
+ <AD10> = 70;
+ <AD11> = 71;
+ <AD12> = 72;
+ <DELE> = 73;
+
+ <LCTL> = 83;
+ <AC01> = 84;
+ <AC02> = 85;
+ <AC03> = 86;
+ <AC04> = 87;
+ <AC05> = 88;
+ <AC06> = 89;
+ <AC07> = 90;
+ <AC08> = 91;
+ <AC09> = 92;
+ <AC10> = 93;
+ <AC11> = 94;
+ <BKSL> = 95;
+ <RTRN> = 96;
+
+ <LFSH> = 106;
+ <AB01> = 107;
+ <AB02> = 108;
+ <AB03> = 109;
+ <AB04> = 110;
+ <AB05> = 111;
+ <AB06> = 112;
+ <AB07> = 113;
+ <AB08> = 114;
+ <AB09> = 115;
+ <AB10> = 116;
+ <RTSH> = 117;
+ <LNFD> = 118;
+
+ <HELP> = 125;
+ <CAPS> = 126;
+ <LALT> = 26;
+ <LMTA> = 127;
+ <SPCE> = 128;
+ <RMTA> = 129;
+ <COMP> = 74;
+ <ALGR> = 20;
+ alias <RALT> = <ALGR>;
+
+ <FK01> = 12;
+ <FK02> = 13;
+ <FK03> = 15;
+ <FK04> = 17;
+ <FK05> = 19;
+ <FK06> = 21;
+ <FK07> = 23;
+ <FK08> = 24;
+ <FK09> = 25;
+ <FK10> = 14;
+ <FK11> = 16;
+ <FK12> = 18;
+
+ <STOP> = 8;
+ <AGAI> = 10;
+ <PROP> = 32;
+ <UNDO> = 33;
+ <FRNT> = 56;
+ <COPY> = 58;
+ <OPEN> = 79;
+ <PAST> = 80;
+ <FIND> = 102;
+ <CUT> = 104;
+
+ <PRSC> = 29;
+ <SCLK> = 30;
+ <PAUS> = 28;
+
+ <NMLK> = 105;
+ <KPEQ> = 52;
+ <KPDV> = 53;
+ <KPMU> = 54;
+ <KPSU> = 78;
+
+ <KP7> = 75;
+ <KP8> = 76;
+ <KP9> = 77;
+ <KPAD> = 132;
+
+ <KP4> = 98;
+ <KP5> = 99;
+ <KP6> = 100;
+
+ <KP1> = 119;
+ <KP2> = 120;
+ <KP3> = 121;
+ <KPEN> = 97;
+
+ <KP0> = 101;
+ <KPDL> = 57;
+ indicator 4 = "Caps Lock";
+ indicator 3 = "Compose";
+ indicator 2 = "Scroll Lock";
+ indicator 1 = "Num Lock";
+};
+
+xkb_keycodes "type5" {
+
+ minimum= 8;
+ maximum= 255;
+
+ <ESC> = 36;
+ <AE01> = 37;
+ <AE02> = 38;
+ <AE03> = 39;
+ <AE04> = 40;
+ <AE05> = 41;
+ <AE06> = 42;
+ <AE07> = 43;
+ <AE08> = 44;
+ <AE09> = 45;
+ <AE10> = 46;
+ <AE11> = 47;
+ <AE12> = 48;
+ <TLDE> = 49;
+ <BKSP> = 50;
+
+ <TAB> = 60;
+ <AD01> = 61;
+ <AD02> = 62;
+ <AD03> = 63;
+ <AD04> = 64;
+ <AD05> = 65;
+ <AD06> = 66;
+ <AD07> = 67;
+ <AD08> = 68;
+ <AD09> = 69;
+ <AD10> = 70;
+ <AD11> = 71;
+ <AD12> = 72;
+ <DELE> = 73;
+ <COMP> = 74;
+ <ALGR> = 20;
+ alias <RALT> = <ALGR>;
+
+ <LCTL> = 83;
+ <AC01> = 84;
+ <AC02> = 85;
+ <AC03> = 86;
+ <AC04> = 87;
+ <AC05> = 88;
+ <AC06> = 89;
+ <AC07> = 90;
+ <AC08> = 91;
+ <AC09> = 92;
+ <AC10> = 93;
+ <AC11> = 94;
+ <BKSL> = 95;
+ <RTRN> = 96;
+
+ <LFSH> = 106;
+ <AB01> = 107;
+ <AB02> = 108;
+ <AB03> = 109;
+ <AB04> = 110;
+ <AB05> = 111;
+ <AB06> = 112;
+ <AB07> = 113;
+ <AB08> = 114;
+ <AB09> = 115;
+ <AB10> = 116;
+ <RTSH> = 117;
+
+ <LALT> = 26;
+ <CAPS> = 126;
+ <LMTA> = 127;
+ <SPCE> = 128;
+ <RMTA> = 129;
+
+ <FK01> = 12;
+ <FK02> = 13;
+ <FK03> = 15;
+ <FK04> = 17;
+ <FK05> = 19;
+ <FK06> = 21;
+ <FK07> = 23;
+ <FK08> = 24;
+ <FK09> = 25;
+ <FK10> = 14;
+ <FK11> = 16;
+ <FK12> = 18;
+ <STOP> = 8;
+ <AGAI> = 10;
+ <PROP> = 32;
+ <UNDO> = 33;
+ <FRNT> = 56;
+ <COPY> = 58;
+ <OPEN> = 79;
+ <PAST> = 80;
+ <FIND> = 102;
+ <CUT> = 104;
+
+ <PRSC> = 29;
+ <SCLK> = 30;
+ <PAUS> = 28;
+
+ <NMLK> = 105;
+ <KPDV> = 53;
+ <KPMU> = 54;
+ <KPSU> = 78;
+
+ <KP7> = 75;
+ <KP8> = 76;
+ <KP9> = 77;
+ <KPAD> = 132;
+
+ <KP4> = 98;
+ <KP5> = 99;
+ <KP6> = 100;
+
+ <KP1> = 119;
+ <KP2> = 120;
+ <KP3> = 121;
+ <KPEN> = 97;
+
+ <KP0> = 101;
+ <KPDL> = 57;
+
+ <UP> = 27;
+ <LEFT> = 31;
+ <DOWN> = 34;
+ <RGHT> = 35;
+
+ <INS> = 51;
+ <HOME> = 59;
+ <END> = 81;
+ <PGUP> = 103;
+ <PGDN> = 130;
+ <HELP> = 125;
+
+ <MUTE> = 52;
+ <VOL-> = 9;
+ <VOL+> = 11;
+ <POWR> = 55;
+ indicator 4 = "Caps Lock";
+ indicator 3 = "Compose";
+ indicator 2 = "Scroll Lock";
+ indicator 1 = "Num Lock";
+};
+
+xkb_keycodes "type4tuv" {
+ include "sun(type4)"
+ <LSGT> = 131;
+ <BRCR> = 22;
+};
+
+xkb_keycodes "type4_ca" {
+ include "sun(type4)"
+ <LSGT> = 131;
+};
+
+xkb_keycodes "type4_jp" {
+ include "sun(type4)"
+ <EXEC> = 122;
+ <KANJ> = 123;
+ <HENK> = 124;
+ <BRCR> = 22;
+ alias <UNDR> = <LNFD>;
+};
+
+xkb_keycodes "type4_euro" {
+ include "sun(type4)"
+ <LSGT> = 131;
+};
+
+xkb_keycodes "type5tuv" {
+ include "sun(type5)"
+ <LSGT> = 131;
+};
+
+xkb_keycodes "type5_jp" {
+ include "sun(type5)"
+ <EXEC> = 122;
+ <KANJ> = 123;
+ <HENK> = 124;
+ <UNDR> = 118;
+};
+
+xkb_keycodes "type5_euro" {
+ include "sun(type5)"
+ <LSGT> = 131;
+};
+
+xkb_keycodes "type5hobo" {
+
+ minimum= 8;
+ maximum= 255;
+
+ <ESC> = 36;
+ <AE01> = 37;
+ <AE02> = 38;
+ <AE03> = 39;
+ <AE04> = 40;
+ <AE05> = 41;
+ <AE06> = 42;
+ <AE07> = 43;
+ <AE08> = 44;
+ <AE09> = 45;
+ <AE10> = 46;
+ <AE11> = 47;
+ <AE12> = 48;
+ <TLDE> = 49;
+ <BKSP> = 50;
+
+ <TAB> = 60;
+ <AD01> = 61;
+ <AD02> = 62;
+ <AD03> = 63;
+ <AD04> = 64;
+ <AD05> = 65;
+ <AD06> = 66;
+ <AD07> = 67;
+ <AD08> = 68;
+ <AD09> = 69;
+ <AD10> = 70;
+ <AD11> = 71;
+ <AD12> = 72;
+ <DELE> = 73;
+ <COMP> = 74;
+ <ALGR> = 20;
+ alias <RALT> = <ALGR>;
+
+ <LCTL> = 83;
+ <AC01> = 84;
+ <AC02> = 85;
+ <AC03> = 86;
+ <AC04> = 87;
+ <AC05> = 88;
+ <AC06> = 89;
+ <AC07> = 90;
+ <AC08> = 91;
+ <AC09> = 92;
+ <AC10> = 93;
+ <AC11> = 94;
+ <BKSL> = 95;
+ <RTRN> = 96;
+
+ <LFSH> = 106;
+ <AB01> = 107;
+ <AB02> = 108;
+ <AB03> = 109;
+ <AB04> = 110;
+ <AB05> = 111;
+ <AB06> = 112;
+ <AB07> = 113;
+ <AB08> = 114;
+ <AB09> = 115;
+ <AB10> = 116;
+ <RTSH> = 117;
+
+ <LALT> = 26;
+ <CAPS> = 126;
+ <LMTA> = 127;
+ <SPCE> = 128;
+ <RMTA> = 129;
+
+ <FK01> = 12;
+ <FK02> = 13;
+ <FK03> = 15;
+ <FK04> = 17;
+ <FK05> = 19;
+ <FK06> = 21;
+ <FK07> = 23;
+ <FK08> = 24;
+ <FK09> = 25;
+ <FK10> = 14;
+ <FK11> = 16;
+ <FK12> = 18;
+ <STOP> = 8;
+ <AGAI> = 10;
+ <PROP> = 32;
+ <UNDO> = 33;
+ <FRNT> = 56;
+ <COPY> = 58;
+ <OPEN> = 79;
+ <PAST> = 80;
+ <FIND> = 102;
+ <CUT> = 104;
+
+ <PRSC> = 29;
+ <SCLK> = 30;
+ <PAUS> = 28;
+
+ <NMLK> = 105;
+// <KPDV> = 53;
+// <KPMU> = 54;
+// <KPSU> = 78;
+
+// <KP7> = 75;
+// <KP8> = 76;
+// <KP9> = 77;
+// <KPAD> = 132;
+
+// <KP4> = 98;
+// <KP5> = 99;
+// <KP6> = 100;
+
+// <KP1> = 119;
+// <KP2> = 120;
+// <KP3> = 121;
+// <KPEN> = 97;
+
+// <KP0> = 101;
+// <KPDL> = 57;
+
+ <UP> = 27;
+ <LEFT> = 31;
+ <DOWN> = 34;
+ <RGHT> = 35;
+
+ <INS> = 51;
+ <HOME> = 59;
+ <END> = 81;
+ <PGUP> = 103;
+ <PGDN> = 130;
+ <HELP> = 125;
+
+ <MUTE> = 52;
+ <VOL-> = 9;
+ <VOL+> = 11;
+ <POWR> = 55;
+ indicator 4 = "Caps Lock";
+ indicator 3 = "Compose";
+ indicator 2 = "Scroll Lock";
+ indicator 1 = "Num Lock";
+};
+
+xkb_keycodes "type5tuvhobo" {
+ include "sun(type5hobo)"
+ <LSGT> = 131;
+
+};
+
+xkb_keycodes "type5_jphobo" {
+ include "sun(type5hobo)"
+ <EXEC> = 122;
+ <KANJ> = 123;
+ <HENK> = 124;
+ <UNDR> = 118;
+};
+
+xkb_keycodes "type6" {
+ include "sun(type5)"
+};
+
+xkb_keycodes "type6tuv" {
+ include "sun(type5tuv)"
+};
+
+xkb_keycodes "type6unix" {
+ include "sun(type5)"
+};
+
+xkb_keycodes "type6_jp" {
+ include "sun(type5_jp)"
+};
+
+xkb_keycodes "type6_euro" {
+ include "sun(type5_euro)"
+};
+
+// Even though this is labeled as _usb, I verified these keycodes as accurate
+// on my type5 serial and type6 serial keyboards as well on linux-2.6 boxes.
+// I'm not sure where the "type5" keycodes above are coming from...
+xkb_keycodes "type6_usb" {
+ include "xfree86"
+
+ <STOP> = 232;
+ <AGAI> = 133;
+ <PROP> = 134;
+ <UNDO> = 135;
+ <FRNT> = 140;
+ <COPY> = 248;
+ <OPEN> = 191;
+ <PAST> = 192;
+ <FIND> = 122;
+ <CUT> = 188;
+
+ <HELP> = 245;
+
+ // The blank has keycode 239 on my type6 serial kb, but 134 on
+ // my type6 usb keyboard (same as <PROP>)
+ <BLNK> = 239;
+
+ // AltGr + PrScr actually sends a different keycode
+ <SYRQ> = 92;
+
+ <MUTE> = 160;
+ <VOL-> = 174;
+ <VOL+> = 176;
+ <POWR> = 222;
+
+ indicator 4 = "Compose";
+};
+
+xkb_keycodes "type6tuv_usb" {
+ include "sun(type6_usb)"
+ <LSGT> = 94;
+// <BKSL> = 51;
+};
+
+xkb_keycodes "type6_jp_usb" {
+ include "sun(type6_usb)"
+ alias <UNDR> = <KPDC>; // 123
+ alias <EXEC> = <I0B>; // 139
+ alias <KANJ> = <I0A>; // 138
+ alias <HENK> = <XFER>; // 129
+ indicator 5 = "Kana";
+};
+
+xkb_keycodes "type5_se" {
+
+ minimum= 8;
+ maximum= 255;
+
+ // Row G
+ <HELP> = 125;
+ //
+ <ESC> = 36;
+ //
+ <FK01> = 12;
+ <FK02> = 13;
+ <FK03> = 15;
+ <FK04> = 17;
+ //
+ <FK05> = 19;
+ <FK06> = 21;
+ <FK07> = 23;
+ <FK08> = 24;
+ //
+ <FK09> = 25;
+ <FK10> = 14;
+ <FK11> = 16;
+ <FK12> = 18;
+ //
+ <PRSC> = 29;
+ <SCLK> = 30;
+ <PAUS> = 28;
+ //
+ <MUTE> = 52;
+ <VOL-> = 9;
+ <VOL+> = 11;
+ <POWR> = 55;
+ // End Row G
+
+ // Row F
+ //
+ // End Row F
+
+ // Row E
+ <STOP> = 8;
+ <AGAI> = 10;
+ //
+ <AE00> = 49;
+ alias <TLDE> = <AE00>;
+ <AE01> = 37;
+ <AE02> = 38;
+ <AE03> = 39;
+ <AE04> = 40;
+ <AE05> = 41;
+ <AE06> = 42;
+ <AE07> = 43;
+ <AE08> = 44;
+ <AE09> = 45;
+ <AE10> = 46;
+ <AE11> = 47;
+ <AE12> = 48;
+ <BKSP> = 50;
+ //
+ <INS> = 51;
+ <HOME> = 59;
+ <PGUP> = 103;
+ //
+ <NMLK> = 105;
+ <KPDV> = 53;
+ <KPMU> = 54;
+ <KPSU> = 78;
+ //End Row E
+
+ // Row D
+ <PROP> = 32;
+ <UNDO> = 33;
+ //
+ <AD00> = 60;
+ alias <TAB> = <AD00>;
+ <AD01> = 61;
+ <AD02> = 62;
+ <AD03> = 63;
+ <AD04> = 64;
+ <AD05> = 65;
+ <AD06> = 66;
+ <AD07> = 67;
+ <AD08> = 68;
+ <AD09> = 69;
+ <AD10> = 70;
+ <AD11> = 71;
+ <AD12> = 72;
+ //
+ <DELE> = 73;
+ <END> = 81;
+ <PGDN> = 130;
+ //
+ <KP7> = 75;
+ <KP8> = 76;
+ <KP9> = 77;
+ <KPAD> = 132;
+ // End Row D
+
+ // Row C
+ <FRNT> = 56;
+ <COPY> = 58;
+ //
+ <AC00> = 126;
+ alias <CAPS> = <AC00>;
+ <AC01> = 84;
+ <AC02> = 85;
+ <AC03> = 86;
+ <AC04> = 87;
+ <AC05> = 88;
+ <AC06> = 89;
+ <AC07> = 90;
+ <AC08> = 91;
+ <AC09> = 92;
+ <AC10> = 93;
+ <AC11> = 94;
+ <AC12> = 95;
+ alias <BKSL> = <AC12>;
+ <RTRN> = 96;
+ //
+ <KP4> = 98;
+ <KP5> = 99;
+ <KP6> = 100;
+ // End Row C
+
+ // Row B
+ <OPEN> = 79;
+ <PAST> = 80;
+ //
+ <LFSH> = 106;
+ <AB00> = 131;
+ alias <LSGT> = <AB00>;
+ <AB01> = 107;
+ <AB02> = 108;
+ <AB03> = 109;
+ <AB04> = 110;
+ <AB05> = 111;
+ <AB06> = 112;
+ <AB07> = 113;
+ <AB08> = 114;
+ <AB09> = 115;
+ <AB10> = 116;
+ <RTSH> = 117;
+ //
+ <UP> = 27;
+ //
+ <KP1> = 119;
+ <KP2> = 120;
+ <KP3> = 121;
+ <KPEN> = 97;
+ // End Row B
+
+ // Row A
+ <FIND> = 102;
+ <CUT> = 104;
+ //
+ <LCTL> = 83;
+ <LALT> = 26;
+ <LMTA> = 127;
+ <SPCE> = 128;
+ <RMTA> = 129;
+ <COMP> = 74;
+ <ALGR> = 20;
+ alias <RALT> = <ALGR>;
+ //
+ <LEFT> = 31;
+ <DOWN> = 34;
+ <RGHT> = 35;
+ //
+ <KP0> = 101;
+ <KPDL> = 57;
+ // End Row A
+
+ indicator 4 = "Caps Lock";
+ indicator 3 = "Compose";
+ indicator 2 = "Scroll Lock";
+ indicator 1 = "Num Lock";
+};
+
+xkb_keycodes "type5c_se" {
+ include "sun(type5_se)"
+};
+
+xkb_keycodes "type4__se" {
+
+ minimum= 8;
+ maximum= 255;
+
+ // Row F
+ <STOP> = 8;
+ <AGAI> = 10;
+ //
+ <FK01> = 12;
+ <FK02> = 13;
+ <FK03> = 15;
+ <FK04> = 17;
+ <FK05> = 19;
+ <FK06> = 21;
+ <FK07> = 23;
+ <FK08> = 24;
+ <FK09> = 25;
+ <FK10> = 14;
+ <FK11> = 16;
+ <FK12> = 18;
+ <AF13> = 95;
+ alias <TLDE> = <AF13>;
+ <AF14> = 22;
+ <DELE> = 73;
+ //
+ <PAUS> = 28;
+ <PRSC> = 29;
+ <SCLK> = 30;
+ <NMLK> = 105;
+ // End Row F
+
+ // Row E
+ <PROP> = 32;
+ <UNDO> = 33;
+ //
+ <AE00> = 36;
+ alias <ESC> = <AE00>;
+ <AE01> = 37;
+ <AE02> = 38;
+ <AE03> = 39;
+ <AE04> = 40;
+ <AE05> = 41;
+ <AE06> = 42;
+ <AE07> = 43;
+ <AE08> = 44;
+ <AE09> = 45;
+ <AE10> = 46;
+ <AE11> = 47;
+ <AE12> = 48;
+ <BKSP> = 50;
+ //
+ <KPEQ> = 52;
+ <KPDV> = 53;
+ <KPMU> = 54;
+ <KPSU> = 78;
+ // End Row E
+
+ // Row D
+ <FRNT> = 56;
+ <COPY> = 58;
+ //
+ <AD00> = 60;
+ alias <TAB> = <AD00>;
+ <AD01> = 61;
+ <AD02> = 62;
+ <AD03> = 63;
+ <AD04> = 64;
+ <AD05> = 65;
+ <AD06> = 66;
+ <AD07> = 67;
+ <AD08> = 68;
+ <AD09> = 69;
+ <AD10> = 70;
+ <AD11> = 71;
+ <AD12> = 72;
+ //
+ <KP7> = 75;
+ <KP8> = 76;
+ <KP9> = 77;
+ <KPAD> = 132;
+ // End Row D
+
+ // Row C
+ <OPEN> = 79;
+ <PAST> = 80;
+ //
+ <AC00> = 83;
+ // alias <CAPS> = <AC00>;
+ <AC01> = 84;
+ <AC02> = 85;
+ <AC03> = 86;
+ <AC04> = 87;
+ <AC05> = 88;
+ <AC06> = 89;
+ <AC07> = 90;
+ <AC08> = 91;
+ <AC09> = 92;
+ <AC10> = 93;
+ <AC11> = 94;
+ <AC12> = 49;
+ alias <BKSL> = <AC12>;
+ <RTRN> = 96;
+ //
+ <KP4> = 98;
+ <KP5> = 99;
+ <KP6> = 100;
+ // End Row C
+
+ // Row B
+ <FIND> = 102;
+ <CUT> = 104;
+ //
+ <LFSH> = 106;
+ <AB00> = 131;
+ alias <LSGT> = <AB00>;
+ <AB01> = 107;
+ <AB02> = 108;
+ <AB03> = 109;
+ <AB04> = 110;
+ <AB05> = 111;
+ <AB06> = 112;
+ <AB07> = 113;
+ <AB08> = 114;
+ <AB09> = 115;
+ <AB10> = 116;
+ <RTSH> = 117;
+ <LNFD> = 118;
+ //
+ <KP1> = 119;
+ <KP2> = 120;
+ <KP3> = 121;
+ <KPEN> = 97;
+ // End Row B
+
+ // Row A
+ <HELP> = 125;
+ //
+ <AA00> = 126;
+ // alias <LCTL> = <AA00>;
+ <LALT> = 26;
+ <LMTA> = 127;
+ <SPCE> = 128;
+ <RMTA> = 129;
+ <COMP> = 74;
+ <ALGR> = 20;
+ alias <RALT> = <ALGR>;
+ //
+ <KP0> = 101;
+ <KPDL> = 57;
+ // End Row A
+
+ indicator 4 = "Caps Lock";
+ indicator 3 = "Compose";
+ indicator 2 = "Scroll Lock";
+ indicator 1 = "Num Lock";
+};
+
+xkb_keycodes "type4_se" {
+
+ include "sun(type4__se)"
+
+ alias <LCTL> = <AA00>;
+ alias <CAPS> = <AC00>;
+};
+
+xkb_keycodes "type4_se_swapctl" {
+
+ include "sun(type4__se)"
+
+ alias <LCTL> = <AC00>;
+ alias <CAPS> = <AA00>;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/xfree86 b/xorg-server/xkeyboard-config/keycodes/xfree86
index bf91fa8ff..7d4813e89 100644
--- a/xorg-server/xkeyboard-config/keycodes/xfree86
+++ b/xorg-server/xkeyboard-config/keycodes/xfree86
@@ -1,415 +1,407 @@
-// $XdotOrg: xc/programs/xkbcomp/keycodes/xfree86,v 1.1.4.4 2004/03/05 13:41:30 eich Exp $
-// $Xorg: xfree86,v 1.3 2000/08/17 19:54:37 cpqbld Exp $
-
-
-
-
-// $XFree86: xc/programs/xkbcomp/keycodes/xfree86,v 3.28 2003/11/21 04:46:42 dawes Exp $
-
-// "standard" XFree86 codes
-// It seems that the "default" must be the first entry in the file.
-
-default xkb_keycodes "xfree86" {
- include "xfree86(basic)"
- <BKSL> = 51;
- alias <AC12> = <BKSL>;
- <LSGT> = 94;
-};
-
-xkb_keycodes "basic" {
-
- minimum= 8;
- maximum= 255;
-
- <TLDE> = 49;
- alias <AE00> = <TLDE>; // Some geometries use AE00
- <AE01> = 10;
- <AE02> = 11;
- <AE03> = 12;
- <AE04> = 13;
- <AE05> = 14;
- <AE06> = 15;
- <AE07> = 16;
- <AE08> = 17;
- <AE09> = 18;
- <AE10> = 19;
- <AE11> = 20;
- <AE12> = 21;
- <BKSP> = 22;
-
- <TAB> = 23;
- <AD01> = 24;
- <AD02> = 25;
- <AD03> = 26;
- <AD04> = 27;
- <AD05> = 28;
- <AD06> = 29;
- <AD07> = 30;
- <AD08> = 31;
- <AD09> = 32;
- <AD10> = 33;
- <AD11> = 34;
- <AD12> = 35;
- <RTRN> = 36;
-
- <CAPS> = 66;
- <AC01> = 38;
- <AC02> = 39;
- <AC03> = 40;
- <AC04> = 41;
- <AC05> = 42;
- <AC06> = 43;
- <AC07> = 44;
- <AC08> = 45;
- <AC09> = 46;
- <AC10> = 47;
- <AC11> = 48;
-
- <LFSH> = 50;
- <AB01> = 52;
- <AB02> = 53;
- <AB03> = 54;
- <AB04> = 55;
- <AB05> = 56;
- <AB06> = 57;
- <AB07> = 58;
- <AB08> = 59;
- <AB09> = 60;
- <AB10> = 61;
- <RTSH> = 62;
-
- <LALT> = 64;
- <LCTL> = 37;
- <SPCE> = 65;
- <RCTL> = 109;
- <RALT> = 113;
- // Microsoft keyboard extra keys
- <LWIN> = 115;
- <RWIN> = 116;
- <MENU> = 117;
-
- <ESC> = 9;
- <FK01> = 67;
- <FK02> = 68;
- <FK03> = 69;
- <FK04> = 70;
- <FK05> = 71;
- <FK06> = 72;
- <FK07> = 73;
- <FK08> = 74;
- <FK09> = 75;
- <FK10> = 76;
- <FK11> = 95;
- <FK12> = 96;
-
- <PRSC> = 111;
- <SYRQ> = 92;
- <SCLK> = 78;
- <PAUS> = 110;
- <BRK> = 114;
-
- <INS> = 106;
- <HOME> = 97;
- <PGUP> = 99;
- <DELE> = 107;
- <END> = 103;
- <PGDN> = 105;
-
- <UP> = 98;
- <LEFT> = 100;
- <DOWN> = 104;
- <RGHT> = 102;
-
- <NMLK> = 77;
- <KPDV> = 112;
- <KPMU> = 63;
- <KPSU> = 82;
-
- <KP7> = 79;
- <KP8> = 80;
- <KP9> = 81;
- <KPAD> = 86;
-
- <KP4> = 83;
- <KP5> = 84;
- <KP6> = 85;
-
- <KP1> = 87;
- <KP2> = 88;
- <KP3> = 89;
- <KPEN> = 108;
-
- <KP0> = 90;
- <KPDL> = 91;
- <KPEQ> = 126;
-
- <FK13> = 118;
- <FK14> = 119;
- <FK15> = 120;
- <FK16> = 121;
- <FK17> = 122;
- <KPDC> = 123;
-
- // Keys that are generated on Japanese keyboards
-
- alias <HZTG> = <TLDE>; // Hankaku_Zenkaku toggle
- <HKTG> = 208; // Hiragana_Katakana toggle
- <AB11> = 211; // backslash/underscore
- <XFER> = 129; // Henkan
- <NFER> = 131; // Muhenkan
- <AE13> = 133; // Yen
- <EISU> = 210; // Alphanumeric mode on macintosh
- <KANA> = 209; // Kana mode on macintosh
-
- // Keys that are generated on Korean keyboards
-
- alias <HNGL> = <FK16>; // Hangul Latin toggle
- alias <HJCV> = <FK17>; // Hangul to Hanja conversion
-
- // Extended keys that may be generated on "Internet" keyboards.
- // These are not standardised, hence the meaningless names.
- // The entries commented out are never generated because the raw codes
- // in those positions are already used for well-defined keys.
-
- alias <I01> = <XFER>;
- <I02> = 130;
- alias <I03> = <NFER>;
- <I04> = 132;
- alias <I05> = <AE13>;
- <I06> = 134;
- <I07> = 135;
- <I08> = 136;
- <I09> = 137;
- <I0A> = 138;
- <I0B> = 139;
- <I0C> = 140;
- <I0D> = 141;
- <I0E> = 142;
- <I0F> = 143;
- <I10> = 144;
- <I11> = 145;
- <I12> = 146;
- <I13> = 147;
- <I14> = 148;
- <I15> = 149;
- <I16> = 150;
- <I17> = 151;
- <I18> = 152;
- <I19> = 153;
- <I1A> = 154;
- <I1B> = 155;
- // <I1C> = 156; <META>
- // <I1D> = 157; <K59>
- <I1E> = 158;
- <I1F> = 159;
- <I20> = 160;
- <I21> = 161;
- <I22> = 162;
- <I23> = 163;
- <I24> = 164;
- <I25> = 165;
- <I26> = 166;
- <I27> = 167;
- <I28> = 168;
- <I29> = 169;
- // <I2A> = 170; <K5A>
- <I2B> = 171;
- <I2C> = 172;
- <I2D> = 173;
- <I2E> = 174;
- <I2F> = 175;
- <I30> = 176;
- <I31> = 177;
- <I32> = 178;
- <I33> = 179;
- <I34> = 180;
- // <I35> = 181; <K5B>
- // <I36> = 182; <K5D>
- // <I37> = 183; <K5E>
- // <I38> = 184; <K5F>
- <I39> = 185;
- <I3A> = 186;
- <I3B> = 187;
- <I3C> = 188;
- // <I3D> = 189; <K62>
- // <I3E> = 190; <K63>
- // <I3F> = 191; <K64>
- // <I40> = 192; <K65>
- // <I41> = 193; <K66>
- <I42> = 194;
- <I43> = 195;
- <I44> = 196;
- <I45> = 197;
- // <I46> = 198; <K67>
- // <I47> = 199; <K68>
- // <I48> = 200; <K69>
- // <I49> = 201; <K6A>
- <I4A> = 202;
- // <I4B> = 203; <K6B>
- // <I4C> = 204; <K6C>
- // <I4D> = 205; <K6D>
- // <I4E> = 206; <K6E>
- // <I4F> = 207; <K6F>
- // <I50> = 208; <K70>
- // <I51> = 209; <K71>
- // <I52> = 210; <K72>
- // <I53> = 211; <K73>
- <I54> = 212;
- <I55> = 213;
- <I56> = 214;
- <I57> = 215;
- <I58> = 216;
- <I59> = 217;
- <I5A> = 218;
- // <I5B> = 219; <K74>
- // <I5C> = 220; <K75>
- // <I5D> = 221; <K76>
- <I5E> = 222;
- <I5F> = 223;
- <I60> = 224;
- <I61> = 225;
- <I62> = 226;
- <I63> = 227;
- <I64> = 228;
- <I65> = 229;
- <I66> = 230;
- <I67> = 231;
- <I68> = 232;
- <I69> = 233;
- <I6A> = 234;
- <I6B> = 235;
- <I6C> = 236;
- <I6D> = 237;
- <I6E> = 238;
- <I6F> = 239;
- <I70> = 240;
- <I71> = 241;
- <I72> = 242;
- <I73> = 243;
- <I74> = 244;
- <I75> = 245;
- <I76> = 246;
- <I77> = 247;
- <I78> = 248;
- <I79> = 249;
- <I7A> = 250;
- <I7B> = 251;
- <I7C> = 252;
- <I7D> = 253;
- <I7E> = 254;
- <I7F> = 255;
-
- // MacBooks generate 0x65 for the lower brightness key
- <II65> = 101;
-
- // Codes generated for scancodes 0x59-0x5f, 0x62-0x76
- <K59> = 157; // <I1D>
- <K5A> = 170; // <I2A>
- <K5B> = 181; // <I35>
- alias <K5C> = <KPEQ>;
- <K5D> = 182; // <I36>
- <K5E> = 183; // <I37>
- <K5F> = 184; // <I38>
- <K62> = 189; // <I3D>
- <K63> = 190; // <I3E>
- <K64> = 191; // <I3F>
- <K65> = 192; // <I40>
- <K66> = 193; // <I41>
- <K67> = 198; // <I46>
- <K68> = 199; // <I47>
- <K69> = 200; // <I48>
- <K6A> = 201; // <I49>
- <K6B> = 203; // <I4B>
- <K6C> = 204; // <I4C>
- <K6D> = 205; // <I4D>
- <K6E> = 206; // <I4E>
- <K6F> = 207; // <I4F>
- alias <K70> = <HKTG>; // <I50>
- alias <K71> = <KANA>; // <I51>
- alias <K72> = <EISU>; // <I52>
- alias <K73> = <AB11>; // <I53>
- <K74> = 219; // <I5B>
- <K75> = 220; // <I5C>
- <K76> = 221; // <I5D>
-
- // Solaris compatibility
-
- alias <LMTA> = <LWIN>;
- alias <RMTA> = <RWIN>;
- alias <COMP> = <MENU>;
- alias <POWR> = <I0C>;
- alias <MUTE> = <I0D>;
- alias <VOL-> = <I0E>;
- alias <VOL+> = <I0F>;
- alias <HELP> = <I10>;
- alias <STOP> = <I11>;
- alias <AGAI> = <I12>;
- alias <PROP> = <I13>;
- alias <UNDO> = <I14>;
- alias <FRNT> = <I15>;
- alias <COPY> = <I16>;
- alias <OPEN> = <I17>;
- alias <PAST> = <I18>;
- alias <FIND> = <I19>;
- alias <CUT> = <I1A>;
- alias <OUTP> = <I56>;
- alias <KITG> = <I57>;
- alias <KIDN> = <I58>;
- alias <KIUP> = <I59>;
-
- // Other codes never generated. The XFree86 ddx never generates
- // these codes.
- // Thus we can use them as fake keys
- <MDSW> = 93; // <U5D>
- <LVL3> = 124; // <U7C>
- <ALT> = 125; // <U7D>
- <META> = 156; // <I1C>
- <SUPR> = 127; // <U7F>
- <HYPR> = 128; // <U80>
-
- indicator 1 = "Caps Lock";
- indicator 2 = "Num Lock";
- indicator 3 = "Scroll Lock";
-
- alias <ALGR> = <RALT>;
-
- // For Brazilian ABNT2
- alias <KPPT> = <I06>;
-};
-
-// What keyboard is this?
-
-xkb_keycodes "102" {
- include "xfree86(xfree86)"
-
- // There will be warnings from xkbcomp because of multiple definitions.
-
- <RALT> = 122;
- <RCTL> = 123;
-
- <PRSC> = 121;
- <PAUS> = 118;
-
- <INS> = 131;
- <HOME> = 135;
- <PGUP> = 119;
- <DELE> = 129;
- <END> = 130;
- <PGDN> = 134;
-
- <UP> = 128;
- <LEFT> = 132;
- <DOWN> = 120;
- <RGHT> = 133;
-
- <KPDV> = 125;
-
- <KPEN> = 124;
-};
-
-
-// IBM ThinkPad Z60m/Z60t/Z61m/Z61t
-xkb_keycodes "thinkpadz60" {
- include "xfree86(xfree86)"
- <MENU> = 227;
-};
+// "standard" XFree86 codes
+// It seems that the "default" must be the first entry in the file.
+
+default xkb_keycodes "xfree86" {
+ include "xfree86(basic)"
+ <BKSL> = 51;
+ alias <AC12> = <BKSL>;
+ <LSGT> = 94;
+};
+
+xkb_keycodes "basic" {
+
+ minimum= 8;
+ maximum= 255;
+
+ <TLDE> = 49;
+ alias <AE00> = <TLDE>; // Some geometries use AE00
+ <AE01> = 10;
+ <AE02> = 11;
+ <AE03> = 12;
+ <AE04> = 13;
+ <AE05> = 14;
+ <AE06> = 15;
+ <AE07> = 16;
+ <AE08> = 17;
+ <AE09> = 18;
+ <AE10> = 19;
+ <AE11> = 20;
+ <AE12> = 21;
+ <BKSP> = 22;
+
+ <TAB> = 23;
+ <AD01> = 24;
+ <AD02> = 25;
+ <AD03> = 26;
+ <AD04> = 27;
+ <AD05> = 28;
+ <AD06> = 29;
+ <AD07> = 30;
+ <AD08> = 31;
+ <AD09> = 32;
+ <AD10> = 33;
+ <AD11> = 34;
+ <AD12> = 35;
+ <RTRN> = 36;
+
+ <CAPS> = 66;
+ <AC01> = 38;
+ <AC02> = 39;
+ <AC03> = 40;
+ <AC04> = 41;
+ <AC05> = 42;
+ <AC06> = 43;
+ <AC07> = 44;
+ <AC08> = 45;
+ <AC09> = 46;
+ <AC10> = 47;
+ <AC11> = 48;
+
+ <LFSH> = 50;
+ <AB01> = 52;
+ <AB02> = 53;
+ <AB03> = 54;
+ <AB04> = 55;
+ <AB05> = 56;
+ <AB06> = 57;
+ <AB07> = 58;
+ <AB08> = 59;
+ <AB09> = 60;
+ <AB10> = 61;
+ <RTSH> = 62;
+
+ <LALT> = 64;
+ <LCTL> = 37;
+ <SPCE> = 65;
+ <RCTL> = 109;
+ <RALT> = 113;
+ // Microsoft keyboard extra keys
+ <LWIN> = 115;
+ <RWIN> = 116;
+ <MENU> = 117;
+
+ <ESC> = 9;
+ <FK01> = 67;
+ <FK02> = 68;
+ <FK03> = 69;
+ <FK04> = 70;
+ <FK05> = 71;
+ <FK06> = 72;
+ <FK07> = 73;
+ <FK08> = 74;
+ <FK09> = 75;
+ <FK10> = 76;
+ <FK11> = 95;
+ <FK12> = 96;
+
+ <PRSC> = 111;
+ <SYRQ> = 92;
+ <SCLK> = 78;
+ <PAUS> = 110;
+ <BRK> = 114;
+
+ <INS> = 106;
+ <HOME> = 97;
+ <PGUP> = 99;
+ <DELE> = 107;
+ <END> = 103;
+ <PGDN> = 105;
+
+ <UP> = 98;
+ <LEFT> = 100;
+ <DOWN> = 104;
+ <RGHT> = 102;
+
+ <NMLK> = 77;
+ <KPDV> = 112;
+ <KPMU> = 63;
+ <KPSU> = 82;
+
+ <KP7> = 79;
+ <KP8> = 80;
+ <KP9> = 81;
+ <KPAD> = 86;
+
+ <KP4> = 83;
+ <KP5> = 84;
+ <KP6> = 85;
+
+ <KP1> = 87;
+ <KP2> = 88;
+ <KP3> = 89;
+ <KPEN> = 108;
+
+ <KP0> = 90;
+ <KPDL> = 91;
+ <KPEQ> = 126;
+
+ <FK13> = 118;
+ <FK14> = 119;
+ <FK15> = 120;
+ <FK16> = 121;
+ <FK17> = 122;
+ <KPDC> = 123;
+
+ // Keys that are generated on Japanese keyboards
+
+ alias <HZTG> = <TLDE>; // Hankaku_Zenkaku toggle
+ <HKTG> = 208; // Hiragana_Katakana toggle
+ <AB11> = 211; // backslash/underscore
+ <XFER> = 129; // Henkan
+ <NFER> = 131; // Muhenkan
+ <AE13> = 133; // Yen
+ <EISU> = 210; // Alphanumeric mode on macintosh
+ <KANA> = 209; // Kana mode on macintosh
+
+ // Keys that are generated on Korean keyboards
+
+ alias <HNGL> = <FK16>; // Hangul Latin toggle
+ alias <HJCV> = <FK17>; // Hangul to Hanja conversion
+
+ // Extended keys that may be generated on "Internet" keyboards.
+ // These are not standardised, hence the meaningless names.
+ // The entries commented out are never generated because the raw codes
+ // in those positions are already used for well-defined keys.
+
+ alias <I01> = <XFER>;
+ <I02> = 130;
+ alias <I03> = <NFER>;
+ <I04> = 132;
+ alias <I05> = <AE13>;
+ <I06> = 134;
+ <I07> = 135;
+ <I08> = 136;
+ <I09> = 137;
+ <I0A> = 138;
+ <I0B> = 139;
+ <I0C> = 140;
+ <I0D> = 141;
+ <I0E> = 142;
+ <I0F> = 143;
+ <I10> = 144;
+ <I11> = 145;
+ <I12> = 146;
+ <I13> = 147;
+ <I14> = 148;
+ <I15> = 149;
+ <I16> = 150;
+ <I17> = 151;
+ <I18> = 152;
+ <I19> = 153;
+ <I1A> = 154;
+ <I1B> = 155;
+ // <I1C> = 156; <META>
+ // <I1D> = 157; <K59>
+ <I1E> = 158;
+ <I1F> = 159;
+ <I20> = 160;
+ <I21> = 161;
+ <I22> = 162;
+ <I23> = 163;
+ <I24> = 164;
+ <I25> = 165;
+ <I26> = 166;
+ <I27> = 167;
+ <I28> = 168;
+ <I29> = 169;
+ // <I2A> = 170; <K5A>
+ <I2B> = 171;
+ <I2C> = 172;
+ <I2D> = 173;
+ <I2E> = 174;
+ <I2F> = 175;
+ <I30> = 176;
+ <I31> = 177;
+ <I32> = 178;
+ <I33> = 179;
+ <I34> = 180;
+ // <I35> = 181; <K5B>
+ // <I36> = 182; <K5D>
+ // <I37> = 183; <K5E>
+ // <I38> = 184; <K5F>
+ <I39> = 185;
+ <I3A> = 186;
+ <I3B> = 187;
+ <I3C> = 188;
+ // <I3D> = 189; <K62>
+ // <I3E> = 190; <K63>
+ // <I3F> = 191; <K64>
+ // <I40> = 192; <K65>
+ // <I41> = 193; <K66>
+ <I42> = 194;
+ <I43> = 195;
+ <I44> = 196;
+ <I45> = 197;
+ // <I46> = 198; <K67>
+ // <I47> = 199; <K68>
+ // <I48> = 200; <K69>
+ // <I49> = 201; <K6A>
+ <I4A> = 202;
+ // <I4B> = 203; <K6B>
+ // <I4C> = 204; <K6C>
+ // <I4D> = 205; <K6D>
+ // <I4E> = 206; <K6E>
+ // <I4F> = 207; <K6F>
+ // <I50> = 208; <K70>
+ // <I51> = 209; <K71>
+ // <I52> = 210; <K72>
+ // <I53> = 211; <K73>
+ <I54> = 212;
+ <I55> = 213;
+ <I56> = 214;
+ <I57> = 215;
+ <I58> = 216;
+ <I59> = 217;
+ <I5A> = 218;
+ // <I5B> = 219; <K74>
+ // <I5C> = 220; <K75>
+ // <I5D> = 221; <K76>
+ <I5E> = 222;
+ <I5F> = 223;
+ <I60> = 224;
+ <I61> = 225;
+ <I62> = 226;
+ <I63> = 227;
+ <I64> = 228;
+ <I65> = 229;
+ <I66> = 230;
+ <I67> = 231;
+ <I68> = 232;
+ <I69> = 233;
+ <I6A> = 234;
+ <I6B> = 235;
+ <I6C> = 236;
+ <I6D> = 237;
+ <I6E> = 238;
+ <I6F> = 239;
+ <I70> = 240;
+ <I71> = 241;
+ <I72> = 242;
+ <I73> = 243;
+ <I74> = 244;
+ <I75> = 245;
+ <I76> = 246;
+ <I77> = 247;
+ <I78> = 248;
+ <I79> = 249;
+ <I7A> = 250;
+ <I7B> = 251;
+ <I7C> = 252;
+ <I7D> = 253;
+ <I7E> = 254;
+ <I7F> = 255;
+
+ // MacBooks generate 0x65 for the lower brightness key
+ <II65> = 101;
+
+ // Codes generated for scancodes 0x59-0x5f, 0x62-0x76
+ <K59> = 157; // <I1D>
+ <K5A> = 170; // <I2A>
+ <K5B> = 181; // <I35>
+ alias <K5C> = <KPEQ>;
+ <K5D> = 182; // <I36>
+ <K5E> = 183; // <I37>
+ <K5F> = 184; // <I38>
+ <K62> = 189; // <I3D>
+ <K63> = 190; // <I3E>
+ <K64> = 191; // <I3F>
+ <K65> = 192; // <I40>
+ <K66> = 193; // <I41>
+ <K67> = 198; // <I46>
+ <K68> = 199; // <I47>
+ <K69> = 200; // <I48>
+ <K6A> = 201; // <I49>
+ <K6B> = 203; // <I4B>
+ <K6C> = 204; // <I4C>
+ <K6D> = 205; // <I4D>
+ <K6E> = 206; // <I4E>
+ <K6F> = 207; // <I4F>
+ alias <K70> = <HKTG>; // <I50>
+ alias <K71> = <KANA>; // <I51>
+ alias <K72> = <EISU>; // <I52>
+ alias <K73> = <AB11>; // <I53>
+ <K74> = 219; // <I5B>
+ <K75> = 220; // <I5C>
+ <K76> = 221; // <I5D>
+
+ // Solaris compatibility
+
+ alias <LMTA> = <LWIN>;
+ alias <RMTA> = <RWIN>;
+ alias <COMP> = <MENU>;
+ alias <POWR> = <I0C>;
+ alias <MUTE> = <I0D>;
+ alias <VOL-> = <I0E>;
+ alias <VOL+> = <I0F>;
+ alias <HELP> = <I10>;
+ alias <STOP> = <I11>;
+ alias <AGAI> = <I12>;
+ alias <PROP> = <I13>;
+ alias <UNDO> = <I14>;
+ alias <FRNT> = <I15>;
+ alias <COPY> = <I16>;
+ alias <OPEN> = <I17>;
+ alias <PAST> = <I18>;
+ alias <FIND> = <I19>;
+ alias <CUT> = <I1A>;
+ alias <OUTP> = <I56>;
+ alias <KITG> = <I57>;
+ alias <KIDN> = <I58>;
+ alias <KIUP> = <I59>;
+
+ // Other codes never generated. The XFree86 ddx never generates
+ // these codes.
+ // Thus we can use them as fake keys
+ <MDSW> = 93; // <U5D>
+ <LVL3> = 124; // <U7C>
+ <ALT> = 125; // <U7D>
+ <META> = 156; // <I1C>
+ <SUPR> = 127; // <U7F>
+ <HYPR> = 128; // <U80>
+
+ indicator 1 = "Caps Lock";
+ indicator 2 = "Num Lock";
+ indicator 3 = "Scroll Lock";
+
+ alias <ALGR> = <RALT>;
+
+ // For Brazilian ABNT2
+ alias <KPPT> = <I06>;
+};
+
+// What keyboard is this?
+
+xkb_keycodes "102" {
+ include "xfree86(xfree86)"
+
+ // There will be warnings from xkbcomp because of multiple definitions.
+
+ <RALT> = 122;
+ <RCTL> = 123;
+
+ <PRSC> = 121;
+ <PAUS> = 118;
+
+ <INS> = 131;
+ <HOME> = 135;
+ <PGUP> = 119;
+ <DELE> = 129;
+ <END> = 130;
+ <PGDN> = 134;
+
+ <UP> = 128;
+ <LEFT> = 132;
+ <DOWN> = 120;
+ <RGHT> = 133;
+
+ <KPDV> = 125;
+
+ <KPEN> = 124;
+};
+
+
+// IBM ThinkPad Z60m/Z60t/Z61m/Z61t
+xkb_keycodes "thinkpadz60" {
+ include "xfree86(xfree86)"
+ <MENU> = 227;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/xfree98 b/xorg-server/xkeyboard-config/keycodes/xfree98
index 59483caf3..3faea5ca5 100644
--- a/xorg-server/xkeyboard-config/keycodes/xfree98
+++ b/xorg-server/xkeyboard-config/keycodes/xfree98
@@ -1,155 +1,152 @@
-// $Xorg: xfree98,v 1.4 2001/02/09 02:05:52 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-// $XFree86: xc/programs/xkbcomp/keycodes/xfree98,v 3.6 2001/01/17 23:45:51 dawes Exp $
-//
-default xkb_keycodes "pc98" {
-
- minimum= 8;
- maximum= 255;
-
- <ESC> = 8;
- <AE01> = 9;
- <AE02> = 10;
- <AE03> = 11;
- <AE04> = 12;
- <AE05> = 13;
- <AE06> = 14;
- <AE07> = 15;
- <AE08> = 16;
- <AE09> = 17;
- <AE10> = 18;
- <AE11> = 19;
- <AE12> = 20;
- <BKSL> = 21;
- <BKSP> = 22;
-
- <TAB> = 23;
- <AD01> = 24;
- <AD02> = 25;
- <AD03> = 26;
- <AD04> = 27;
- <AD05> = 28;
- <AD06> = 29;
- <AD07> = 30;
- <AD08> = 31;
- <AD09> = 32;
- <AD10> = 33;
- <AD11> = 34;
- <AD12> = 35;
- <RTRN> = 36;
-
- <LCTL> = 124;
- <CAPS> = 121;
- <AC01> = 37;
- <AC02> = 38;
- <AC03> = 39;
- <AC04> = 40;
- <AC05> = 41;
- <AC06> = 42;
- <AC07> = 43;
- <AC08> = 44;
- <AC09> = 45;
- <AC10> = 46;
- <AC11> = 47;
- <AC12> = 48;
-
- <LFSH> = 120;
- <AB01> = 49;
- <AB02> = 50;
- <AB03> = 51;
- <AB04> = 52;
- <AB05> = 53;
- <AB06> = 54;
- <AB07> = 55;
- <AB08> = 56;
- <AB09> = 57;
- <AB10> = 58;
- <AB11> = 59;
-
- <ALGR> = 122;
- <LALT> = 123;
- <NFER> = 89;
- <SPCE> = 60;
- <XFER> = 61;
-
- <BRK> = 104;
- <PRSC> = 105;
- <FK01> = 106;
- <FK02> = 107;
- <FK03> = 108;
- <FK04> = 109;
- <FK05> = 110;
- <FK06> = 111;
- <FK07> = 112;
- <FK08> = 113;
- <FK09> = 114;
- <FK10> = 115;
- <FK11> = 90;
- <FK12> = 91;
- <FK13> = 92;
- <FK14> = 93;
- <FK15> = 94;
-
-
- <INS> = 64;
- <DELE> = 65;
- <PGUP> = 63;
- <PGDN> = 62;
- <UP> = 66;
- <LEFT> = 67;
- <RGHT> = 68;
- <DOWN> = 69;
-
- <HOME> = 70;
- <HELP> = 71;
-
- <KPSU> = 72;
- <KPDV> = 73;
-
- <KP7> = 74;
- <KP8> = 75;
- <KP9> = 76;
- <KPMU> = 77;
-
- <KP4> = 78;
- <KP5> = 79;
- <KP6> = 80;
- <KPAD> = 81;
-
- <KP1> = 82;
- <KP2> = 83;
- <KP3> = 84;
- <KPEQ> = 85;
-
- <KP0> = 86;
- <KPSP> = 87;
- <KPDC> = 88;
-
- indicator 1 = "Caps Lock";
- indicator 2 = "Kana";
-};
-
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+//
+default xkb_keycodes "pc98" {
+
+ minimum= 8;
+ maximum= 255;
+
+ <ESC> = 8;
+ <AE01> = 9;
+ <AE02> = 10;
+ <AE03> = 11;
+ <AE04> = 12;
+ <AE05> = 13;
+ <AE06> = 14;
+ <AE07> = 15;
+ <AE08> = 16;
+ <AE09> = 17;
+ <AE10> = 18;
+ <AE11> = 19;
+ <AE12> = 20;
+ <BKSL> = 21;
+ <BKSP> = 22;
+
+ <TAB> = 23;
+ <AD01> = 24;
+ <AD02> = 25;
+ <AD03> = 26;
+ <AD04> = 27;
+ <AD05> = 28;
+ <AD06> = 29;
+ <AD07> = 30;
+ <AD08> = 31;
+ <AD09> = 32;
+ <AD10> = 33;
+ <AD11> = 34;
+ <AD12> = 35;
+ <RTRN> = 36;
+
+ <LCTL> = 124;
+ <CAPS> = 121;
+ <AC01> = 37;
+ <AC02> = 38;
+ <AC03> = 39;
+ <AC04> = 40;
+ <AC05> = 41;
+ <AC06> = 42;
+ <AC07> = 43;
+ <AC08> = 44;
+ <AC09> = 45;
+ <AC10> = 46;
+ <AC11> = 47;
+ <AC12> = 48;
+
+ <LFSH> = 120;
+ <AB01> = 49;
+ <AB02> = 50;
+ <AB03> = 51;
+ <AB04> = 52;
+ <AB05> = 53;
+ <AB06> = 54;
+ <AB07> = 55;
+ <AB08> = 56;
+ <AB09> = 57;
+ <AB10> = 58;
+ <AB11> = 59;
+
+ <ALGR> = 122;
+ <LALT> = 123;
+ <NFER> = 89;
+ <SPCE> = 60;
+ <XFER> = 61;
+
+ <BRK> = 104;
+ <PRSC> = 105;
+ <FK01> = 106;
+ <FK02> = 107;
+ <FK03> = 108;
+ <FK04> = 109;
+ <FK05> = 110;
+ <FK06> = 111;
+ <FK07> = 112;
+ <FK08> = 113;
+ <FK09> = 114;
+ <FK10> = 115;
+ <FK11> = 90;
+ <FK12> = 91;
+ <FK13> = 92;
+ <FK14> = 93;
+ <FK15> = 94;
+
+
+ <INS> = 64;
+ <DELE> = 65;
+ <PGUP> = 63;
+ <PGDN> = 62;
+ <UP> = 66;
+ <LEFT> = 67;
+ <RGHT> = 68;
+ <DOWN> = 69;
+
+ <HOME> = 70;
+ <HELP> = 71;
+
+ <KPSU> = 72;
+ <KPDV> = 73;
+
+ <KP7> = 74;
+ <KP8> = 75;
+ <KP9> = 76;
+ <KPMU> = 77;
+
+ <KP4> = 78;
+ <KP5> = 79;
+ <KP6> = 80;
+ <KPAD> = 81;
+
+ <KP1> = 82;
+ <KP2> = 83;
+ <KP3> = 84;
+ <KPEQ> = 85;
+
+ <KP0> = 86;
+ <KPSP> = 87;
+ <KPDC> = 88;
+
+ indicator 1 = "Caps Lock";
+ indicator 2 = "Kana";
+};
diff --git a/xorg-server/xkeyboard-config/keymap/amiga b/xorg-server/xkeyboard-config/keymap/amiga
index d697a986b..10a7142a6 100644
--- a/xorg-server/xkeyboard-config/keymap/amiga
+++ b/xorg-server/xkeyboard-config/keymap/amiga
@@ -1,22 +1,15 @@
-// $Xorg: amiga,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
-
-
-
-
-// $XFree86: xc/programs/xkbcomp/keymap/amiga,v 3.2 1997/10/26 13:25:36 dawes Exp $
-
-default xkb_keymap "usa1" {
- xkb_keycodes { include "amiga(usa1)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "amiga(usa1)" };
- xkb_geometry { include "amiga(usa1)" };
-};
-
-xkb_keymap "de" {
- xkb_keycodes { include "amiga(de)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "amiga(de)" };
- xkb_geometry { include "amiga(de)" };
-};
+default xkb_keymap "usa1" {
+ xkb_keycodes { include "amiga(usa1)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "amiga(usa1)" };
+ xkb_geometry { include "amiga(usa1)" };
+};
+
+xkb_keymap "de" {
+ xkb_keycodes { include "amiga(de)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "amiga(de)" };
+ xkb_geometry { include "amiga(de)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/ataritt b/xorg-server/xkeyboard-config/keymap/ataritt
index b801ac291..1f8449131 100644
--- a/xorg-server/xkeyboard-config/keymap/ataritt
+++ b/xorg-server/xkeyboard-config/keymap/ataritt
@@ -1,21 +1,14 @@
-// $Xorg: ataritt,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
-
-
-
-
-// $XFree86: xc/programs/xkbcomp/keymap/ataritt,v 3.1 1997/10/26 13:25:37 dawes Exp $
-
-default xkb_keymap "us" {
- xkb_keycodes { include "ataritt(us)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "ataritt(us)" };
- xkb_geometry { include "ataritt(us)" };
-};
-xkb_keymap "de" {
- xkb_keycodes { include "ataritt(de)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "ataritt(de)" };
- xkb_geometry { include "ataritt(de)" };
-};
+default xkb_keymap "us" {
+ xkb_keycodes { include "ataritt(us)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "ataritt(us)" };
+ xkb_geometry { include "ataritt(us)" };
+};
+xkb_keymap "de" {
+ xkb_keycodes { include "ataritt(de)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "ataritt(de)" };
+ xkb_geometry { include "ataritt(de)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/digital_vndr/us b/xorg-server/xkeyboard-config/keymap/digital_vndr/us
index 7f5180e2c..8a600fc2e 100644
--- a/xorg-server/xkeyboard-config/keymap/digital_vndr/us
+++ b/xorg-server/xkeyboard-config/keymap/digital_vndr/us
@@ -1,188 +1,187 @@
-// $Xorg: us,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//Permission is hereby granted, free of charge, to any person obtaining
-//a copy of this software and associated documentation files (the
-//"Software"), to deal in the Software without restriction, including
-//without limitation the rights to use, copy, modify, merge, publish,
-//distribute, sublicense, and sell copies of the Software, and to
-//permit persons to whom the Software is furnished to do so, subject to
-//the following conditions:
-//
-//The above copyright notice and this permission notice shall be included
-//in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
-//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
-//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of the Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log: us,v
-// Revision 1.3 1996/06/18 09:14:51 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.6.2 1995/10/25 21:00:53 William_Walker
-// Add pc104-key support
-// [1995/10/23 15:46:24 William_Walker]
-//
-// Revision 1.1.2.6 1995/06/27 12:18:05 William_Walker
-// Add LK201 and LK450 support as well as TW and DP variants.
-// [1995/06/26 20:26:19 William_Walker]
-//
-// Revision 1.1.2.5 1995/06/05 19:23:12 William_Walker
-// New file. I love keymaps.
-// [1995/06/05 18:14:04 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: us,v Revision: 1.3 (DEC) Date: 1996/02/02 14:21:15
-//
-
-// **************************************************************
-// * *
-// * Keymaps for en_US.ISO8859-1 - English for U.S. *
-// * *
-// **************************************************************
-
-xkb_keymap "lk201" {
- xkb_keycodes { include "digital_vndr/lk(lk201)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "digital_vndr/us(vt105)" };
- xkb_geometry { description = "Digital US LK201";
- include "digital_vndr/lk(lk201)" };
-};
-
-xkb_keymap "lk401" {
- xkb_keycodes { include "digital_vndr/lk(lk401)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "digital_vndr/us(vt108)" };
- xkb_geometry { description = "Digital US LK401";
- include "digital_vndr/lk(lk401)" };
-};
-
-xkb_keymap "lk411" {
- xkb_keycodes { include "digital_vndr/pc(lk411)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "digital_vndr/us(vt108)" };
- xkb_geometry { description = "Digital US LK411";
- include "digital_vndr/lk(lk401)" };
-};
-
-xkb_keymap "lk421" {
- xkb_keycodes { include "digital_vndr/lk(lk421)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "digital_vndr/us(unix)" };
- xkb_geometry { description = "Digital US LK421";
- include "digital_vndr/unix(unix)" };
-};
-
-xkb_keymap "lk441" {
- xkb_keycodes { include "digital_vndr/lk(lk443)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "digital_vndr/us(lk44x)" };
- xkb_geometry { description = "Digital US LK441";
- include "digital_vndr/pc(pc101)"
- include "digital_vndr/pc(leds_alone)" };
-};
-
-xkb_keymap "lk443" {
- xkb_keycodes { include "digital_vndr/lk(lk443)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "digital_vndr/us(lk44x)" };
- xkb_geometry { description = "Digital US LK443";
- include "digital_vndr/pc(pc101)"
- include "digital_vndr/pc(leds_alone)" };
-};
-
-xkb_keymap "lk44x" {
- xkb_keycodes { include "digital_vndr/lk(lk443)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "digital_vndr/us(lk44x)" };
- xkb_geometry { description = "Digital US LK443";
- include "digital_vndr/pc(pc101)"
- include "digital_vndr/pc(leds_alone)" };
-};
-
-xkb_keymap "lk450" {
- xkb_keycodes { include "digital_vndr/pc(lk450)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "digital_vndr/us(vt108)" };
- xkb_geometry { description = "Digital US LK450";
- include "digital_vndr/lk(lk450)" };
-};
-
-xkb_keymap "pcxalaa" {
- xkb_keycodes { include "digital_vndr/pc(pc101)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "digital_vndr/us(pcxalaa)" };
- xkb_geometry { description = "Digital US PCXAL-AA";
- include "digital_vndr/pc(pc101)"
- include "digital_vndr/pc(leds_alone)" };
-};
-
-xkb_keymap "pcxalfa" {
- xkb_keycodes { include "digital_vndr/pc(pc101)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "digital_vndr/us(pcxalfa)" };
- xkb_geometry { description = "Digital US PCXAL-FA";
- include "digital_vndr/pc(pc101)"
- include "digital_vndr/pc(leds_on_keys)" };
-};
-
-xkb_keymap "pcxalga" {
- xkb_keycodes { include "digital_vndr/pc(pc101)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "digital_vndr/us(pcxalga)" };
- xkb_geometry { description = "Digital US PCXAL-GA";
- include "digital_vndr/pc(pc101)"
- include "digital_vndr/pc(leds_alone)" };
-};
-
-xkb_keymap "pcxalka" {
- xkb_keycodes { include "digital_vndr/pc(pc101)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "digital_vndr/us(pcxalka)" };
- xkb_geometry { description = "Digital US PCXAL-KA";
- include "digital_vndr/pc(pc101)"
- include "digital_vndr/pc(leds_alone)" };
-};
-
-xkb_keymap "pcxal" {
- xkb_keycodes { include "digital_vndr/pc(pc101)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "digital_vndr/us(pcxal)" };
- xkb_geometry { description = "Digital US PCXAL";
- include "digital_vndr/pc(pc101)"
- include "digital_vndr/pc(leds_alone)" };
-};
-
-xkb_keymap "mnk" {
- xkb_keycodes { include "digital_vndr/pc(pc104)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "digital_vndr/us(pc104)" };
- xkb_geometry { include "microsoft" };
-};
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//Permission is hereby granted, free of charge, to any person obtaining
+//a copy of this software and associated documentation files (the
+//"Software"), to deal in the Software without restriction, including
+//without limitation the rights to use, copy, modify, merge, publish,
+//distribute, sublicense, and sell copies of the Software, and to
+//permit persons to whom the Software is furnished to do so, subject to
+//the following conditions:
+//
+//The above copyright notice and this permission notice shall be included
+//in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
+//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of the Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log: us,v
+// Revision 1.3 1996/06/18 09:14:51 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.6.2 1995/10/25 21:00:53 William_Walker
+// Add pc104-key support
+// [1995/10/23 15:46:24 William_Walker]
+//
+// Revision 1.1.2.6 1995/06/27 12:18:05 William_Walker
+// Add LK201 and LK450 support as well as TW and DP variants.
+// [1995/06/26 20:26:19 William_Walker]
+//
+// Revision 1.1.2.5 1995/06/05 19:23:12 William_Walker
+// New file. I love keymaps.
+// [1995/06/05 18:14:04 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: us,v Revision: 1.3 (DEC) Date: 1996/02/02 14:21:15
+//
+
+// **************************************************************
+// * *
+// * Keymaps for en_US.ISO8859-1 - English for U.S. *
+// * *
+// **************************************************************
+
+xkb_keymap "lk201" {
+ xkb_keycodes { include "digital_vndr/lk(lk201)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "digital_vndr/us(vt105)" };
+ xkb_geometry { description = "Digital US LK201";
+ include "digital_vndr/lk(lk201)" };
+};
+
+xkb_keymap "lk401" {
+ xkb_keycodes { include "digital_vndr/lk(lk401)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "digital_vndr/us(vt108)" };
+ xkb_geometry { description = "Digital US LK401";
+ include "digital_vndr/lk(lk401)" };
+};
+
+xkb_keymap "lk411" {
+ xkb_keycodes { include "digital_vndr/pc(lk411)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "digital_vndr/us(vt108)" };
+ xkb_geometry { description = "Digital US LK411";
+ include "digital_vndr/lk(lk401)" };
+};
+
+xkb_keymap "lk421" {
+ xkb_keycodes { include "digital_vndr/lk(lk421)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "digital_vndr/us(unix)" };
+ xkb_geometry { description = "Digital US LK421";
+ include "digital_vndr/unix(unix)" };
+};
+
+xkb_keymap "lk441" {
+ xkb_keycodes { include "digital_vndr/lk(lk443)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "digital_vndr/us(lk44x)" };
+ xkb_geometry { description = "Digital US LK441";
+ include "digital_vndr/pc(pc101)"
+ include "digital_vndr/pc(leds_alone)" };
+};
+
+xkb_keymap "lk443" {
+ xkb_keycodes { include "digital_vndr/lk(lk443)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "digital_vndr/us(lk44x)" };
+ xkb_geometry { description = "Digital US LK443";
+ include "digital_vndr/pc(pc101)"
+ include "digital_vndr/pc(leds_alone)" };
+};
+
+xkb_keymap "lk44x" {
+ xkb_keycodes { include "digital_vndr/lk(lk443)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "digital_vndr/us(lk44x)" };
+ xkb_geometry { description = "Digital US LK443";
+ include "digital_vndr/pc(pc101)"
+ include "digital_vndr/pc(leds_alone)" };
+};
+
+xkb_keymap "lk450" {
+ xkb_keycodes { include "digital_vndr/pc(lk450)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "digital_vndr/us(vt108)" };
+ xkb_geometry { description = "Digital US LK450";
+ include "digital_vndr/lk(lk450)" };
+};
+
+xkb_keymap "pcxalaa" {
+ xkb_keycodes { include "digital_vndr/pc(pc101)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "digital_vndr/us(pcxalaa)" };
+ xkb_geometry { description = "Digital US PCXAL-AA";
+ include "digital_vndr/pc(pc101)"
+ include "digital_vndr/pc(leds_alone)" };
+};
+
+xkb_keymap "pcxalfa" {
+ xkb_keycodes { include "digital_vndr/pc(pc101)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "digital_vndr/us(pcxalfa)" };
+ xkb_geometry { description = "Digital US PCXAL-FA";
+ include "digital_vndr/pc(pc101)"
+ include "digital_vndr/pc(leds_on_keys)" };
+};
+
+xkb_keymap "pcxalga" {
+ xkb_keycodes { include "digital_vndr/pc(pc101)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "digital_vndr/us(pcxalga)" };
+ xkb_geometry { description = "Digital US PCXAL-GA";
+ include "digital_vndr/pc(pc101)"
+ include "digital_vndr/pc(leds_alone)" };
+};
+
+xkb_keymap "pcxalka" {
+ xkb_keycodes { include "digital_vndr/pc(pc101)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "digital_vndr/us(pcxalka)" };
+ xkb_geometry { description = "Digital US PCXAL-KA";
+ include "digital_vndr/pc(pc101)"
+ include "digital_vndr/pc(leds_alone)" };
+};
+
+xkb_keymap "pcxal" {
+ xkb_keycodes { include "digital_vndr/pc(pc101)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "digital_vndr/us(pcxal)" };
+ xkb_geometry { description = "Digital US PCXAL";
+ include "digital_vndr/pc(pc101)"
+ include "digital_vndr/pc(leds_alone)" };
+};
+
+xkb_keymap "mnk" {
+ xkb_keycodes { include "digital_vndr/pc(pc104)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "digital_vndr/us(pc104)" };
+ xkb_geometry { include "microsoft" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/macintosh b/xorg-server/xkeyboard-config/keymap/macintosh
index de115badc..345667054 100644
--- a/xorg-server/xkeyboard-config/keymap/macintosh
+++ b/xorg-server/xkeyboard-config/keymap/macintosh
@@ -1,17 +1,15 @@
-// $XConsortium: macintosh /main/11 1996/03/07 13:42:13 kaleb $
-// $XFree86: xc/programs/xkbcomp/keymap/macintosh,v 1.1 1999/05/23 05:27:51 dawes Exp $
-default xkb_keymap "macintosh" {
- xkb_keycodes { include "macintosh" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "macintosh_vndr/us(extended)" };
- xkb_geometry { include "macintosh" };
-};
-
-xkb_keymap "macintosh_old" {
- xkb_keycodes { include "macintosh(old)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "macintosh_vndr/us(extended)" };
- xkb_geometry { include "macintosh" };
-};
+default xkb_keymap "macintosh" {
+ xkb_keycodes { include "macintosh" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "macintosh_vndr/us(extended)" };
+ xkb_geometry { include "macintosh" };
+};
+
+xkb_keymap "macintosh_old" {
+ xkb_keycodes { include "macintosh(old)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "macintosh_vndr/us(extended)" };
+ xkb_geometry { include "macintosh" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/be b/xorg-server/xkeyboard-config/keymap/sgi_vndr/be
index 9905f0ba6..1301e5596 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/be
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/be
@@ -1,34 +1,32 @@
-// $Xorg: be,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc_universal)+be" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal_nodeadkeys)+be(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc102)+be" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102_nodeadkeys)+be(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)+be" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal_nodeadkeys)+be(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102)+be" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102_nodeadkeys)+be(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/bg b/xorg-server/xkeyboard-config/keymap/sgi_vndr/bg
index a3cb08a22..556f1146b 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/bg
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/bg
@@ -1,19 +1,18 @@
-// $Xorg: bg,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "us(pc_universal)+bg+group(shifts_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "us(pc102)+bg+group(shifts_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "us(pc_universal)+bg+group(shifts_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "us(pc102)+bg+group(shifts_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/ca b/xorg-server/xkeyboard-config/keymap/sgi_vndr/ca
index 38f489657..528b0642a 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/ca
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/ca
@@ -1,33 +1,32 @@
-// $Xorg: ca,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc_universal)+ca" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal_nodeadkeys)+ca(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc102)+ca" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102_nodeadkeys)+ca(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)+ca" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal_nodeadkeys)+ca(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102)+ca" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102_nodeadkeys)+ca(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/ch b/xorg-server/xkeyboard-config/keymap/sgi_vndr/ch
index 6970a3679..ca35be7d9 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/ch
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/ch
@@ -1,67 +1,65 @@
-// $Xorg: de_CH,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
-default xkb_keymap "de_indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc_universal)+ch(de)" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "de_indy_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal_nodeadkeys)+ch(de_nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "de_indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc102)+ch(de)" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "de_indigo_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102_nodeadkeys)+ch(dr_nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-
-default xkb_keymap "fr_indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc_universal)+ch(fr)" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "fr_indy_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal_nodeadkeys)+ch(fr_nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "fr_indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc102)+ch(fr)" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "fr_indigo_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102_nodeadkeys)+ch(fr_nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-
+default xkb_keymap "de_indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)+ch(de)" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "de_indy_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal_nodeadkeys)+ch(de_nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "de_indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102)+ch(de)" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "de_indigo_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102_nodeadkeys)+ch(dr_nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+
+default xkb_keymap "fr_indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)+ch(fr)" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "fr_indy_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal_nodeadkeys)+ch(fr_nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "fr_indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102)+ch(fr)" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "fr_indigo_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102_nodeadkeys)+ch(fr_nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/cz b/xorg-server/xkeyboard-config/keymap/sgi_vndr/cz
index 6673b615b..8e4a0a79c 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/cz
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/cz
@@ -1,33 +1,29 @@
-// $Xorg: cs,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
-//
-
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc_universal)+cz" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc102)+cz" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-
-default xkb_keymap "indy_qwerty" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc_universal)+cz(qwerty)" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo_qwerty" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc102)+cz(qwerty)" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc_universal)+cz" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc102)+cz" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+
+default xkb_keymap "indy_qwerty" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc_universal)+cz(qwerty)" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo_qwerty" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc102)+cz(qwerty)" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/de b/xorg-server/xkeyboard-config/keymap/sgi_vndr/de
index 1ad7fe7b0..c63caf9b0 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/de
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/de
@@ -1,34 +1,32 @@
-// $Xorg: de,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc_universal)+de" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal_nodeadkeys)+de(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc102)+de" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102_nodeadkeys)+de(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)+de" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal_nodeadkeys)+de(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102)+de" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102_nodeadkeys)+de(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/dk b/xorg-server/xkeyboard-config/keymap/sgi_vndr/dk
index 832f01da7..017443d56 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/dk
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/dk
@@ -1,34 +1,32 @@
-// $Xorg: dk,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc_universal)+dk" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal_nodeadkeys)+dk(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc102)+dk" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102_nodeadkeys)+dk(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)+dk" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal_nodeadkeys)+dk(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102)+dk" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102_nodeadkeys)+dk(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/dvorak b/xorg-server/xkeyboard-config/keymap/sgi_vndr/dvorak
index bd594b0eb..b84bc5659 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/dvorak
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/dvorak
@@ -1,15 +1,14 @@
-// $Xorg: dvorak,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc_universal)+dvorak" };
- xkb_geometry { include "sgi_vndr/indy(pc101)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc101)+dvorak" };
- xkb_geometry { include "sgi_vndr/indigo(pc101)" };
-};
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc_universal)+dvorak" };
+ xkb_geometry { include "sgi_vndr/indy(pc101)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc101)+dvorak" };
+ xkb_geometry { include "sgi_vndr/indigo(pc101)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/en_US b/xorg-server/xkeyboard-config/keymap/sgi_vndr/en_US
index 29f1666b7..184d4b896 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/en_US
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/en_US
@@ -1,4 +1,3 @@
-// $Xorg: en_US,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
default xkb_keymap "indy" {
xkb_keycodes { include "sgi_vndr/indy(universal)" };
xkb_types { include "default" };
@@ -55,4 +54,3 @@ xkb_keymap "indigo_nodeadkeys" {
xkb_symbols { include "en_US(pc102_nodeadkeys)" };
xkb_geometry { include "sgi_vndr/indigo(pc102)" };
};
-
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/es b/xorg-server/xkeyboard-config/keymap/sgi_vndr/es
index f1aad9a7a..96898c6e3 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/es
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/es
@@ -1,34 +1,32 @@
-// $Xorg: es,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc_universal)+es" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal_nodeadkeys)+es(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc102)+es" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102_nodeadkeys)+es(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)+es" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal_nodeadkeys)+es(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102)+es" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102_nodeadkeys)+es(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/fi b/xorg-server/xkeyboard-config/keymap/sgi_vndr/fi
index 67af07eb7..ca99af149 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/fi
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/fi
@@ -1,34 +1,32 @@
-// $Xorg: fi,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc_universal)+fi" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal_nodeadkeys)+fi(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc102)+fi" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102_nodeadkeys)+fi(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)+fi" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal_nodeadkeys)+fi(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102)+fi" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102_nodeadkeys)+fi(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/fr b/xorg-server/xkeyboard-config/keymap/sgi_vndr/fr
index b6aea29de..fa84b65a7 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/fr
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/fr
@@ -1,34 +1,32 @@
-// $Xorg: fr,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc_universal)+fr" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal_nodeadkeys)+fr(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc102)+fr" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102_nodeadkeys)+fr(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)+fr" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal_nodeadkeys)+fr(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102)+fr" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102_nodeadkeys)+fr(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/gb b/xorg-server/xkeyboard-config/keymap/sgi_vndr/gb
index 6fa6d6515..90f79c194 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/gb
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/gb
@@ -1,34 +1,32 @@
-// $Xorg: gb,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc_universal)+gb" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal_nodeadkeys)+gb(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc102)+gb" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102_nodeadkeys)+gb(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)+gb" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal_nodeadkeys)+gb(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102)+gb" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102_nodeadkeys)+gb(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/hu b/xorg-server/xkeyboard-config/keymap/sgi_vndr/hu
index 3c256846e..653236f2f 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/hu
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/hu
@@ -1,105 +1,104 @@
-// $Xorg: hu,v 1.3 2000/08/17 19:54:41 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc_universal)+hu(basic)" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_toggle" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal)+hu(basic)+group(toggle)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_shift_toggle" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal)+hu(basic)+group(shifts_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_ctrl_shift_toggle" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal)+hu(basic)+group(ctrl_shift_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_ctrl_alt_toggle" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal)+hu(basic)+group(ctrl_alt_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_caps_toggle" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal)+hu(basic)+group(caps_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc102)+hu(basic)" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_toggle" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102)+hu(basic)+group(toggle)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_shift_toggle" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102)+hu(basic)+group(shifts_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_ctrl_shift_toggle" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102)+hu(basic)+group(ctrl_shift_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_ctrl_alt_toggle" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102)+hu(basic)+group(ctrl_alt_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_caps_toggle" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102)+hu(basic)+group(caps_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)+hu(basic)" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_toggle" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal)+hu(basic)+group(toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_shift_toggle" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal)+hu(basic)+group(shifts_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_ctrl_shift_toggle" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal)+hu(basic)+group(ctrl_shift_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_ctrl_alt_toggle" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal)+hu(basic)+group(ctrl_alt_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_caps_toggle" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal)+hu(basic)+group(caps_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102)+hu(basic)" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_toggle" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102)+hu(basic)+group(toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_shift_toggle" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102)+hu(basic)+group(shifts_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_ctrl_shift_toggle" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102)+hu(basic)+group(ctrl_shift_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_ctrl_alt_toggle" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102)+hu(basic)+group(ctrl_alt_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_caps_toggle" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102)+hu(basic)+group(caps_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/it b/xorg-server/xkeyboard-config/keymap/sgi_vndr/it
index ed92227b7..64a413d4d 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/it
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/it
@@ -1,34 +1,32 @@
-// $Xorg: it,v 1.3 2000/08/17 19:54:41 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc_universal)+it" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal_nodeadkeys)+it(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc102)+it" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102_nodeadkeys)+it(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)+it" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal_nodeadkeys)+it(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102)+it" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102_nodeadkeys)+it(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/jp b/xorg-server/xkeyboard-config/keymap/sgi_vndr/jp
index 74ed4243c..96280c105 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/jp
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/jp
@@ -1,8 +1,7 @@
-// $Xorg: jp,v 1.3 2000/08/17 19:54:41 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(jp106)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc101)+sgi_vndr/jp" };
- xkb_geometry { include "sgi_vndr/indy(jp106)" };
-};
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(jp106)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc101)+sgi_vndr/jp" };
+ xkb_geometry { include "sgi_vndr/indy(jp106)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/no b/xorg-server/xkeyboard-config/keymap/sgi_vndr/no
index fd32c72c0..8fc326abe 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/no
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/no
@@ -1,34 +1,32 @@
-// $Xorg: no,v 1.3 2000/08/17 19:54:41 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc_universal)+no" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal_nodeadkeys)+no(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc102)+no" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102_nodeadkeys)+no(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)+no" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal_nodeadkeys)+no(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102)+no" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102_nodeadkeys)+no(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/pl b/xorg-server/xkeyboard-config/keymap/sgi_vndr/pl
index 3641a31ad..623e06f8f 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/pl
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/pl
@@ -1,29 +1,28 @@
-// $Xorg: pl,v 1.3 2000/08/17 19:54:41 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc_universal)+pl" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc_universal)+pl(nodeadkeys)" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc102)+pl" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc102)+pl(nodeadkeys)" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc_universal)+pl" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc_universal)+pl(nodeadkeys)" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc102)+pl" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc102)+pl(nodeadkeys)" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/pt b/xorg-server/xkeyboard-config/keymap/sgi_vndr/pt
index 3ec03471a..6be76ddb9 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/pt
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/pt
@@ -1,34 +1,32 @@
-// $Xorg: pt,v 1.3 2000/08/17 19:54:41 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc_universal)+pt" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal_nodeadkeys)+pt(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc102)+pt" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102_nodeadkeys)+pt(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)+pt" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal_nodeadkeys)+pt(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102)+pt" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102_nodeadkeys)+pt(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/ru b/xorg-server/xkeyboard-config/keymap/sgi_vndr/ru
index fc514d87c..45ebdf76f 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/ru
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/ru
@@ -1,105 +1,104 @@
-// $Xorg: ru,v 1.3 2000/08/17 19:54:41 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc_universal)+ru(basic)" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_toggle" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal)+ru(basic)+group(toggle)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_shift_toggle" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal)+ru(basic)+group(shifts_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_ctrl_shift_toggle" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal)+ru(basic)+group(ctrl_shift_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_ctrl_alt_toggle" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal)+ru(basic)+group(ctrl_alt_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_caps_toggle" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal)+ru(basic)+group(caps_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc102)+ru(basic)" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_toggle" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102)+ru(basic)+group(toggle)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_shift_toggle" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102)+ru(basic)+group(shifts_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_ctrl_shift_toggle" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102)+ru(basic)+group(ctrl_shift_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_ctrl_alt_toggle" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102)+ru(basic)+group(ctrl_alt_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_caps_toggle" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102)+ru(basic)+group(caps_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)+ru(basic)" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_toggle" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal)+ru(basic)+group(toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_shift_toggle" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal)+ru(basic)+group(shifts_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_ctrl_shift_toggle" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal)+ru(basic)+group(ctrl_shift_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_ctrl_alt_toggle" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal)+ru(basic)+group(ctrl_alt_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_caps_toggle" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal)+ru(basic)+group(caps_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102)+ru(basic)" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_toggle" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102)+ru(basic)+group(toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_shift_toggle" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102)+ru(basic)+group(shifts_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_ctrl_shift_toggle" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102)+ru(basic)+group(ctrl_shift_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_ctrl_alt_toggle" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102)+ru(basic)+group(ctrl_alt_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_caps_toggle" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102)+ru(basic)+group(caps_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/se b/xorg-server/xkeyboard-config/keymap/sgi_vndr/se
index 910a8cc89..7ac2fbc6b 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/se
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/se
@@ -1,34 +1,32 @@
-// $Xorg: se,v 1.3 2000/08/17 19:54:41 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc_universal)+se" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indy_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal_nodeadkeys)+se(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc102)+se" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-xkb_keymap "indigo_nodeadkeys" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc102_nodeadkeys)+se(nodeadkeys)"
- };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc_universal)+se" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indy_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal_nodeadkeys)+se(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102)+se" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+xkb_keymap "indigo_nodeadkeys" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc102_nodeadkeys)+se(nodeadkeys)"
+ };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/sk b/xorg-server/xkeyboard-config/keymap/sgi_vndr/sk
index 09b6a2956..53c5ebd84 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/sk
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/sk
@@ -1,33 +1,29 @@
-// $Xorg: cs,v 1.3 2000/08/17 19:54:40 cpqbld Exp $
-//
-
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc_universal)+sk" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc102)+sk" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-
-default xkb_keymap "indy_qwerty" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc_universal)+sk(qwerty)" };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo_qwerty" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc102)+sk(qwerty)" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
-
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc_universal)+sk" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc102)+sk" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
+
+default xkb_keymap "indy_qwerty" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc_universal)+sk(qwerty)" };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo_qwerty" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc102)+sk(qwerty)" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/th b/xorg-server/xkeyboard-config/keymap/sgi_vndr/th
index aa03c8c11..a1fb26601 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/th
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/th
@@ -1,17 +1,16 @@
-// $Xorg: th,v 1.3 2000/08/17 19:54:41 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "en_US(pc_universal)+th+group(shifts_toggle)"
- };
- xkb_geometry { include "sgi_vndr/indy(pc102)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "en_US(pc102)+th+group(shifts_toggle)" };
- xkb_geometry { include "sgi_vndr/indigo(pc102)" };
-};
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "en_US(pc_universal)+th+group(shifts_toggle)"
+ };
+ xkb_geometry { include "sgi_vndr/indy(pc102)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc102)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "en_US(pc102)+th+group(shifts_toggle)" };
+ xkb_geometry { include "sgi_vndr/indigo(pc102)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sgi_vndr/us b/xorg-server/xkeyboard-config/keymap/sgi_vndr/us
index 5850145ca..156e3684d 100644
--- a/xorg-server/xkeyboard-config/keymap/sgi_vndr/us
+++ b/xorg-server/xkeyboard-config/keymap/sgi_vndr/us
@@ -1,43 +1,42 @@
-// $Xorg: us,v 1.3 2000/08/17 19:54:41 cpqbld Exp $
-default xkb_keymap "indy" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc_universal)" };
- xkb_geometry { include "sgi_vndr/indy(pc101)" };
-};
-xkb_keymap "indy101_euro" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc_universal)" };
- xkb_geometry { include "sgi_vndr/indy(pc101)" };
-};
-xkb_keymap "indy_compose" {
- xkb_keycodes { include "sgi_vndr/indy(universal)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc_universal)" };
- xkb_geometry { include "sgi_vndr/indy(pc101)" };
-};
-xkb_keymap "indigo" {
- xkb_keycodes { include "sgi_vndr/indigo(pc101)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc101)" };
- xkb_geometry { include "sgi_vndr/indigo(pc101)" };
-};
-xkb_keymap "indigo_compose" {
- xkb_keycodes { include "sgi_vndr/indigo(pc101)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc101compose)" };
- xkb_geometry { include "sgi_vndr/indigo(pc101)" };
-};
-xkb_keymap "indigo101_compose" {
- xkb_keycodes { include "sgi_vndr/indigo(pc101)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc101euro)" };
- xkb_geometry { include "sgi_vndr/indigo(pc101)" };
-};
+default xkb_keymap "indy" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc_universal)" };
+ xkb_geometry { include "sgi_vndr/indy(pc101)" };
+};
+xkb_keymap "indy101_euro" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc_universal)" };
+ xkb_geometry { include "sgi_vndr/indy(pc101)" };
+};
+xkb_keymap "indy_compose" {
+ xkb_keycodes { include "sgi_vndr/indy(universal)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc_universal)" };
+ xkb_geometry { include "sgi_vndr/indy(pc101)" };
+};
+xkb_keymap "indigo" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc101)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc101)" };
+ xkb_geometry { include "sgi_vndr/indigo(pc101)" };
+};
+xkb_keymap "indigo_compose" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc101)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc101compose)" };
+ xkb_geometry { include "sgi_vndr/indigo(pc101)" };
+};
+xkb_keymap "indigo101_compose" {
+ xkb_keycodes { include "sgi_vndr/indigo(pc101)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc101euro)" };
+ xkb_geometry { include "sgi_vndr/indigo(pc101)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sony b/xorg-server/xkeyboard-config/keymap/sony
index c4be3b1b8..ce4f566df 100644
--- a/xorg-server/xkeyboard-config/keymap/sony
+++ b/xorg-server/xkeyboard-config/keymap/sony
@@ -1,33 +1,32 @@
-// $Xorg: sony,v 1.4 2001/02/09 02:05:52 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-xkb_keymap "news5000-nwp5461" {
- xkb_keycodes { include "sony(nwp5461)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "sony_vndr/us(nwp5461)" };
- xkb_geometry { include "sony(nwp5461)" };
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+xkb_keymap "news5000-nwp5461" {
+ xkb_keycodes { include "sony(nwp5461)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "sony_vndr/us(nwp5461)" };
+ xkb_geometry { include "sony(nwp5461)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sun_vndr/all.in b/xorg-server/xkeyboard-config/keymap/sun_vndr/all.in
index 047ae7bc4..8415fe8ab 100644
--- a/xorg-server/xkeyboard-config/keymap/sun_vndr/all.in
+++ b/xorg-server/xkeyboard-config/keymap/sun_vndr/all.in
@@ -1089,4 +1089,3 @@ xkb_keymap "US_UNIX6_usb" {
xkb_symbols { include "sun/us(type6)" };
xkb_geometry { include "sun(type6unix)" };
};
-
diff --git a/xorg-server/xkeyboard-config/keymap/sun_vndr/de b/xorg-server/xkeyboard-config/keymap/sun_vndr/de
index 4c1ded3fc..e05fdf384 100644
--- a/xorg-server/xkeyboard-config/keymap/sun_vndr/de
+++ b/xorg-server/xkeyboard-config/keymap/sun_vndr/de
@@ -1,78 +1,77 @@
-// $Xorg: de,v 1.4 2001/02/09 02:05:52 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-xkb_keymap "type4_de" {
- xkb_keycodes { include "sun(type4_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun4)+iso9995-3(basic)+de"
- };
- xkb_geometry { include "sun(type4)" };
-};
-xkb_keymap "type4_de_nodeadkeys" {
- xkb_keycodes { include "sun(type4_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun4)+iso9995-3(nodeadkeys)+de(nodeadkeys)"
- };
- xkb_geometry { include "sun(type4)" };
-};
-xkb_keymap "type4_de_openlook" {
- xkb_keycodes { include "sun(type4_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun4ol)+iso9995-3(basic)+de"
- };
- xkb_geometry { include "sun(type4)" };
-};
-default xkb_keymap "type5_de" {
- xkb_keycodes { include "sun(type5_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun5)+iso9995-3(basic)+de"
- };
- xkb_geometry { include "sun(type5euro)" };
-};
-xkb_keymap "type5_de_nodeadkeys" {
- xkb_keycodes { include "sun(type5_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun5)+iso9995-3(nodeadkeys)+de(nodeadkeys)"
- };
- xkb_geometry { include "sun(type5euro)" };
-};
-xkb_keymap "type5_de_openlook" {
- xkb_keycodes { include "sun(type5_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "sun_vndr/us(sun5ol)+iso9995-3+de" };
- xkb_geometry { include "sun(type5euro)" };
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+xkb_keymap "type4_de" {
+ xkb_keycodes { include "sun(type4_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun4)+iso9995-3(basic)+de"
+ };
+ xkb_geometry { include "sun(type4)" };
+};
+xkb_keymap "type4_de_nodeadkeys" {
+ xkb_keycodes { include "sun(type4_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun4)+iso9995-3(nodeadkeys)+de(nodeadkeys)"
+ };
+ xkb_geometry { include "sun(type4)" };
+};
+xkb_keymap "type4_de_openlook" {
+ xkb_keycodes { include "sun(type4_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun4ol)+iso9995-3(basic)+de"
+ };
+ xkb_geometry { include "sun(type4)" };
+};
+default xkb_keymap "type5_de" {
+ xkb_keycodes { include "sun(type5_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun5)+iso9995-3(basic)+de"
+ };
+ xkb_geometry { include "sun(type5euro)" };
+};
+xkb_keymap "type5_de_nodeadkeys" {
+ xkb_keycodes { include "sun(type5_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun5)+iso9995-3(nodeadkeys)+de(nodeadkeys)"
+ };
+ xkb_geometry { include "sun(type5euro)" };
+};
+xkb_keymap "type5_de_openlook" {
+ xkb_keycodes { include "sun(type5_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "sun_vndr/us(sun5ol)+iso9995-3+de" };
+ xkb_geometry { include "sun(type5euro)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sun_vndr/es b/xorg-server/xkeyboard-config/keymap/sun_vndr/es
index 2de81c011..5af8e4222 100644
--- a/xorg-server/xkeyboard-config/keymap/sun_vndr/es
+++ b/xorg-server/xkeyboard-config/keymap/sun_vndr/es
@@ -1,62 +1,59 @@
-// $TOG: de /main/3 1998/02/10 13:44:36 kaleb $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-// $XFree86: xc/programs/xkbcomp/keymap/sun_vndr/es,v 1.2 2000/10/28 00:34:05 dawes Exp $
-//
-xkb_keymap "type4_es" {
- xkb_keycodes { include "sun(type4_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun4)+iso9995-3(basic)+es"
- };
- xkb_geometry { include "sun(type4)" };
-};
-xkb_keymap "type4_es_openlook" {
- xkb_keycodes { include "sun(type4_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun4ol)+iso9995-3(basic)+es"
- };
- xkb_geometry { include "sun(type4)" };
-};
-default xkb_keymap "type5_es" {
- xkb_keycodes { include "sun(type5_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun5)+iso9995-3(basic)+es"
- };
- xkb_geometry { include "sun(type5euro)" };
-};
-xkb_keymap "type5_es_openlook" {
- xkb_keycodes { include "sun(type5_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "sun_vndr/us(sun5ol)+iso9995-3+es" };
- xkb_geometry { include "sun(type5euro)" };
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+xkb_keymap "type4_es" {
+ xkb_keycodes { include "sun(type4_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun4)+iso9995-3(basic)+es"
+ };
+ xkb_geometry { include "sun(type4)" };
+};
+xkb_keymap "type4_es_openlook" {
+ xkb_keycodes { include "sun(type4_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun4ol)+iso9995-3(basic)+es"
+ };
+ xkb_geometry { include "sun(type4)" };
+};
+default xkb_keymap "type5_es" {
+ xkb_keycodes { include "sun(type5_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun5)+iso9995-3(basic)+es"
+ };
+ xkb_geometry { include "sun(type5euro)" };
+};
+xkb_keymap "type5_es_openlook" {
+ xkb_keycodes { include "sun(type5_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "sun_vndr/us(sun5ol)+iso9995-3+es" };
+ xkb_geometry { include "sun(type5euro)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sun_vndr/fi b/xorg-server/xkeyboard-config/keymap/sun_vndr/fi
index 296ef66c4..3e48c7f43 100644
--- a/xorg-server/xkeyboard-config/keymap/sun_vndr/fi
+++ b/xorg-server/xkeyboard-config/keymap/sun_vndr/fi
@@ -1,62 +1,59 @@
-// $TOG: de /main/3 1998/02/10 13:44:36 kaleb $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-// $XFree86: xc/programs/xkbcomp/keymap/sun_vndr/fi,v 1.2 2000/10/28 00:34:05 dawes Exp $
-//
-xkb_keymap "type4_fi" {
- xkb_keycodes { include "sun(type4_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun4)+iso9995-3(basic)+fi"
- };
- xkb_geometry { include "sun(type4)" };
-};
-xkb_keymap "type4_fi_openlook" {
- xkb_keycodes { include "sun(type4_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun4ol)+iso9995-3(basic)+fi"
- };
- xkb_geometry { include "sun(type4)" };
-};
-default xkb_keymap "type5_fi" {
- xkb_keycodes { include "sun(type5_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun5)+iso9995-3(basic)+fi"
- };
- xkb_geometry { include "sun(type5euro)" };
-};
-xkb_keymap "type5_fi_openlook" {
- xkb_keycodes { include "sun(type5_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "sun_vndr/us(sun5ol)+iso9995-3+fi" };
- xkb_geometry { include "sun(type5euro)" };
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+xkb_keymap "type4_fi" {
+ xkb_keycodes { include "sun(type4_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun4)+iso9995-3(basic)+fi"
+ };
+ xkb_geometry { include "sun(type4)" };
+};
+xkb_keymap "type4_fi_openlook" {
+ xkb_keycodes { include "sun(type4_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun4ol)+iso9995-3(basic)+fi"
+ };
+ xkb_geometry { include "sun(type4)" };
+};
+default xkb_keymap "type5_fi" {
+ xkb_keycodes { include "sun(type5_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun5)+iso9995-3(basic)+fi"
+ };
+ xkb_geometry { include "sun(type5euro)" };
+};
+xkb_keymap "type5_fi_openlook" {
+ xkb_keycodes { include "sun(type5_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "sun_vndr/us(sun5ol)+iso9995-3+fi" };
+ xkb_geometry { include "sun(type5euro)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sun_vndr/fr b/xorg-server/xkeyboard-config/keymap/sun_vndr/fr
index 9301ce031..8e15ca017 100644
--- a/xorg-server/xkeyboard-config/keymap/sun_vndr/fr
+++ b/xorg-server/xkeyboard-config/keymap/sun_vndr/fr
@@ -1,62 +1,59 @@
-// $TOG: de /main/3 1998/02/10 13:44:36 kaleb $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-// $XFree86: xc/programs/xkbcomp/keymap/sun_vndr/fr,v 1.2 2000/10/28 00:34:05 dawes Exp $
-//
-xkb_keymap "type4_fr" {
- xkb_keycodes { include "sun(type4_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun4)+iso9995-3(basic)+fr"
- };
- xkb_geometry { include "sun(type4)" };
-};
-xkb_keymap "type4_fr_openlook" {
- xkb_keycodes { include "sun(type4_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun4ol)+iso9995-3(basic)+fr"
- };
- xkb_geometry { include "sun(type4)" };
-};
-default xkb_keymap "type5_fr" {
- xkb_keycodes { include "sun(type5_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun5)+iso9995-3(basic)+fr"
- };
- xkb_geometry { include "sun(type5euro)" };
-};
-xkb_keymap "type5_fr_openlook" {
- xkb_keycodes { include "sun(type5_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "sun_vndr/us(sun5ol)+iso9995-3+fr" };
- xkb_geometry { include "sun(type5euro)" };
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+xkb_keymap "type4_fr" {
+ xkb_keycodes { include "sun(type4_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun4)+iso9995-3(basic)+fr"
+ };
+ xkb_geometry { include "sun(type4)" };
+};
+xkb_keymap "type4_fr_openlook" {
+ xkb_keycodes { include "sun(type4_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun4ol)+iso9995-3(basic)+fr"
+ };
+ xkb_geometry { include "sun(type4)" };
+};
+default xkb_keymap "type5_fr" {
+ xkb_keycodes { include "sun(type5_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun5)+iso9995-3(basic)+fr"
+ };
+ xkb_geometry { include "sun(type5euro)" };
+};
+xkb_keymap "type5_fr_openlook" {
+ xkb_keycodes { include "sun(type5_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "sun_vndr/us(sun5ol)+iso9995-3+fr" };
+ xkb_geometry { include "sun(type5euro)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sun_vndr/no b/xorg-server/xkeyboard-config/keymap/sun_vndr/no
index 45669237e..200df8910 100644
--- a/xorg-server/xkeyboard-config/keymap/sun_vndr/no
+++ b/xorg-server/xkeyboard-config/keymap/sun_vndr/no
@@ -1,62 +1,59 @@
-// $TOG: de /main/3 1998/02/10 13:44:36 kaleb $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-// $XFree86: xc/programs/xkbcomp/keymap/sun_vndr/no,v 1.2 2000/10/28 00:34:05 dawes Exp $
-//
-xkb_keymap "type4_no" {
- xkb_keycodes { include "sun(type4_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun4)+iso9995-3(basic)+no"
- };
- xkb_geometry { include "sun(type4)" };
-};
-xkb_keymap "type4_no_openlook" {
- xkb_keycodes { include "sun(type4_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun4ol)+iso9995-3(basic)+no"
- };
- xkb_geometry { include "sun(type4)" };
-};
-default xkb_keymap "type5_no" {
- xkb_keycodes { include "sun(type5_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun5)+iso9995-3(basic)+no"
- };
- xkb_geometry { include "sun(type5euro)" };
-};
-xkb_keymap "type5_no_openlook" {
- xkb_keycodes { include "sun(type5_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "sun_vndr/us(sun5ol)+iso9995-3+no" };
- xkb_geometry { include "sun(type5euro)" };
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+xkb_keymap "type4_no" {
+ xkb_keycodes { include "sun(type4_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun4)+iso9995-3(basic)+no"
+ };
+ xkb_geometry { include "sun(type4)" };
+};
+xkb_keymap "type4_no_openlook" {
+ xkb_keycodes { include "sun(type4_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun4ol)+iso9995-3(basic)+no"
+ };
+ xkb_geometry { include "sun(type4)" };
+};
+default xkb_keymap "type5_no" {
+ xkb_keycodes { include "sun(type5_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun5)+iso9995-3(basic)+no"
+ };
+ xkb_geometry { include "sun(type5euro)" };
+};
+xkb_keymap "type5_no_openlook" {
+ xkb_keycodes { include "sun(type5_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "sun_vndr/us(sun5ol)+iso9995-3+no" };
+ xkb_geometry { include "sun(type5euro)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sun_vndr/pl b/xorg-server/xkeyboard-config/keymap/sun_vndr/pl
index 904ffb2d7..2da430f27 100644
--- a/xorg-server/xkeyboard-config/keymap/sun_vndr/pl
+++ b/xorg-server/xkeyboard-config/keymap/sun_vndr/pl
@@ -1,62 +1,59 @@
-// $TOG: de /main/3 1998/02/10 13:44:36 kaleb $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-// $XFree86: xc/programs/xkbcomp/keymap/sun_vndr/pl,v 1.2 2000/10/28 00:34:05 dawes Exp $
-//
-xkb_keymap "type4_pl" {
- xkb_keycodes { include "sun(type4_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun4)+iso9995-3(basic)+pl"
- };
- xkb_geometry { include "sun(type4)" };
-};
-xkb_keymap "type4_pl_openlook" {
- xkb_keycodes { include "sun(type4_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun4ol)+iso9995-3(basic)+pl"
- };
- xkb_geometry { include "sun(type4)" };
-};
-default xkb_keymap "type5_pl" {
- xkb_keycodes { include "sun(type5_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun5)+iso9995-3(basic)+pl"
- };
- xkb_geometry { include "sun(type5euro)" };
-};
-xkb_keymap "type5_pl_openlook" {
- xkb_keycodes { include "sun(type5_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "sun_vndr/us(sun5ol)+iso9995-3+pl" };
- xkb_geometry { include "sun(type5euro)" };
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+xkb_keymap "type4_pl" {
+ xkb_keycodes { include "sun(type4_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun4)+iso9995-3(basic)+pl"
+ };
+ xkb_geometry { include "sun(type4)" };
+};
+xkb_keymap "type4_pl_openlook" {
+ xkb_keycodes { include "sun(type4_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun4ol)+iso9995-3(basic)+pl"
+ };
+ xkb_geometry { include "sun(type4)" };
+};
+default xkb_keymap "type5_pl" {
+ xkb_keycodes { include "sun(type5_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun5)+iso9995-3(basic)+pl"
+ };
+ xkb_geometry { include "sun(type5euro)" };
+};
+xkb_keymap "type5_pl_openlook" {
+ xkb_keycodes { include "sun(type5_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "sun_vndr/us(sun5ol)+iso9995-3+pl" };
+ xkb_geometry { include "sun(type5euro)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sun_vndr/ru b/xorg-server/xkeyboard-config/keymap/sun_vndr/ru
index fc7d75b1e..005f27f3c 100644
--- a/xorg-server/xkeyboard-config/keymap/sun_vndr/ru
+++ b/xorg-server/xkeyboard-config/keymap/sun_vndr/ru
@@ -1,62 +1,59 @@
-// $TOG: de /main/3 1998/02/10 13:44:36 kaleb $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-// $XFree86: xc/programs/xkbcomp/keymap/sun_vndr/ru,v 1.2 2000/10/28 00:34:05 dawes Exp $
-//
-xkb_keymap "type4_ru" {
- xkb_keycodes { include "sun(type4_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun4)+iso9995-3(basic)+ru"
- };
- xkb_geometry { include "sun(type4)" };
-};
-xkb_keymap "type4_ru_openlook" {
- xkb_keycodes { include "sun(type4_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun4ol)+iso9995-3(basic)+ru"
- };
- xkb_geometry { include "sun(type4)" };
-};
-default xkb_keymap "type5_ru" {
- xkb_keycodes { include "sun(type5_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun5)+iso9995-3(basic)+ru"
- };
- xkb_geometry { include "sun(type5euro)" };
-};
-xkb_keymap "type5_ru_openlook" {
- xkb_keycodes { include "sun(type5_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "sun_vndr/us(sun5ol)+iso9995-3+ru" };
- xkb_geometry { include "sun(type5euro)" };
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+xkb_keymap "type4_ru" {
+ xkb_keycodes { include "sun(type4_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun4)+iso9995-3(basic)+ru"
+ };
+ xkb_geometry { include "sun(type4)" };
+};
+xkb_keymap "type4_ru_openlook" {
+ xkb_keycodes { include "sun(type4_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun4ol)+iso9995-3(basic)+ru"
+ };
+ xkb_geometry { include "sun(type4)" };
+};
+default xkb_keymap "type5_ru" {
+ xkb_keycodes { include "sun(type5_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun5)+iso9995-3(basic)+ru"
+ };
+ xkb_geometry { include "sun(type5euro)" };
+};
+xkb_keymap "type5_ru_openlook" {
+ xkb_keycodes { include "sun(type5_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "sun_vndr/us(sun5ol)+iso9995-3+ru" };
+ xkb_geometry { include "sun(type5euro)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sun_vndr/se b/xorg-server/xkeyboard-config/keymap/sun_vndr/se
index fad7009e4..cb3cc6d00 100644
--- a/xorg-server/xkeyboard-config/keymap/sun_vndr/se
+++ b/xorg-server/xkeyboard-config/keymap/sun_vndr/se
@@ -1,56 +1,54 @@
-// $XFree86: xc/programs/xkbcomp/keymap/sun_vndr/se,v 1.2 1998/12/20 09:34:42 dawes Exp $
-
-default xkb_keymap "type5c_se_fixdollar" {
- xkb_keycodes { include "sun(type5_se)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/se(sun5)+se(fixdollar)"
- };
- xkb_geometry { include "sun(type5c_se)" };
-};
-xkb_keymap "type5c_se" {
- xkb_keycodes { include "sun(type5_se)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/se(sun5)"
- };
- xkb_geometry { include "sun(type5c_se)" };
-};
-xkb_keymap "type5_se" {
- xkb_keycodes { include "sun(type5_se)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/se(sun5)"
- };
- xkb_geometry { include "sun(type5_se)" };
-};
-xkb_keymap "type4_se_fixdollar_swapctl" {
- xkb_keycodes { include "sun(type4_se_swapctl)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/se(sun4)+se(fixdollar)"
- };
- xkb_geometry { include "sun(type4_se)" };
-};
-xkb_keymap "type4_se_fixdollar" {
- xkb_keycodes { include "sun(type4_se)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/se(sun4)+se(fixdollar)"
- };
- xkb_geometry { include "sun(type4_se)" };
-};
-xkb_keymap "type4_se" {
- xkb_keycodes { include "sun(type4_se)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/se(sun4)"
- };
- xkb_geometry { include "sun(type4_se)" };
-};
+default xkb_keymap "type5c_se_fixdollar" {
+ xkb_keycodes { include "sun(type5_se)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/se(sun5)+se(fixdollar)"
+ };
+ xkb_geometry { include "sun(type5c_se)" };
+};
+xkb_keymap "type5c_se" {
+ xkb_keycodes { include "sun(type5_se)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/se(sun5)"
+ };
+ xkb_geometry { include "sun(type5c_se)" };
+};
+xkb_keymap "type5_se" {
+ xkb_keycodes { include "sun(type5_se)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/se(sun5)"
+ };
+ xkb_geometry { include "sun(type5_se)" };
+};
+xkb_keymap "type4_se_fixdollar_swapctl" {
+ xkb_keycodes { include "sun(type4_se_swapctl)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/se(sun4)+se(fixdollar)"
+ };
+ xkb_geometry { include "sun(type4_se)" };
+};
+xkb_keymap "type4_se_fixdollar" {
+ xkb_keycodes { include "sun(type4_se)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/se(sun4)+se(fixdollar)"
+ };
+ xkb_geometry { include "sun(type4_se)" };
+};
+xkb_keymap "type4_se" {
+ xkb_keycodes { include "sun(type4_se)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/se(sun4)"
+ };
+ xkb_geometry { include "sun(type4_se)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sun_vndr/uk b/xorg-server/xkeyboard-config/keymap/sun_vndr/uk
index e1fb4970b..11b3efd58 100644
--- a/xorg-server/xkeyboard-config/keymap/sun_vndr/uk
+++ b/xorg-server/xkeyboard-config/keymap/sun_vndr/uk
@@ -1,62 +1,59 @@
-// $TOG: de /main/3 1998/02/10 13:44:36 kaleb $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-// $XFree86: xc/programs/xkbcomp/keymap/sun_vndr/uk,v 1.2 2000/10/28 00:34:05 dawes Exp $
-//
-xkb_keymap "type4_uk" {
- xkb_keycodes { include "sun(type4_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun4)+iso9995-3(basic)+uk"
- };
- xkb_geometry { include "sun(type4)" };
-};
-xkb_keymap "type4_uk_openlook" {
- xkb_keycodes { include "sun(type4_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun4ol)+iso9995-3(basic)+uk"
- };
- xkb_geometry { include "sun(type4)" };
-};
-default xkb_keymap "type5_uk" {
- xkb_keycodes { include "sun(type5_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols {
- include "sun_vndr/us(sun5)+iso9995-3(basic)+uk"
- };
- xkb_geometry { include "sun(type5euro)" };
-};
-xkb_keymap "type5_uk_openlook" {
- xkb_keycodes { include "sun(type5_euro)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "sun_vndr/us(sun5ol)+iso9995-3+uk" };
- xkb_geometry { include "sun(type5euro)" };
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+xkb_keymap "type4_uk" {
+ xkb_keycodes { include "sun(type4_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun4)+iso9995-3(basic)+uk"
+ };
+ xkb_geometry { include "sun(type4)" };
+};
+xkb_keymap "type4_uk_openlook" {
+ xkb_keycodes { include "sun(type4_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun4ol)+iso9995-3(basic)+uk"
+ };
+ xkb_geometry { include "sun(type4)" };
+};
+default xkb_keymap "type5_uk" {
+ xkb_keycodes { include "sun(type5_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols {
+ include "sun_vndr/us(sun5)+iso9995-3(basic)+uk"
+ };
+ xkb_geometry { include "sun(type5euro)" };
+};
+xkb_keymap "type5_uk_openlook" {
+ xkb_keycodes { include "sun(type5_euro)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "sun_vndr/us(sun5ol)+iso9995-3+uk" };
+ xkb_geometry { include "sun(type5euro)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/sun_vndr/us b/xorg-server/xkeyboard-config/keymap/sun_vndr/us
index 397482f84..68b41de4b 100644
--- a/xorg-server/xkeyboard-config/keymap/sun_vndr/us
+++ b/xorg-server/xkeyboard-config/keymap/sun_vndr/us
@@ -1,68 +1,67 @@
-// $Xorg: us,v 1.4 2001/02/09 02:05:52 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-xkb_keymap "type4_us" {
- xkb_keycodes { include "sun(type4)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "sun_vndr/us(sun4)" };
- xkb_geometry { include "sun(type4)" };
-};
-xkb_keymap "type4_us_openlook" {
- xkb_keycodes { include "sun(type4)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "sun_vndr/us(sun4ol)" };
- xkb_geometry { include "sun(type4)" };
-};
-default xkb_keymap "type5_us" {
- xkb_keycodes { include "sun(type5)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "sun_vndr/us(sun5)" };
- xkb_geometry { include "sun(type5)" };
-};
-xkb_keymap "type5_us_openlook" {
- xkb_keycodes { include "sun(type5)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "sun_vndr/us(sun5ol)" };
- xkb_geometry { include "sun(type5)" };
-};
-xkb_keymap "type5_unix" {
- xkb_keycodes { include "sun(type5)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "sun_vndr/us(sun5)" };
- xkb_geometry { include "sun(type5unix)" };
-};
-xkb_keymap "type5_unix_openlook" {
- xkb_keycodes { include "sun(type5)" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "sun_vndr/us(sun5ol)" };
- xkb_geometry { include "sun(type5unix)" };
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+xkb_keymap "type4_us" {
+ xkb_keycodes { include "sun(type4)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "sun_vndr/us(sun4)" };
+ xkb_geometry { include "sun(type4)" };
+};
+xkb_keymap "type4_us_openlook" {
+ xkb_keycodes { include "sun(type4)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "sun_vndr/us(sun4ol)" };
+ xkb_geometry { include "sun(type4)" };
+};
+default xkb_keymap "type5_us" {
+ xkb_keycodes { include "sun(type5)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "sun_vndr/us(sun5)" };
+ xkb_geometry { include "sun(type5)" };
+};
+xkb_keymap "type5_us_openlook" {
+ xkb_keycodes { include "sun(type5)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "sun_vndr/us(sun5ol)" };
+ xkb_geometry { include "sun(type5)" };
+};
+xkb_keymap "type5_unix" {
+ xkb_keycodes { include "sun(type5)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "sun_vndr/us(sun5)" };
+ xkb_geometry { include "sun(type5unix)" };
+};
+xkb_keymap "type5_unix_openlook" {
+ xkb_keycodes { include "sun(type5)" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "sun_vndr/us(sun5ol)" };
+ xkb_geometry { include "sun(type5unix)" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/xfree86 b/xorg-server/xkeyboard-config/keymap/xfree86
index 8686f78d8..b65efa12f 100644
--- a/xorg-server/xkeyboard-config/keymap/xfree86
+++ b/xorg-server/xkeyboard-config/keymap/xfree86
@@ -1,377 +1,374 @@
-// $XFree86: xc/programs/xkbcomp/keymap/xfree86,v 3.30 2003/04/03 16:34:49 dawes Exp $
-
-
-default xkb_keymap "us" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)" };
- xkb_geometry { include "pc" };
-};
-
-// "ar" addition by Arabeyes Team, <support@arabeyes.org>
-xkb_keymap "ar" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+ara" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "be" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+be" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "bg" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+bg" };
- xkb_geometry { include "pc(pc102)" };
-};
-// us_intl and br by Ricardo Y. Igarashi (iga@that.com.br)
-xkb_keymap "br" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+br" };
- xkb_geometry { include "pc(abnt2)" };
-};
-// cz and sk keymaps by Kamil Toman (ktoman@email.cz)
-// are designed to replace old czechoslovakian and czsk keyboards
-// and their prog variants. Those are now obsolete and should not be used anymore.
-xkb_keymap "cz" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+cz" };
- xkb_geometry { include "pc" };
-};
-xkb_keymap "de" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+de" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "ch_de" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+ch(de)" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "ch_fr" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+ch(fr)" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "dk" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+dk" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "dvorak" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+us(dvorak)"};
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "en_US" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)" };
- xkb_geometry { include "pc" };
-};
-xkb_keymap "es" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+es" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "fr" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+fr" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "fr-latin9" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+fr-latin9" };
- xkb_geometry { include "pc" };
-};
-xkb_keymap "fr_CA" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+ca" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "gb" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+gb" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "hr" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+hr" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "it" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+it" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "jp106" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "jp(jp106)" };
- xkb_geometry { include "pc(jp106)" };
-};
-xkb_keymap "lt" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+lt" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "lt_std" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+lt(std)" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "lv" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+lv" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "mk" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+mk" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "mt" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+mt" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "no" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+no" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "pl" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+pl" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "pt" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+pt" };
- xkb_geometry { include "pc(pc102)" };
-};
-// ro: additions by Cristian Gafton, <gafton@redhat.com>
-xkb_keymap "ro" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+ro(pc101)" };
- xkb_geometry { include "pc(pc101)" };
-};
-xkb_keymap "ro_microsoft" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+ro(pc105)" };
- xkb_geometry { include "pc(pc105)" };
-};
-xkb_keymap "ru" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+ru" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "se_FI" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+fi" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "se_SE" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+se" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "sl" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+si" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "sl_SI" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+si" };
- xkb_geometry { include "pc(pc102)" };
-};
-// cz and sk keymaps by Kamil Toman (ktoman@email.cz)
-// are designed to replace old czechoslovakian and czsk keyboards
-// and their prog variants. Those are now obsolete and should not be used anymore.
-xkb_keymap "sk" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+sk" };
- xkb_geometry { include "pc" };
-};
-// Additions by Emil Soleyman-Zomalan, <emil@nishra.com>
-xkb_keymap "syr" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+syr" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "th" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+th" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "th_tis" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+th(tis)" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "th_pat" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+th(pat)" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "tr" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+tr" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "uk" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+uk)" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "us_flexpro" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc105)" };
- xkb_geometry { include "keytronic(FlexPro)" };
-};
-// us_intl and br by Ricardo Y. Igarashi (iga@that.com.br)
-// us_intl means standard us keyboard plus dead_keys symbols
-// these keyboards are very popular in Brazil
-xkb_keymap "us_intl" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc101)+us(intl)" };
- xkb_geometry { include "pc" };
-};
-xkb_keymap "us_microsoft" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "us(pc105)" };
- xkb_geometry { include "microsoft" };
-};
-
-xkb_keymap "uz" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+uz" };
- xkb_geometry { include "pc(pc102)" };
-};
-
-# svu: compatibility keymaps, based on variants
-xkb_keymap "cz_qwerty" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+cz(qwerty)" };
- xkb_geometry { include "pc" };
-};
-xkb_keymap "de_CH" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+ch(de)" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "fr_CH" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+ch(fr)" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "mt_us" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+mt(us)" };
- xkb_geometry { include "pc(pc102)" };
-};
-xkb_keymap "sk_qwerty" {
- xkb_keycodes { include "xfree86" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "pc(pc105)+sk(qwerty)" };
- xkb_geometry { include "pc" };
-};
+default xkb_keymap "us" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)" };
+ xkb_geometry { include "pc" };
+};
+
+// "ar" addition by Arabeyes Team, <support@arabeyes.org>
+xkb_keymap "ar" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+ara" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "be" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+be" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "bg" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+bg" };
+ xkb_geometry { include "pc(pc102)" };
+};
+// us_intl and br by Ricardo Y. Igarashi (iga@that.com.br)
+xkb_keymap "br" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+br" };
+ xkb_geometry { include "pc(abnt2)" };
+};
+// cz and sk keymaps by Kamil Toman (ktoman@email.cz)
+// are designed to replace old czechoslovakian and czsk keyboards
+// and their prog variants. Those are now obsolete and should not be used anymore.
+xkb_keymap "cz" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+cz" };
+ xkb_geometry { include "pc" };
+};
+xkb_keymap "de" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+de" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "ch_de" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+ch(de)" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "ch_fr" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+ch(fr)" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "dk" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+dk" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "dvorak" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+us(dvorak)"};
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "en_US" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)" };
+ xkb_geometry { include "pc" };
+};
+xkb_keymap "es" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+es" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "fr" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+fr" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "fr-latin9" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+fr-latin9" };
+ xkb_geometry { include "pc" };
+};
+xkb_keymap "fr_CA" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+ca" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "gb" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+gb" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "hr" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+hr" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "it" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+it" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "jp106" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "jp(jp106)" };
+ xkb_geometry { include "pc(jp106)" };
+};
+xkb_keymap "lt" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+lt" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "lt_std" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+lt(std)" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "lv" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+lv" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "mk" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+mk" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "mt" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+mt" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "no" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+no" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "pl" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+pl" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "pt" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+pt" };
+ xkb_geometry { include "pc(pc102)" };
+};
+// ro: additions by Cristian Gafton, <gafton@redhat.com>
+xkb_keymap "ro" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+ro(pc101)" };
+ xkb_geometry { include "pc(pc101)" };
+};
+xkb_keymap "ro_microsoft" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+ro(pc105)" };
+ xkb_geometry { include "pc(pc105)" };
+};
+xkb_keymap "ru" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+ru" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "se_FI" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+fi" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "se_SE" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+se" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "sl" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+si" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "sl_SI" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+si" };
+ xkb_geometry { include "pc(pc102)" };
+};
+// cz and sk keymaps by Kamil Toman (ktoman@email.cz)
+// are designed to replace old czechoslovakian and czsk keyboards
+// and their prog variants. Those are now obsolete and should not be used anymore.
+xkb_keymap "sk" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+sk" };
+ xkb_geometry { include "pc" };
+};
+// Additions by Emil Soleyman-Zomalan, <emil@nishra.com>
+xkb_keymap "syr" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+syr" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "th" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+th" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "th_tis" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+th(tis)" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "th_pat" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+th(pat)" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "tr" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+tr" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "uk" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+uk)" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "us_flexpro" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc105)" };
+ xkb_geometry { include "keytronic(FlexPro)" };
+};
+// us_intl and br by Ricardo Y. Igarashi (iga@that.com.br)
+// us_intl means standard us keyboard plus dead_keys symbols
+// these keyboards are very popular in Brazil
+xkb_keymap "us_intl" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc101)+us(intl)" };
+ xkb_geometry { include "pc" };
+};
+xkb_keymap "us_microsoft" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "us(pc105)" };
+ xkb_geometry { include "microsoft" };
+};
+
+xkb_keymap "uz" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+uz" };
+ xkb_geometry { include "pc(pc102)" };
+};
+
+# svu: compatibility keymaps, based on variants
+xkb_keymap "cz_qwerty" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+cz(qwerty)" };
+ xkb_geometry { include "pc" };
+};
+xkb_keymap "de_CH" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+ch(de)" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "fr_CH" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+ch(fr)" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "mt_us" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+mt(us)" };
+ xkb_geometry { include "pc(pc102)" };
+};
+xkb_keymap "sk_qwerty" {
+ xkb_keycodes { include "xfree86" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "pc(pc105)+sk(qwerty)" };
+ xkb_geometry { include "pc" };
+};
diff --git a/xorg-server/xkeyboard-config/keymap/xfree98 b/xorg-server/xkeyboard-config/keymap/xfree98
index b344eedbc..c9beb560e 100644
--- a/xorg-server/xkeyboard-config/keymap/xfree98
+++ b/xorg-server/xkeyboard-config/keymap/xfree98
@@ -1,35 +1,33 @@
-// $Xorg: xfree98,v 1.4 2001/02/09 02:05:52 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-// $XFree86: xc/programs/xkbcomp/keymap/xfree98,v 3.6 2001/01/17 23:45:53 dawes Exp $
-
-default xkb_keymap "jp" {
- xkb_keycodes { include "xfree98" };
- xkb_types { include "default" };
- xkb_compatibility { include "default" };
- xkb_symbols { include "nec_vndr/jp(pc98)" };
- xkb_geometry { include "nec(pc98)" };
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+
+default xkb_keymap "jp" {
+ xkb_keycodes { include "xfree98" };
+ xkb_types { include "default" };
+ xkb_compatibility { include "default" };
+ xkb_symbols { include "nec_vndr/jp(pc98)" };
+ xkb_geometry { include "nec(pc98)" };
+};
diff --git a/xorg-server/xkeyboard-config/rules/base.hdr.part b/xorg-server/xkeyboard-config/rules/base.hdr.part
index d867c8876..6550f864d 100644
--- a/xorg-server/xkeyboard-config/rules/base.hdr.part
+++ b/xorg-server/xkeyboard-config/rules/base.hdr.part
@@ -1,9 +1,6 @@
-// $Xorg: xfree86,v 1.3 2000/08/17 19:54:42 cpqbld Exp $
-
-//
-// Rules for resolving XKB components for use with XFree86
-// Copyright 1996 by Joseph Moss
-//
-// 2002 Modifier: Ivan Pascal The XFree86 Project
-// $XFree86: xc/programs/xkbcomp/rules/xfree86,v 3.79 2004/01/09 00:16:01 dawes Exp $
-//
+//
+// Rules for resolving XKB components for use with XFree86
+// Copyright 1996 by Joseph Moss
+//
+// 2002 Modifier: Ivan Pascal The XFree86 Project
+//
diff --git a/xorg-server/xkeyboard-config/rules/base.xml.in b/xorg-server/xkeyboard-config/rules/base.xml.in
index 6600d3bcb..919ed4b34 100644
--- a/xorg-server/xkeyboard-config/rules/base.xml.in
+++ b/xorg-server/xkeyboard-config/rules/base.xml.in
@@ -3061,7 +3061,24 @@
<_description>Laos</_description>
<languageList><iso639Id>lao</iso639Id></languageList>
</configItem>
- <variantList/>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>basic</name>
+ <_description>Laos</_description>
+ <languageList><iso639Id>lao</iso639Id>
+ </languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>stea</name>
+ <_description>Laos - STEA (proposed standard layout)</_description>
+ <languageList><iso639Id>lao</iso639Id>
+ </languageList>
+ </configItem>
+ </variant>
+ </variantList>
</layout>
<layout>
<configItem>
diff --git a/xorg-server/xkeyboard-config/rules/xfree98 b/xorg-server/xkeyboard-config/rules/xfree98
index 4e16c6dc9..1196f7488 100644
--- a/xorg-server/xkeyboard-config/rules/xfree98
+++ b/xorg-server/xkeyboard-config/rules/xfree98
@@ -2,8 +2,6 @@
// Rules for resolving XKB components for use with XFree86
// Copyright 1996 by Joseph Moss
//
-// $XFree86: xc/programs/xkbcomp/rules/xfree86,v 3.5 1996/12/17 21:03:59 dawes Exp $
-//
! model = keycodes geometry
pc98 = xfree98(pc98) nec(pc98)
diff --git a/xorg-server/xkeyboard-config/semantics/basic b/xorg-server/xkeyboard-config/semantics/basic
index 014e9ca68..71575a3a3 100644
--- a/xorg-server/xkeyboard-config/semantics/basic
+++ b/xorg-server/xkeyboard-config/semantics/basic
@@ -1,7 +1,6 @@
-// $Xorg: basic,v 1.3 2000/08/17 19:54:42 cpqbld Exp $
-default xkb_semantics "basic" {
-
-xkb_types { include "basic" };
-xkb_compatibility { include "basic" };
-
-};
+default xkb_semantics "basic" {
+
+xkb_types { include "basic" };
+xkb_compatibility { include "basic" };
+
+};
diff --git a/xorg-server/xkeyboard-config/semantics/complete b/xorg-server/xkeyboard-config/semantics/complete
index df1632e29..08152e563 100644
--- a/xorg-server/xkeyboard-config/semantics/complete
+++ b/xorg-server/xkeyboard-config/semantics/complete
@@ -1,7 +1,6 @@
-// $Xorg: complete,v 1.3 2000/08/17 19:54:42 cpqbld Exp $
-default xkb_semantics "complete" {
-
-xkb_types { include "complete" };
-xkb_compatibility { include "complete" };
-
-};
+default xkb_semantics "complete" {
+
+xkb_types { include "complete" };
+xkb_compatibility { include "complete" };
+
+};
diff --git a/xorg-server/xkeyboard-config/semantics/default.in b/xorg-server/xkeyboard-config/semantics/default.in
index 42e755e3c..a6e70c991 100644
--- a/xorg-server/xkeyboard-config/semantics/default.in
+++ b/xorg-server/xkeyboard-config/semantics/default.in
@@ -1,4 +1,3 @@
-// $Xorg: default,v 1.3 2000/08/17 19:54:42 cpqbld Exp $
default xkb_semantics "default" {
xkb_types { include "default" };
diff --git a/xorg-server/xkeyboard-config/semantics/xtest b/xorg-server/xkeyboard-config/semantics/xtest
index d221fe5b4..64a35459b 100644
--- a/xorg-server/xkeyboard-config/semantics/xtest
+++ b/xorg-server/xkeyboard-config/semantics/xtest
@@ -1,7 +1,6 @@
-// $Xorg: xtest,v 1.3 2000/08/17 19:54:42 cpqbld Exp $
-default xkb_semantics "xtest" {
-
-xkb_types { include "basic" };
-xkb_compatibility { include "xtest" };
-
-};
+default xkb_semantics "xtest" {
+
+xkb_types { include "basic" };
+xkb_compatibility { include "xtest" };
+
+};
diff --git a/xorg-server/xkeyboard-config/symbols/ad b/xorg-server/xkeyboard-config/symbols/ad
index 3836ca34d..bce6f6140 100644
--- a/xorg-server/xkeyboard-config/symbols/ad
+++ b/xorg-server/xkeyboard-config/symbols/ad
@@ -1,34 +1,31 @@
-// $XKeyboardConfig$
-
-//
-// Catalan Keyboard, as manufactured by Large Format Computing, Inc.
-//
-// For layout graphic, see http://www.language-keyboard.com/languages/catalan_layout.htm
-//
-// Contributed by Robert Millan
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
- include "us"
-
- name[Group1]="Andorra";
-
- key <AE02> { [ 2, at, dead_diaeresis ] };
- key <AE07> { [ 7, ampersand, dead_acute ] };
- key <AE09> { [ 9, parenleft, dead_grave ] };
- key <AD02> { [ w, W, eacute, Eacute ] };
- key <AD03> { [ e, E, egrave, Egrave ] };
- key <AD06> { [ y, Y, udiaeresis, Udiaeresis ] };
- key <AD07> { [ u, U, uacute, Uacute ] };
- key <AD08> { [ i, I, iacute, Iacute ] };
- key <AD09> { [ o, O, oacute, Oacute ] };
- key <AD10> { [ p, P, ograve, Ograve ] };
- key <AD12> { [ bracketright, braceright, EuroSign ] };
- key <AC01> { [ a, A, agrave, Agrave ] };
- key <AC08> { [ k, K, idiaeresis, Idiaeresis ] };
- key <AC09> { [ l, L, periodcentered ] };
- key <AB03> { [ c, C, ccedilla, Ccedilla ] };
-
- include "level3(ralt_switch)"
-};
-
+//
+// Catalan Keyboard, as manufactured by Large Format Computing, Inc.
+//
+// For layout graphic, see http://www.language-keyboard.com/languages/catalan_layout.htm
+//
+// Contributed by Robert Millan
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ include "us"
+
+ name[Group1]="Andorra";
+
+ key <AE02> { [ 2, at, dead_diaeresis ] };
+ key <AE07> { [ 7, ampersand, dead_acute ] };
+ key <AE09> { [ 9, parenleft, dead_grave ] };
+ key <AD02> { [ w, W, eacute, Eacute ] };
+ key <AD03> { [ e, E, egrave, Egrave ] };
+ key <AD06> { [ y, Y, udiaeresis, Udiaeresis ] };
+ key <AD07> { [ u, U, uacute, Uacute ] };
+ key <AD08> { [ i, I, iacute, Iacute ] };
+ key <AD09> { [ o, O, oacute, Oacute ] };
+ key <AD10> { [ p, P, ograve, Ograve ] };
+ key <AD12> { [ bracketright, braceright, EuroSign ] };
+ key <AC01> { [ a, A, agrave, Agrave ] };
+ key <AC08> { [ k, K, idiaeresis, Idiaeresis ] };
+ key <AC09> { [ l, L, periodcentered ] };
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/af b/xorg-server/xkeyboard-config/symbols/af
index d8a88526a..90bfe127d 100644
--- a/xorg-server/xkeyboard-config/symbols/af
+++ b/xorg-server/xkeyboard-config/symbols/af
@@ -1,4 +1,3 @@
-// $XKeyboardConfig$
//
// Keymap for the Afghan dari keybord layout
// Based on the specification "Computer Locale Requirements for
diff --git a/xorg-server/xkeyboard-config/symbols/al b/xorg-server/xkeyboard-config/symbols/al
index 18f11139e..9f006748c 100644
--- a/xorg-server/xkeyboard-config/symbols/al
+++ b/xorg-server/xkeyboard-config/symbols/al
@@ -1,44 +1,41 @@
-// $XKeyboardConfig$
-
-// based on
-// albanian keyboard layout
-// done by Pablo Saratxaga <pablo@mandrakesoft.com>
-//
-// $XFree86: xc/programs/xkbcomp/symbols/al,v 1.2 2002/11/22 04:03:28 dawes Exp $
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- include "latin(type3)"
-
- name[Group1]="Albania";
-
- key <AE01> { [ 1, exclam, asciitilde, dead_tilde ] };
- key <AE02> { [ 2, quotedbl, dead_caron, oneeighth ] };
- key <AE03> { [ 3, numbersign, dead_circumflex, sterling ] };
- key <AE04> { [ 4, dollar, dead_breve, dollar ] };
- key <AE05> { [ 5, percent, dead_abovering, threeeighths] };
- key <AE06> { [ 6, asciicircum, dead_ogonek, fiveeighths ] };
- key <AE07> { [ 7, ampersand, grave, dead_grave ] };
- key <AE08> { [ 8, asterisk, dead_abovedot, trademark ] };
- key <AE09> { [ 9, parenleft, dead_acute, plusminus ] };
- key <AE10> { [ 0, parenright, dead_doubleacute, degree ] };
- key <AE11> { [ minus, underscore, dead_diaeresis, questiondown] };
-
- key <AD03> { [ e, E, EuroSign, EuroSign ] };
- key <AD11> { [ ccedilla, Ccedilla, division, dead_abovering ] };
- key <AD12> { [ at, apostrophe, multiply, dead_macron ] };
-
- key <AC02> { [ s, S, dstroke, section ] };
- key <AC03> { [ d, D, Dstroke, ETH ] };
- key <AC10> { [ediaeresis, Ediaeresis, dollar, dead_doubleacute ] };
- key <AC11> { [bracketleft, braceleft, ssharp, dead_caron ] };
- key <TLDE> { [ backslash, bar, notsign, notsign ] };
-
- key <BKSL> { [bracketright, braceright, currency, dead_breve ] };
- key <AB08> { [ comma, semicolon, less, multiply ] };
- key <AB09> { [ period, colon, greater, division ] };
- key <AB10> { [ slash, question, dead_belowdot, dead_abovedot ] };
-
- include "level3(ralt_switch)"
-};
+// based on
+// albanian keyboard layout
+// done by Pablo Saratxaga <pablo@mandrakesoft.com>
+//
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ include "latin(type3)"
+
+ name[Group1]="Albania";
+
+ key <AE01> { [ 1, exclam, asciitilde, dead_tilde ] };
+ key <AE02> { [ 2, quotedbl, dead_caron, oneeighth ] };
+ key <AE03> { [ 3, numbersign, dead_circumflex, sterling ] };
+ key <AE04> { [ 4, dollar, dead_breve, dollar ] };
+ key <AE05> { [ 5, percent, dead_abovering, threeeighths] };
+ key <AE06> { [ 6, asciicircum, dead_ogonek, fiveeighths ] };
+ key <AE07> { [ 7, ampersand, grave, dead_grave ] };
+ key <AE08> { [ 8, asterisk, dead_abovedot, trademark ] };
+ key <AE09> { [ 9, parenleft, dead_acute, plusminus ] };
+ key <AE10> { [ 0, parenright, dead_doubleacute, degree ] };
+ key <AE11> { [ minus, underscore, dead_diaeresis, questiondown] };
+
+ key <AD03> { [ e, E, EuroSign, EuroSign ] };
+ key <AD11> { [ ccedilla, Ccedilla, division, dead_abovering ] };
+ key <AD12> { [ at, apostrophe, multiply, dead_macron ] };
+
+ key <AC02> { [ s, S, dstroke, section ] };
+ key <AC03> { [ d, D, Dstroke, ETH ] };
+ key <AC10> { [ediaeresis, Ediaeresis, dollar, dead_doubleacute ] };
+ key <AC11> { [bracketleft, braceleft, ssharp, dead_caron ] };
+ key <TLDE> { [ backslash, bar, notsign, notsign ] };
+
+ key <BKSL> { [bracketright, braceright, currency, dead_breve ] };
+ key <AB08> { [ comma, semicolon, less, multiply ] };
+ key <AB09> { [ period, colon, greater, division ] };
+ key <AB10> { [ slash, question, dead_belowdot, dead_abovedot ] };
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/altwin b/xorg-server/xkeyboard-config/symbols/altwin
index 4463fe06c..597b3fb92 100644
--- a/xorg-server/xkeyboard-config/symbols/altwin
+++ b/xorg-server/xkeyboard-config/symbols/altwin
@@ -1,83 +1,79 @@
-// $XKeyboardConfig$
-
-// $XFree86: xc/programs/xkbcomp/symbols/altwin,v 1.5 2003/12/03 14:09:08 pascal Exp $
-
-partial modifier_keys
-xkb_symbols "meta_alt" {
- key <LALT> { [ Alt_L, Meta_L ] };
- key <RALT> { type[Group1] = "TWO_LEVEL",
- symbols[Group1] = [ Alt_R, Meta_R ] };
- modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
-// modifier_map Mod4 {};
-};
-
-// Control is mapped to the Win-keys (and the usual Ctrl keys).
-partial modifier_keys
-xkb_symbols "ctrl_win" {
- key <LWIN> { [ Control_L ] };
- key <RWIN> { [ Control_R ] };
- modifier_map Control { <LWIN>, <RWIN> };
-};
-
-// Ctrl is mapped to the Alt-keys, Alt is mapped to the Win-keys, Win is mapped to the Ctrl-keys.
-partial modifier_keys
-xkb_symbols "ctrl_alt_win" {
- key <LALT> { [ Control_L, Control_L ] };
- key <RALT> { type[Group1] = "TWO_LEVEL",
- symbols[Group1] = [ Control_R, Control_R ] };
- key <LWIN> { [ Alt_L, Meta_L ] };
- key <RWIN> { [ Alt_R, Meta_R ] };
- modifier_map Control { <RALT>, <LALT> };
- modifier_map Mod1 { <LWIN>, <RWIN> };
-};
-
-
-partial modifier_keys
-xkb_symbols "meta_win" {
- key <LALT> { [ Alt_L, Alt_L ] };
- key <RALT> { type[Group1] = "TWO_LEVEL",
- symbols[Group1] = [ Alt_R, Alt_R ] };
- key <LWIN> { [ Meta_L ] };
- key <RWIN> { [ Meta_R ] };
- modifier_map Mod1 { Alt_L, Alt_R };
- modifier_map Mod4 { <META>, Meta_L, Meta_R };
-};
-
-partial modifier_keys
-xkb_symbols "left_meta_win" {
- key <LALT> { [ Alt_L, Alt_L ] };
- key <LWIN> { [ Meta_L ] };
- modifier_map Mod1 { Alt_L };
- modifier_map Mod4 { <META>, Meta_L };
-};
-
-partial modifier_keys
-xkb_symbols "hyper_win" {
- key <LWIN> { [ Hyper_L ] };
- key <RWIN> { [ Hyper_R ] };
- modifier_map Mod4 { Hyper_L, Hyper_R };
-};
-
-// Use Menu for the menu key
-partial modifier_keys
-xkb_symbols "menu" {
- key <MENU> { [ Menu ] };
-};
-
-// Layout for Tux key caps with additional right Alt key
-partial modifier_keys
-xkb_symbols "alt_super_win" {
- key <LALT> { [ Alt_L, Meta_L ] };
- key <RWIN> { [ Alt_R, Meta_R ] };
- key <LWIN> { [ Super_L ] };
- key <MENU> { [ Super_R ] };
- modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
- modifier_map Mod4 { Super_L, Super_R };
-};
-
-partial modifier_keys
-xkb_symbols "swap_lalt_lwin" {
- key <LALT> { type[Group1] = "ONE_LEVEL",
- symbols[Group1] = [ Super_L ] };
- key <LWIN> { [ Alt_L, Meta_L ] };
-};
+partial modifier_keys
+xkb_symbols "meta_alt" {
+ key <LALT> { [ Alt_L, Meta_L ] };
+ key <RALT> { type[Group1] = "TWO_LEVEL",
+ symbols[Group1] = [ Alt_R, Meta_R ] };
+ modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
+// modifier_map Mod4 {};
+};
+
+// Control is mapped to the Win-keys (and the usual Ctrl keys).
+partial modifier_keys
+xkb_symbols "ctrl_win" {
+ key <LWIN> { [ Control_L ] };
+ key <RWIN> { [ Control_R ] };
+ modifier_map Control { <LWIN>, <RWIN> };
+};
+
+// Ctrl is mapped to the Alt-keys, Alt is mapped to the Win-keys, Win is mapped to the Ctrl-keys.
+partial modifier_keys
+xkb_symbols "ctrl_alt_win" {
+ key <LALT> { [ Control_L, Control_L ] };
+ key <RALT> { type[Group1] = "TWO_LEVEL",
+ symbols[Group1] = [ Control_R, Control_R ] };
+ key <LWIN> { [ Alt_L, Meta_L ] };
+ key <RWIN> { [ Alt_R, Meta_R ] };
+ modifier_map Control { <RALT>, <LALT> };
+ modifier_map Mod1 { <LWIN>, <RWIN> };
+};
+
+
+partial modifier_keys
+xkb_symbols "meta_win" {
+ key <LALT> { [ Alt_L, Alt_L ] };
+ key <RALT> { type[Group1] = "TWO_LEVEL",
+ symbols[Group1] = [ Alt_R, Alt_R ] };
+ key <LWIN> { [ Meta_L ] };
+ key <RWIN> { [ Meta_R ] };
+ modifier_map Mod1 { Alt_L, Alt_R };
+ modifier_map Mod4 { <META>, Meta_L, Meta_R };
+};
+
+partial modifier_keys
+xkb_symbols "left_meta_win" {
+ key <LALT> { [ Alt_L, Alt_L ] };
+ key <LWIN> { [ Meta_L ] };
+ modifier_map Mod1 { Alt_L };
+ modifier_map Mod4 { <META>, Meta_L };
+};
+
+partial modifier_keys
+xkb_symbols "hyper_win" {
+ key <LWIN> { [ Hyper_L ] };
+ key <RWIN> { [ Hyper_R ] };
+ modifier_map Mod4 { Hyper_L, Hyper_R };
+};
+
+// Use Menu for the menu key
+partial modifier_keys
+xkb_symbols "menu" {
+ key <MENU> { [ Menu ] };
+};
+
+// Layout for Tux key caps with additional right Alt key
+partial modifier_keys
+xkb_symbols "alt_super_win" {
+ key <LALT> { [ Alt_L, Meta_L ] };
+ key <RWIN> { [ Alt_R, Meta_R ] };
+ key <LWIN> { [ Super_L ] };
+ key <MENU> { [ Super_R ] };
+ modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
+ modifier_map Mod4 { Super_L, Super_R };
+};
+
+partial modifier_keys
+xkb_symbols "swap_lalt_lwin" {
+ key <LALT> { type[Group1] = "ONE_LEVEL",
+ symbols[Group1] = [ Super_L ] };
+ key <LWIN> { [ Alt_L, Meta_L ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/am b/xorg-server/xkeyboard-config/symbols/am
index 6fe84836c..f83548118 100644
--- a/xorg-server/xkeyboard-config/symbols/am
+++ b/xorg-server/xkeyboard-config/symbols/am
@@ -1,244 +1,240 @@
-// $XKeyboardConfig$
-
-// based on a keyboard map from an 'xkb/symbols/am' file
-//
-// $XFree86: xc/programs/xkbcomp/symbols/am,v 1.4 2003/05/29 12:41:58 pascal Exp $
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- name[Group1]= "Armenia";
-
- // Alphanumeric section
- key <TLDE> { [ 0x100055d, 0x100055c ] };
- key <LSGT> { [ question, 0x100058a ] };
- key <BKSL> { [ guillemotright, guillemotleft ] };
-
- key <AE01> { [ 0x1000586, 0x1000556 ] };
- key <AE02> { [ 0x1000571, 0x1000541 ] };
- key <AE03> { [ 0x1002013, 0x1002014 ] };
- key <AE04> { [ comma, dollar ] };
- key <AE05> { [ 0x1000589, 0x1002026 ] };
- key <AE06> { [ 0x100055e, percent ] };
- key <AE07> { [ 0x1002024, 0x1000587 ] };
- key <AE08> { [ 0x100055b, 0x10002bc ] };
- key <AE09> { [ parenright, parenleft ] };
- key <AE10> { [ 0x1000585, 0x1000555 ] };
- key <AE11> { [ 0x1000567, 0x1000537 ] };
- key <AE12> { [ 0x1000572, 0x1000542 ] };
-
-
- key <AD01> { [ 0x1000573, 0x1000543 ] };
- key <AD02> { [ 0x1000583, 0x1000553 ] };
- key <AD03> { [ 0x1000562, 0x1000532 ] };
- key <AD04> { [ 0x100057d, 0x100054d ] };
- key <AD05> { [ 0x1000574, 0x1000544 ] };
- key <AD06> { [ 0x1000578, 0x1000548 ] };
- key <AD07> { [ 0x1000582, 0x1000552 ] };
- key <AD08> { [ 0x100056f, 0x100053f ] };
- key <AD09> { [ 0x1000568, 0x1000538 ] };
- key <AD10> { [ 0x1000569, 0x1000539 ] };
- key <AD11> { [ 0x100056e, 0x100053e ] };
- key <AD12> { [ 0x1000581, 0x1000551 ] };
-
- key <AC01> { [ 0x100057b, 0x100054b ] };
- key <AC02> { [ 0x100057e, 0x100054e ] };
- key <AC03> { [ 0x1000563, 0x1000533 ] };
- key <AC04> { [ 0x1000565, 0x1000535 ] };
- key <AC05> { [ 0x1000561, 0x1000531 ] };
- key <AC06> { [ 0x1000576, 0x1000546 ] };
- key <AC07> { [ 0x100056b, 0x100053b ] };
- key <AC08> { [ 0x100057f, 0x100054f ] };
- key <AC09> { [ 0x1000570, 0x1000540 ] };
- key <AC10> { [ 0x100057a, 0x100054a ] };
- key <AC11> { [ 0x1000580, 0x1000550 ] };
-
- key <AB01> { [ 0x100056a, 0x100053a ] };
- key <AB02> { [ 0x1000564, 0x1000534 ] };
- key <AB03> { [ 0x1000579, 0x1000549 ] };
- key <AB04> { [ 0x1000575, 0x1000545 ] };
- key <AB05> { [ 0x1000566, 0x1000536 ] };
- key <AB06> { [ 0x100056c, 0x100053c ] };
- key <AB07> { [ 0x1000584, 0x1000554 ] };
- key <AB08> { [ 0x100056d, 0x100053d ] };
- key <AB09> { [ 0x1000577, 0x1000547 ] };
- key <AB10> { [ 0x100057c, 0x100054c ] };
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "olpc" {
- include "am(basic)"
- name[Group1]= "Armenia";
-
- include "group(olpc)"
-};
-
-xkb_symbols "phonetic" {
- include "am(basic)"
- name[Group1]= "Armenia - Phonetic";
-
- key <BKSL> { [ 0x1000577, 0x1000547 ] };
-
- key <AE01> { [ 0x1000567, 0x1000537 ] };
- key <AE02> { [ 0x1000569, 0x1000539 ] };
- key <AE03> { [ 0x1000583, 0x1000553 ] };
- key <AE04> { [ 0x1000571, 0x1000541 ] };
- key <AE05> { [ 0x100057b, 0x100054b ] };
- key <AE06> { [ 0x1000582, 0x1000552 ] };
- key <AE07> { [ 0x1000587, 0x1000587 ] };
- key <AE08> { [ 0x100057c, 0x100054c ] };
- key <AE09> { [ 0x1000579, 0x1000549 ] };
- key <AE10> { [ 0x1000573, 0x1000543 ] };
- key <AE11> { [ 0x100002D, 0x1002015 ] };
- key <AE12> { [ 0x100056a, 0x100053a ] };
-
- key <LatQ> { [ 0x1000584, 0x1000554 ] };
- key <LatW> { [ 0x1000578, 0x1000548 ] };
- key <LatE> { [ 0x1000565, 0x1000535 ] };
- key <LatR> { [ 0x1000580, 0x1000550 ] };
- key <LatT> { [ 0x100057f, 0x100054f ] };
- key <LatY> { [ 0x1000568, 0x1000538 ] };
- key <LatU> { [ 0x1000582, 0x1000552 ] };
- key <LatI> { [ 0x100056b, 0x100053b ] };
- key <LatO> { [ 0x1000585, 0x1000555 ] };
- key <LatP> { [ 0x100057a, 0x100054a ] };
- key <AD11> { [ 0x100056d, 0x100053d ] };
- key <AD12> { [ 0x100056e, 0x100053e ] };
-
- key <LatA> { [ 0x1000561, 0x1000531 ] };
- key <LatS> { [ 0x100057d, 0x100054d ] };
- key <LatD> { [ 0x1000564, 0x1000534 ] };
- key <LatF> { [ 0x1000586, 0x1000556 ] };
- key <LatG> { [ 0x1000563, 0x1000533 ] };
- key <LatH> { [ 0x1000570, 0x1000540 ] };
- key <LatJ> { [ 0x1000575, 0x1000545 ] };
- key <LatK> { [ 0x100056f, 0x100053f ] };
- key <LatL> { [ 0x100056c, 0x100053c ] };
- key <AC10> { [ semicolon, 0x1000589 ] };
- key <AC11> { [ 0x100055b, 0x1000022 ] };
-
- key <LatZ> { [ 0x1000566, 0x1000536 ] };
- key <LatX> { [ 0x1000572, 0x1000542 ] };
- key <LatC> { [ 0x1000581, 0x1000551 ] };
- key <LatV> { [ 0x100057e, 0x100054e ] };
- key <LatB> { [ 0x1000562, 0x1000532 ] };
- key <LatN> { [ 0x1000576, 0x1000546 ] };
- key <LatM> { [ 0x1000574, 0x1000544 ] };
- key <AB08> { [ 0x100002C, 0x10000AB ] };
- key <AB09> { [ 0x1002024, 0x10000BB ] };
- key <AB10> { [ 0x100002F, 0x100055e ] };
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "phonetic-alt" {
- include "am(phonetic)"
- name[Group1]= "Armenia - Alternative Phonetic";
-
- key <AE08> { [ 0x1000580, 0x1000550 ] };
- key <LatR> { [ 0x100057c, 0x100054c ] };
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "eastern" {
-
- name[Group1]="Armenia - Eastern";
-
- // This is the closer phonetic transliteration for Eastern Armenian
- // than the Windows XP layout for Eastern Armenian, which seems
- // to have contained a bug, with the reversal of 'g' for keh and 'c' for gim
- // Also, AE01 (the colon) has been replaced with the Armenian_full_stop and
- // capital AE07 (ken) with the Armenian ligature ew
-
- key <TLDE> { [ Armenian_separation_mark, Armenian_exclam ] };
-// key <AE01> { [ colon, KP_1 ] };
- key <AE01> { [ Armenian_full_stop, KP_1 ] };
- key <AE02> { [ Armenian_dza, Armenian_DZA ] };
- key <AE03> { [ Armenian_hi, Armenian_HI ] };
- key <AE04> { [ Armenian_accent, KP_3 ] };
- key <AE05> { [ comma, KP_4 ] };
- key <AE06> { [ minus, KP_9 ] };
- key <AE07> { [ period, Armenian_ligature_ew ] };
- key <AE08> { [ guillemotleft, parenleft ] };
- key <AE09> { [ guillemotright, parenright ] };
- key <AE10> { [ Armenian_o, Armenian_O ] };
- key <AE11> { [ Armenian_ra, Armenian_RA ] };
- key <AE12> { [ Armenian_zhe, Armenian_ZHE ] };
-
- key <LatQ> { [ Armenian_khe, Armenian_KHE ] };
- key <LatW> { [ Armenian_vyun, Armenian_VYUN ] };
- key <LatE> { [ Armenian_e, Armenian_E ] };
- key <LatR> { [ Armenian_re, Armenian_RE ] };
- key <LatT> { [ Armenian_tyun, Armenian_TYUN ] };
- key <LatY> { [ Armenian_yech, Armenian_YECH ] };
- key <LatU> { [ Armenian_at, Armenian_AT ] };
- key <LatI> { [ Armenian_ini, Armenian_INI ] };
- key <LatO> { [ Armenian_vo, Armenian_VO ] };
- key <LatP> { [ Armenian_pe, Armenian_PE ] };
- key <AD11> { [ Armenian_cha, Armenian_CHA ] };
- key <AD12> { [ Armenian_je, Armenian_JE ] };
- key <BKSL> { [ apostrophe, Armenian_question ] };
-
- key <LatA> { [ Armenian_ayb, Armenian_AYB ] };
- key <LatS> { [ Armenian_se, Armenian_SE ] };
- key <LatD> { [ Armenian_da, Armenian_DA ] };
- key <LatF> { [ Armenian_fe, Armenian_FE ] };
- key <LatG> { [ Armenian_gim, Armenian_GIM ] };
- key <LatH> { [ Armenian_ho, Armenian_HO ] };
- key <LatJ> { [ Armenian_tche, Armenian_TCHE ] };
- key <LatK> { [ Armenian_ken, Armenian_KEN ] };
- key <LatL> { [ Armenian_lyun, Armenian_LYUN ] };
- key <AC10> { [ Armenian_to, Armenian_TO ] };
- key <AC11> { [ Armenian_pyur, Armenian_PYUR ] };
-
- key <LatZ> { [ Armenian_za, Armenian_ZA ] };
- key <LatX> { [ Armenian_tso, Armenian_TSO ] };
- key <LatC> { [ Armenian_ke, Armenian_KE ] };
- key <LatV> { [ Armenian_vev, Armenian_VEV ] };
- key <LatB> { [ Armenian_ben, Armenian_BEN ] };
- key <LatN> { [ Armenian_nu, Armenian_NU ] };
- key <LatM> { [ Armenian_men, Armenian_MEN ] };
- key <AB08> { [ Armenian_sha, Armenian_SHA ] };
- key <AB09> { [ Armenian_ghat, Armenian_GHAT ] };
- key <AB10> { [ Armenian_tsa, Armenian_TSA ] };
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "western" {
- include "am(eastern)"
- name[Group1]="Armenia - Western";
-
- // This is exactly the same layout for Western Armenian
- // as in Windows XP, except:
- // AE01 (the colon) has been replaced with the Armenian_full_stop and
- // capital AE07 (ken) with the Armenian ligature ew
-
- key <LatW> { [ Armenian_vev, Armenian_VEV ] };
- key <LatT> { [ Armenian_da, Armenian_DA ] };
- key <LatP> { [ Armenian_ben, Armenian_BEN ] };
- key <LatD> { [ Armenian_tyun, Armenian_TYUN ] };
- key <LatG> { [ Armenian_ken, Armenian_KEN ] };
- key <LatK> { [ Armenian_ke, Armenian_KE ] };
- key <LatC> { [ Armenian_gim, Armenian_GIM ] };
- key <LatV> { [ Armenian_vyun, Armenian_VYUN ] };
- key <LatB> { [ Armenian_pe, Armenian_PE ] };
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "eastern-alt" {
- include "am(eastern)"
- name[Group1]="Armenia - Alternative Eastern";
-
- // This replicates the Windows XP keyboard layout for Eastern
- // Armenian exactly (including the bug), except:
- // AE01 (the colon) has been replaced with the Armenian_full_stop and
- // capital AE07 (ken) with the Armenian ligature ew
-
- key <LatG> { [ Armenian_ke, Armenian_KE ] };
- key <LatC> { [ Armenian_gim, Armenian_GIM ] };
-
-};
+// based on a keyboard map from an 'xkb/symbols/am' file
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ name[Group1]= "Armenia";
+
+ // Alphanumeric section
+ key <TLDE> { [ 0x100055d, 0x100055c ] };
+ key <LSGT> { [ question, 0x100058a ] };
+ key <BKSL> { [ guillemotright, guillemotleft ] };
+
+ key <AE01> { [ 0x1000586, 0x1000556 ] };
+ key <AE02> { [ 0x1000571, 0x1000541 ] };
+ key <AE03> { [ 0x1002013, 0x1002014 ] };
+ key <AE04> { [ comma, dollar ] };
+ key <AE05> { [ 0x1000589, 0x1002026 ] };
+ key <AE06> { [ 0x100055e, percent ] };
+ key <AE07> { [ 0x1002024, 0x1000587 ] };
+ key <AE08> { [ 0x100055b, 0x10002bc ] };
+ key <AE09> { [ parenright, parenleft ] };
+ key <AE10> { [ 0x1000585, 0x1000555 ] };
+ key <AE11> { [ 0x1000567, 0x1000537 ] };
+ key <AE12> { [ 0x1000572, 0x1000542 ] };
+
+
+ key <AD01> { [ 0x1000573, 0x1000543 ] };
+ key <AD02> { [ 0x1000583, 0x1000553 ] };
+ key <AD03> { [ 0x1000562, 0x1000532 ] };
+ key <AD04> { [ 0x100057d, 0x100054d ] };
+ key <AD05> { [ 0x1000574, 0x1000544 ] };
+ key <AD06> { [ 0x1000578, 0x1000548 ] };
+ key <AD07> { [ 0x1000582, 0x1000552 ] };
+ key <AD08> { [ 0x100056f, 0x100053f ] };
+ key <AD09> { [ 0x1000568, 0x1000538 ] };
+ key <AD10> { [ 0x1000569, 0x1000539 ] };
+ key <AD11> { [ 0x100056e, 0x100053e ] };
+ key <AD12> { [ 0x1000581, 0x1000551 ] };
+
+ key <AC01> { [ 0x100057b, 0x100054b ] };
+ key <AC02> { [ 0x100057e, 0x100054e ] };
+ key <AC03> { [ 0x1000563, 0x1000533 ] };
+ key <AC04> { [ 0x1000565, 0x1000535 ] };
+ key <AC05> { [ 0x1000561, 0x1000531 ] };
+ key <AC06> { [ 0x1000576, 0x1000546 ] };
+ key <AC07> { [ 0x100056b, 0x100053b ] };
+ key <AC08> { [ 0x100057f, 0x100054f ] };
+ key <AC09> { [ 0x1000570, 0x1000540 ] };
+ key <AC10> { [ 0x100057a, 0x100054a ] };
+ key <AC11> { [ 0x1000580, 0x1000550 ] };
+
+ key <AB01> { [ 0x100056a, 0x100053a ] };
+ key <AB02> { [ 0x1000564, 0x1000534 ] };
+ key <AB03> { [ 0x1000579, 0x1000549 ] };
+ key <AB04> { [ 0x1000575, 0x1000545 ] };
+ key <AB05> { [ 0x1000566, 0x1000536 ] };
+ key <AB06> { [ 0x100056c, 0x100053c ] };
+ key <AB07> { [ 0x1000584, 0x1000554 ] };
+ key <AB08> { [ 0x100056d, 0x100053d ] };
+ key <AB09> { [ 0x1000577, 0x1000547 ] };
+ key <AB10> { [ 0x100057c, 0x100054c ] };
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "olpc" {
+ include "am(basic)"
+ name[Group1]= "Armenia";
+
+ include "group(olpc)"
+};
+
+xkb_symbols "phonetic" {
+ include "am(basic)"
+ name[Group1]= "Armenia - Phonetic";
+
+ key <BKSL> { [ 0x1000577, 0x1000547 ] };
+
+ key <AE01> { [ 0x1000567, 0x1000537 ] };
+ key <AE02> { [ 0x1000569, 0x1000539 ] };
+ key <AE03> { [ 0x1000583, 0x1000553 ] };
+ key <AE04> { [ 0x1000571, 0x1000541 ] };
+ key <AE05> { [ 0x100057b, 0x100054b ] };
+ key <AE06> { [ 0x1000582, 0x1000552 ] };
+ key <AE07> { [ 0x1000587, 0x1000587 ] };
+ key <AE08> { [ 0x100057c, 0x100054c ] };
+ key <AE09> { [ 0x1000579, 0x1000549 ] };
+ key <AE10> { [ 0x1000573, 0x1000543 ] };
+ key <AE11> { [ 0x100002D, 0x1002015 ] };
+ key <AE12> { [ 0x100056a, 0x100053a ] };
+
+ key <LatQ> { [ 0x1000584, 0x1000554 ] };
+ key <LatW> { [ 0x1000578, 0x1000548 ] };
+ key <LatE> { [ 0x1000565, 0x1000535 ] };
+ key <LatR> { [ 0x1000580, 0x1000550 ] };
+ key <LatT> { [ 0x100057f, 0x100054f ] };
+ key <LatY> { [ 0x1000568, 0x1000538 ] };
+ key <LatU> { [ 0x1000582, 0x1000552 ] };
+ key <LatI> { [ 0x100056b, 0x100053b ] };
+ key <LatO> { [ 0x1000585, 0x1000555 ] };
+ key <LatP> { [ 0x100057a, 0x100054a ] };
+ key <AD11> { [ 0x100056d, 0x100053d ] };
+ key <AD12> { [ 0x100056e, 0x100053e ] };
+
+ key <LatA> { [ 0x1000561, 0x1000531 ] };
+ key <LatS> { [ 0x100057d, 0x100054d ] };
+ key <LatD> { [ 0x1000564, 0x1000534 ] };
+ key <LatF> { [ 0x1000586, 0x1000556 ] };
+ key <LatG> { [ 0x1000563, 0x1000533 ] };
+ key <LatH> { [ 0x1000570, 0x1000540 ] };
+ key <LatJ> { [ 0x1000575, 0x1000545 ] };
+ key <LatK> { [ 0x100056f, 0x100053f ] };
+ key <LatL> { [ 0x100056c, 0x100053c ] };
+ key <AC10> { [ semicolon, 0x1000589 ] };
+ key <AC11> { [ 0x100055b, 0x1000022 ] };
+
+ key <LatZ> { [ 0x1000566, 0x1000536 ] };
+ key <LatX> { [ 0x1000572, 0x1000542 ] };
+ key <LatC> { [ 0x1000581, 0x1000551 ] };
+ key <LatV> { [ 0x100057e, 0x100054e ] };
+ key <LatB> { [ 0x1000562, 0x1000532 ] };
+ key <LatN> { [ 0x1000576, 0x1000546 ] };
+ key <LatM> { [ 0x1000574, 0x1000544 ] };
+ key <AB08> { [ 0x100002C, 0x10000AB ] };
+ key <AB09> { [ 0x1002024, 0x10000BB ] };
+ key <AB10> { [ 0x100002F, 0x100055e ] };
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "phonetic-alt" {
+ include "am(phonetic)"
+ name[Group1]= "Armenia - Alternative Phonetic";
+
+ key <AE08> { [ 0x1000580, 0x1000550 ] };
+ key <LatR> { [ 0x100057c, 0x100054c ] };
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "eastern" {
+
+ name[Group1]="Armenia - Eastern";
+
+ // This is the closer phonetic transliteration for Eastern Armenian
+ // than the Windows XP layout for Eastern Armenian, which seems
+ // to have contained a bug, with the reversal of 'g' for keh and 'c' for gim
+ // Also, AE01 (the colon) has been replaced with the Armenian_full_stop and
+ // capital AE07 (ken) with the Armenian ligature ew
+
+ key <TLDE> { [ Armenian_separation_mark, Armenian_exclam ] };
+// key <AE01> { [ colon, KP_1 ] };
+ key <AE01> { [ Armenian_full_stop, KP_1 ] };
+ key <AE02> { [ Armenian_dza, Armenian_DZA ] };
+ key <AE03> { [ Armenian_hi, Armenian_HI ] };
+ key <AE04> { [ Armenian_accent, KP_3 ] };
+ key <AE05> { [ comma, KP_4 ] };
+ key <AE06> { [ minus, KP_9 ] };
+ key <AE07> { [ period, Armenian_ligature_ew ] };
+ key <AE08> { [ guillemotleft, parenleft ] };
+ key <AE09> { [ guillemotright, parenright ] };
+ key <AE10> { [ Armenian_o, Armenian_O ] };
+ key <AE11> { [ Armenian_ra, Armenian_RA ] };
+ key <AE12> { [ Armenian_zhe, Armenian_ZHE ] };
+
+ key <LatQ> { [ Armenian_khe, Armenian_KHE ] };
+ key <LatW> { [ Armenian_vyun, Armenian_VYUN ] };
+ key <LatE> { [ Armenian_e, Armenian_E ] };
+ key <LatR> { [ Armenian_re, Armenian_RE ] };
+ key <LatT> { [ Armenian_tyun, Armenian_TYUN ] };
+ key <LatY> { [ Armenian_yech, Armenian_YECH ] };
+ key <LatU> { [ Armenian_at, Armenian_AT ] };
+ key <LatI> { [ Armenian_ini, Armenian_INI ] };
+ key <LatO> { [ Armenian_vo, Armenian_VO ] };
+ key <LatP> { [ Armenian_pe, Armenian_PE ] };
+ key <AD11> { [ Armenian_cha, Armenian_CHA ] };
+ key <AD12> { [ Armenian_je, Armenian_JE ] };
+ key <BKSL> { [ apostrophe, Armenian_question ] };
+
+ key <LatA> { [ Armenian_ayb, Armenian_AYB ] };
+ key <LatS> { [ Armenian_se, Armenian_SE ] };
+ key <LatD> { [ Armenian_da, Armenian_DA ] };
+ key <LatF> { [ Armenian_fe, Armenian_FE ] };
+ key <LatG> { [ Armenian_gim, Armenian_GIM ] };
+ key <LatH> { [ Armenian_ho, Armenian_HO ] };
+ key <LatJ> { [ Armenian_tche, Armenian_TCHE ] };
+ key <LatK> { [ Armenian_ken, Armenian_KEN ] };
+ key <LatL> { [ Armenian_lyun, Armenian_LYUN ] };
+ key <AC10> { [ Armenian_to, Armenian_TO ] };
+ key <AC11> { [ Armenian_pyur, Armenian_PYUR ] };
+
+ key <LatZ> { [ Armenian_za, Armenian_ZA ] };
+ key <LatX> { [ Armenian_tso, Armenian_TSO ] };
+ key <LatC> { [ Armenian_ke, Armenian_KE ] };
+ key <LatV> { [ Armenian_vev, Armenian_VEV ] };
+ key <LatB> { [ Armenian_ben, Armenian_BEN ] };
+ key <LatN> { [ Armenian_nu, Armenian_NU ] };
+ key <LatM> { [ Armenian_men, Armenian_MEN ] };
+ key <AB08> { [ Armenian_sha, Armenian_SHA ] };
+ key <AB09> { [ Armenian_ghat, Armenian_GHAT ] };
+ key <AB10> { [ Armenian_tsa, Armenian_TSA ] };
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "western" {
+ include "am(eastern)"
+ name[Group1]="Armenia - Western";
+
+ // This is exactly the same layout for Western Armenian
+ // as in Windows XP, except:
+ // AE01 (the colon) has been replaced with the Armenian_full_stop and
+ // capital AE07 (ken) with the Armenian ligature ew
+
+ key <LatW> { [ Armenian_vev, Armenian_VEV ] };
+ key <LatT> { [ Armenian_da, Armenian_DA ] };
+ key <LatP> { [ Armenian_ben, Armenian_BEN ] };
+ key <LatD> { [ Armenian_tyun, Armenian_TYUN ] };
+ key <LatG> { [ Armenian_ken, Armenian_KEN ] };
+ key <LatK> { [ Armenian_ke, Armenian_KE ] };
+ key <LatC> { [ Armenian_gim, Armenian_GIM ] };
+ key <LatV> { [ Armenian_vyun, Armenian_VYUN ] };
+ key <LatB> { [ Armenian_pe, Armenian_PE ] };
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "eastern-alt" {
+ include "am(eastern)"
+ name[Group1]="Armenia - Alternative Eastern";
+
+ // This replicates the Windows XP keyboard layout for Eastern
+ // Armenian exactly (including the bug), except:
+ // AE01 (the colon) has been replaced with the Armenian_full_stop and
+ // capital AE07 (ken) with the Armenian ligature ew
+
+ key <LatG> { [ Armenian_ke, Armenian_KE ] };
+ key <LatC> { [ Armenian_gim, Armenian_GIM ] };
+
+};
diff --git a/xorg-server/xkeyboard-config/symbols/ara b/xorg-server/xkeyboard-config/symbols/ara
index 90a584475..4606ee719 100644
--- a/xorg-server/xkeyboard-config/symbols/ara
+++ b/xorg-server/xkeyboard-config/symbols/ara
@@ -1,278 +1,276 @@
-// $XKeyboardConfig$
-
-// based on a keyboard map from an 'xkb/symbols/ar' file
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
- name[Group1]= "Arabic";
-
-// NOTES:
-//
-// there is also combined shadda diacritis in AltGr position of simple
-// diacritics fatha, fathatan, damma, dammatan, kasra and kasratan
-// should a third state be added to Group2 ?
-//
-
- key <TLDE> { [ Arabic_thal, Arabic_shadda ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, asciicircum ] };
- key <AE07> { [ 7, ampersand ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenright ] };
- key <AE10> { [ 0, parenleft ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
-
- key <AD01> { [ Arabic_dad, Arabic_fatha ] };
- key <AD02> { [ Arabic_sad, Arabic_fathatan ] };
- key <AD03> { [ Arabic_theh, Arabic_damma ] };
- key <AD04> { [ Arabic_qaf, Arabic_dammatan ] };
- key <AD05> { [ Arabic_feh, 0x100fef9, 0x10006a4 ] };
- key <AD06> { [ Arabic_ghain, Arabic_hamzaunderalef ] };
- key <AD07> { [ Arabic_ain, grave ] };
- key <AD08> { [ Arabic_ha, division ] };
- key <AD09> { [ Arabic_khah, multiply ] };
- key <AD10> { [ Arabic_hah, Arabic_semicolon ] };
- key <AD11> { [ Arabic_jeem, less, 0x1000686 ] };
- key <AD12> { [ Arabic_dal, greater ] };
-
- key <AC01> { [ Arabic_sheen, Arabic_kasra ] };
- key <AC02> { [ Arabic_seen, Arabic_kasratan ] };
- key <AC03> { [ Arabic_yeh, bracketright ] };
- key <AC04> { [ Arabic_beh, bracketleft, 0x100067e ] };
- key <AC05> { [ Arabic_lam, 0x100fef7 ] };
- key <AC06> { [ Arabic_alef, Arabic_hamzaonalef ] };
- key <AC07> { [ Arabic_teh, Arabic_tatweel ] };
- key <AC08> { [ Arabic_noon, Arabic_comma ] };
- key <AC09> { [ Arabic_meem, slash ] };
- key <AC10> { [ Arabic_kaf, colon, 0x10006af ] };
- key <AC11> { [ Arabic_tah, quotedbl ] };
-
- key <LSGT> { [ bar, brokenbar ] };
- key <AB01> { [Arabic_hamzaonyeh, asciitilde, guillemotright ] };
- key <AB02> { [ Arabic_hamza, Arabic_sukun, guillemotleft ] };
- key <AB03> { [Arabic_hamzaonwaw, braceright ] };
- key <AB04> { [ Arabic_ra, braceleft ] };
- key <AB05> { [ 0x100fefb, 0x100fef5 ] };
- key <AB06> { [Arabic_alefmaksura, Arabic_maddaonalef ] };
- key <AB07> { [Arabic_tehmarbuta, apostrophe ] };
- key <AB08> { [ Arabic_waw, comma ] };
- key <AB09> { [ Arabic_zain, period ] };
- key <AB10> { [ Arabic_zah, Arabic_question_mark ] };
-
- include "level3(ralt_switch)"
-
- // End alphanumeric section
-};
-
-partial alphanumeric_keys
-xkb_symbols "qwerty" {
- include "ara(basic)"
- name[Group1]= "Arabic - qwerty";
-};
-
-partial alphanumeric_keys
-xkb_symbols "azerty" {
- include "ara(basic)"
- name[Group1]= "Arabic - azerty";
-
- // the north african arabic keyboard differs from the middle east one
- // by the numeric row; it follows French keyboard style
- //
- // PROBLEM: some chars are inaccessible: ! @ # $ % ^ *
- // should they go elsewhere? replace " ' that are now in double ?
- // also, dead_circumflex and dead_diaeresis from French keyboard
- // as well as ugrave are missing, which questions the utility of the
- // other accentuated latin letters. Maybe this is useful only with
- // a French keyboard in Group1 ? Then, shouldn't Group1 be filled ?
-
- key <AE01> { [ ampersand, 1 ] };
- key <AE02> { [ eacute, 2 ] };
- key <AE03> { [ quotedbl, 3 ] };
- key <AE04> { [ apostrophe, 4 ] };
- key <AE05> { [ parenleft, 5 ] };
- key <AE06> { [ minus, 6 ] };
- key <AE07> { [ egrave, 7 ] };
- key <AE08> { [ underscore, 8 ] };
- key <AE09> { [ ccedilla, 9 ] };
- key <AE10> { [ agrave, 0 ] };
- key <AE11> { [ parenright, degree ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "digits" {
- include "ara(basic)"
- name[Group1]= "Arabic - digits";
-
- // use arabic script digits
-
- key <AE01> { [ 0x1000661, exclam ] };
- key <AE02> { [ 0x1000662, at ] };
- key <AE03> { [ 0x1000663, numbersign ] };
- key <AE04> { [ 0x1000664, dollar ] };
- key <AE05> { [ 0x1000665, Arabic_percent ] };
- key <AE06> { [ 0x1000666, asciicircum ] };
- key <AE07> { [ 0x1000667, ampersand ] };
- key <AE08> { [ 0x1000668, asterisk ] };
- key <AE09> { [ 0x1000669, parenright ] };
- key <AE10> { [ 0x1000660, parenleft ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "qwerty_digits" {
- include "ara(digits)"
- name[Group1]= "Arabic - qwerty/digits";
-};
-
-partial alphanumeric_keys
-xkb_symbols "azerty_digits" {
- include "ara(azerty)"
- name[Group1]= "Arabic - azerty/digits";
-
- key <AE01> { [ ampersand, 0x1000661 ] };
- key <AE02> { [ eacute, 0x1000662 ] };
- key <AE03> { [ quotedbl, 0x1000663 ] };
- key <AE04> { [ apostrophe, 0x1000664 ] };
- key <AE05> { [ parenleft, 0x1000665 ] };
- key <AE06> { [ minus, 0x1000666 ] };
- key <AE07> { [ egrave, 0x1000667 ] };
- key <AE08> { [ underscore, 0x1000668 ] };
- key <AE09> { [ ccedilla, 0x1000669 ] };
- key <AE10> { [ agrave, 0x1000660 ] };
-};
-
-// Arabic keyboard using Buckwalter transliteration
-// http://www.qamus.org/transliteration.htm
-// Martin Vidner
-
-// symbol names: see /usr/X11R6/include/X11/keysymdef.h (XFree86-devel.rpm)
-
-partial alphanumeric_keys
-xkb_symbols "buckwalter" {
- name[Group1]= "Arabic - Buckwalter";
-
- // ARABIC LETTER SUPERSCRIPT ALEF
- key <TLDE> { [ 0x1000670, Arabic_shadda ] };
-
- // Arabic_0 .. Arabic_9 do not work in Kate,
- // Unicode never seems to work worse.
- key <AE01> { [ 0x1000661, VoidSymbol ] };
- key <AE02> { [ 0x1000662, VoidSymbol ] };
- key <AE03> { [ 0x1000663, VoidSymbol ] };
- key <AE04> { [ 0x1000664, Arabic_sheen ] };
- key <AE05> { [ 0x1000665, Arabic_percent ] };
- key <AE06> { [ 0x1000666, VoidSymbol ] };
- key <AE07> { [ 0x1000667, Arabic_hamzaonwaw ] };
- key <AE08> { [ 0x1000668, Arabic_thal ] };
- // ORNATE LEFT PARENTHESIS
- key <AE09> { [ 0x1000669, 0x100fd3e ] };
- // ORNATE RIGHT PARENTHESIS
- key <AE10> { [ 0x1000660, 0x100fd3f ] };
- key <AE11> { [ minus, Arabic_tatweel ] };
- key <AE12> { [ equal, plus ] };
-
- key <AD01> { [ Arabic_qaf, VoidSymbol ] };
- key <AD02> { [ Arabic_waw, Arabic_hamzaonwaw ] };
- key <AD03> { [ VoidSymbol, Arabic_ain ] };
- key <AD04> { [ Arabic_ra, VoidSymbol ] };
- key <AD05> { [ Arabic_teh, Arabic_tah ] };
- key <AD06> { [ Arabic_yeh, Arabic_alefmaksura ] };
- key <AD07> { [ Arabic_damma, VoidSymbol ] };
- key <AD08> { [ Arabic_kasra, Arabic_hamzaunderalef ] };
- key <AD09> { [ Arabic_sukun, Arabic_hamzaonalef ] };
- key <AD10> { [ Arabic_tehmarbuta, VoidSymbol ] };
- // ARABIC LETTER ALEF WASLA
- key <AD11> { [ VoidSymbol, 0x1000671 ] };
- key <AD12> { [ VoidSymbol, Arabic_hamzaonyeh ] };
-
- key <AC01> { [ Arabic_fatha, Arabic_alef ] };
- key <AC02> { [ Arabic_seen, Arabic_sad ] };
- key <AC03> { [ Arabic_dal, Arabic_dad ] };
- key <AC04> { [ Arabic_feh, Arabic_fathatan ] };
- key <AC05> { [ Arabic_ghain, VoidSymbol ] };
- key <AC06> { [ Arabic_ha, Arabic_hah ] };
- key <AC07> { [ Arabic_jeem, VoidSymbol ] };
- key <AC08> { [ Arabic_kaf, Arabic_kasratan ] };
- key <AC09> { [ Arabic_lam, VoidSymbol ] };
- key <AC10> { [ Arabic_semicolon, VoidSymbol ] };
- key <AC11> { [ Arabic_hamza, VoidSymbol ] };
-
- key <BKSL> { [ VoidSymbol, Arabic_maddaonalef ] };
-
-// key <LSGT> { [ bar, brokenbar ] };
-
- key <AB01> { [ Arabic_zain, Arabic_zah ] };
- key <AB02> { [ Arabic_khah, VoidSymbol ] };
- key <AB03> { [ VoidSymbol, VoidSymbol ] };
- key <AB04> { [ Arabic_theh, VoidSymbol ] };
- key <AB05> { [ Arabic_beh, VoidSymbol ] };
- key <AB06> { [ Arabic_noon, Arabic_dammatan ] };
- key <AB07> { [ Arabic_meem, VoidSymbol ] };
- key <AB08> { [ Arabic_comma, Arabic_hamzaunderalef ] };
- // ARABIC FULL STOP (Urdu)
- key <AB09> { [ 0x10006d4, Arabic_hamzaonalef ] };
- key <AB10> { [ VoidSymbol, Arabic_question_mark ] };
-
- // End alphanumeric section
-};
-
-partial alphanumeric_keys
-xkb_symbols "olpc" {
-
- include "ara(basic)"
-
- // As part of the olpc design some changes were made to the Arabic
- // keyboard design. Major changes are:
- //
- // * Removed the lam-alef single character. Poeple type as they
- // pronounce, and lam-alef is just a visual formatting of the
- // sequence and is not often used on the keyboard. It is
- // similar to the Allah single character, which is also not on
- // the keyboard.
- // * Moved the following keys:
- // o Thal from TLDE to AB05: Due to space limitation on the
- // keybaord, but also accessibility
- // o Shadda from TLDE to AD05
- // * Placed currency letters on number keys and moved the ^ and &
- // characters to lower keys (This change is worth revisiting
- // before end of test period)
-
- key <TLDE> { [ grave, asciitilde ] };
-
- key <AE01> { [ 0x1000661, exclam ] };
- key <AE02> { [ 0x1000662, at ] };
- key <AE03> { [ 0x1000663, numbersign ] };
- key <AE04> { [ 0x1000664, dollar ] };
- key <AE05> { [ 0x1000665, Arabic_percent ] };
- key <AE06> { [ 0x1000666, sterling ] };
- key <AE07> { [ 0x1000667, EuroSign ] };
- key <AE08> { [ 0x1000668, asterisk ] };
- key <AE09> { [ 0x1000669, parenright ] };
- key <AE10> { [ 0x1000660, parenleft ] };
-
- key <AD05> { [ Arabic_feh, Arabic_shadda ] };
-
- key <AD08> { [ Arabic_heh, division ] };
- key <AD11> { [ Arabic_jeem, braceright ] };
- key <AD12> { [ Arabic_dal, braceleft ] };
-
- key <AC01> { [ Arabic_sheen, greater ] };
- key <AC02> { [ Arabic_seen, less ] };
- key <AC05> { [ Arabic_lam, ampersand ] };
- key <AC10> { [ Arabic_kaf ] };
- key <AC11> { [ Arabic_tah ] };
-
- key <BKSL> { [ backslash, bar ] };
-
-
- // REH isolated form?
- key <AB03> { [ Arabic_hamzaonwaw, Arabic_kasra ] };
- key <AB04> { [ Arabic_ra, Arabic_kasratan ] };
- key <AB05> { [ Arabic_thal, asciicircum ] };
-
- include "group(olpc)"
-};
+// based on a keyboard map from an 'xkb/symbols/ar' file
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ name[Group1]= "Arabic";
+
+// NOTES:
+//
+// there is also combined shadda diacritis in AltGr position of simple
+// diacritics fatha, fathatan, damma, dammatan, kasra and kasratan
+// should a third state be added to Group2 ?
+//
+
+ key <TLDE> { [ Arabic_thal, Arabic_shadda ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenright ] };
+ key <AE10> { [ 0, parenleft ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+
+ key <AD01> { [ Arabic_dad, Arabic_fatha ] };
+ key <AD02> { [ Arabic_sad, Arabic_fathatan ] };
+ key <AD03> { [ Arabic_theh, Arabic_damma ] };
+ key <AD04> { [ Arabic_qaf, Arabic_dammatan ] };
+ key <AD05> { [ Arabic_feh, 0x100fef9, 0x10006a4 ] };
+ key <AD06> { [ Arabic_ghain, Arabic_hamzaunderalef ] };
+ key <AD07> { [ Arabic_ain, grave ] };
+ key <AD08> { [ Arabic_ha, division ] };
+ key <AD09> { [ Arabic_khah, multiply ] };
+ key <AD10> { [ Arabic_hah, Arabic_semicolon ] };
+ key <AD11> { [ Arabic_jeem, less, 0x1000686 ] };
+ key <AD12> { [ Arabic_dal, greater ] };
+
+ key <AC01> { [ Arabic_sheen, Arabic_kasra ] };
+ key <AC02> { [ Arabic_seen, Arabic_kasratan ] };
+ key <AC03> { [ Arabic_yeh, bracketright ] };
+ key <AC04> { [ Arabic_beh, bracketleft, 0x100067e ] };
+ key <AC05> { [ Arabic_lam, 0x100fef7 ] };
+ key <AC06> { [ Arabic_alef, Arabic_hamzaonalef ] };
+ key <AC07> { [ Arabic_teh, Arabic_tatweel ] };
+ key <AC08> { [ Arabic_noon, Arabic_comma ] };
+ key <AC09> { [ Arabic_meem, slash ] };
+ key <AC10> { [ Arabic_kaf, colon, 0x10006af ] };
+ key <AC11> { [ Arabic_tah, quotedbl ] };
+
+ key <LSGT> { [ bar, brokenbar ] };
+ key <AB01> { [Arabic_hamzaonyeh, asciitilde, guillemotright ] };
+ key <AB02> { [ Arabic_hamza, Arabic_sukun, guillemotleft ] };
+ key <AB03> { [Arabic_hamzaonwaw, braceright ] };
+ key <AB04> { [ Arabic_ra, braceleft ] };
+ key <AB05> { [ 0x100fefb, 0x100fef5 ] };
+ key <AB06> { [Arabic_alefmaksura, Arabic_maddaonalef ] };
+ key <AB07> { [Arabic_tehmarbuta, apostrophe ] };
+ key <AB08> { [ Arabic_waw, comma ] };
+ key <AB09> { [ Arabic_zain, period ] };
+ key <AB10> { [ Arabic_zah, Arabic_question_mark ] };
+
+ include "level3(ralt_switch)"
+
+ // End alphanumeric section
+};
+
+partial alphanumeric_keys
+xkb_symbols "qwerty" {
+ include "ara(basic)"
+ name[Group1]= "Arabic - qwerty";
+};
+
+partial alphanumeric_keys
+xkb_symbols "azerty" {
+ include "ara(basic)"
+ name[Group1]= "Arabic - azerty";
+
+ // the north african arabic keyboard differs from the middle east one
+ // by the numeric row; it follows French keyboard style
+ //
+ // PROBLEM: some chars are inaccessible: ! @ # $ % ^ *
+ // should they go elsewhere? replace " ' that are now in double ?
+ // also, dead_circumflex and dead_diaeresis from French keyboard
+ // as well as ugrave are missing, which questions the utility of the
+ // other accentuated latin letters. Maybe this is useful only with
+ // a French keyboard in Group1 ? Then, shouldn't Group1 be filled ?
+
+ key <AE01> { [ ampersand, 1 ] };
+ key <AE02> { [ eacute, 2 ] };
+ key <AE03> { [ quotedbl, 3 ] };
+ key <AE04> { [ apostrophe, 4 ] };
+ key <AE05> { [ parenleft, 5 ] };
+ key <AE06> { [ minus, 6 ] };
+ key <AE07> { [ egrave, 7 ] };
+ key <AE08> { [ underscore, 8 ] };
+ key <AE09> { [ ccedilla, 9 ] };
+ key <AE10> { [ agrave, 0 ] };
+ key <AE11> { [ parenright, degree ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "digits" {
+ include "ara(basic)"
+ name[Group1]= "Arabic - digits";
+
+ // use arabic script digits
+
+ key <AE01> { [ 0x1000661, exclam ] };
+ key <AE02> { [ 0x1000662, at ] };
+ key <AE03> { [ 0x1000663, numbersign ] };
+ key <AE04> { [ 0x1000664, dollar ] };
+ key <AE05> { [ 0x1000665, Arabic_percent ] };
+ key <AE06> { [ 0x1000666, asciicircum ] };
+ key <AE07> { [ 0x1000667, ampersand ] };
+ key <AE08> { [ 0x1000668, asterisk ] };
+ key <AE09> { [ 0x1000669, parenright ] };
+ key <AE10> { [ 0x1000660, parenleft ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "qwerty_digits" {
+ include "ara(digits)"
+ name[Group1]= "Arabic - qwerty/digits";
+};
+
+partial alphanumeric_keys
+xkb_symbols "azerty_digits" {
+ include "ara(azerty)"
+ name[Group1]= "Arabic - azerty/digits";
+
+ key <AE01> { [ ampersand, 0x1000661 ] };
+ key <AE02> { [ eacute, 0x1000662 ] };
+ key <AE03> { [ quotedbl, 0x1000663 ] };
+ key <AE04> { [ apostrophe, 0x1000664 ] };
+ key <AE05> { [ parenleft, 0x1000665 ] };
+ key <AE06> { [ minus, 0x1000666 ] };
+ key <AE07> { [ egrave, 0x1000667 ] };
+ key <AE08> { [ underscore, 0x1000668 ] };
+ key <AE09> { [ ccedilla, 0x1000669 ] };
+ key <AE10> { [ agrave, 0x1000660 ] };
+};
+
+// Arabic keyboard using Buckwalter transliteration
+// http://www.qamus.org/transliteration.htm
+// Martin Vidner
+
+// symbol names: see /usr/X11R6/include/X11/keysymdef.h (XFree86-devel.rpm)
+
+partial alphanumeric_keys
+xkb_symbols "buckwalter" {
+ name[Group1]= "Arabic - Buckwalter";
+
+ // ARABIC LETTER SUPERSCRIPT ALEF
+ key <TLDE> { [ 0x1000670, Arabic_shadda ] };
+
+ // Arabic_0 .. Arabic_9 do not work in Kate,
+ // Unicode never seems to work worse.
+ key <AE01> { [ 0x1000661, VoidSymbol ] };
+ key <AE02> { [ 0x1000662, VoidSymbol ] };
+ key <AE03> { [ 0x1000663, VoidSymbol ] };
+ key <AE04> { [ 0x1000664, Arabic_sheen ] };
+ key <AE05> { [ 0x1000665, Arabic_percent ] };
+ key <AE06> { [ 0x1000666, VoidSymbol ] };
+ key <AE07> { [ 0x1000667, Arabic_hamzaonwaw ] };
+ key <AE08> { [ 0x1000668, Arabic_thal ] };
+ // ORNATE LEFT PARENTHESIS
+ key <AE09> { [ 0x1000669, 0x100fd3e ] };
+ // ORNATE RIGHT PARENTHESIS
+ key <AE10> { [ 0x1000660, 0x100fd3f ] };
+ key <AE11> { [ minus, Arabic_tatweel ] };
+ key <AE12> { [ equal, plus ] };
+
+ key <AD01> { [ Arabic_qaf, VoidSymbol ] };
+ key <AD02> { [ Arabic_waw, Arabic_hamzaonwaw ] };
+ key <AD03> { [ VoidSymbol, Arabic_ain ] };
+ key <AD04> { [ Arabic_ra, VoidSymbol ] };
+ key <AD05> { [ Arabic_teh, Arabic_tah ] };
+ key <AD06> { [ Arabic_yeh, Arabic_alefmaksura ] };
+ key <AD07> { [ Arabic_damma, VoidSymbol ] };
+ key <AD08> { [ Arabic_kasra, Arabic_hamzaunderalef ] };
+ key <AD09> { [ Arabic_sukun, Arabic_hamzaonalef ] };
+ key <AD10> { [ Arabic_tehmarbuta, VoidSymbol ] };
+ // ARABIC LETTER ALEF WASLA
+ key <AD11> { [ VoidSymbol, 0x1000671 ] };
+ key <AD12> { [ VoidSymbol, Arabic_hamzaonyeh ] };
+
+ key <AC01> { [ Arabic_fatha, Arabic_alef ] };
+ key <AC02> { [ Arabic_seen, Arabic_sad ] };
+ key <AC03> { [ Arabic_dal, Arabic_dad ] };
+ key <AC04> { [ Arabic_feh, Arabic_fathatan ] };
+ key <AC05> { [ Arabic_ghain, VoidSymbol ] };
+ key <AC06> { [ Arabic_ha, Arabic_hah ] };
+ key <AC07> { [ Arabic_jeem, VoidSymbol ] };
+ key <AC08> { [ Arabic_kaf, Arabic_kasratan ] };
+ key <AC09> { [ Arabic_lam, VoidSymbol ] };
+ key <AC10> { [ Arabic_semicolon, VoidSymbol ] };
+ key <AC11> { [ Arabic_hamza, VoidSymbol ] };
+
+ key <BKSL> { [ VoidSymbol, Arabic_maddaonalef ] };
+
+// key <LSGT> { [ bar, brokenbar ] };
+
+ key <AB01> { [ Arabic_zain, Arabic_zah ] };
+ key <AB02> { [ Arabic_khah, VoidSymbol ] };
+ key <AB03> { [ VoidSymbol, VoidSymbol ] };
+ key <AB04> { [ Arabic_theh, VoidSymbol ] };
+ key <AB05> { [ Arabic_beh, VoidSymbol ] };
+ key <AB06> { [ Arabic_noon, Arabic_dammatan ] };
+ key <AB07> { [ Arabic_meem, VoidSymbol ] };
+ key <AB08> { [ Arabic_comma, Arabic_hamzaunderalef ] };
+ // ARABIC FULL STOP (Urdu)
+ key <AB09> { [ 0x10006d4, Arabic_hamzaonalef ] };
+ key <AB10> { [ VoidSymbol, Arabic_question_mark ] };
+
+ // End alphanumeric section
+};
+
+partial alphanumeric_keys
+xkb_symbols "olpc" {
+
+ include "ara(basic)"
+
+ // As part of the olpc design some changes were made to the Arabic
+ // keyboard design. Major changes are:
+ //
+ // * Removed the lam-alef single character. Poeple type as they
+ // pronounce, and lam-alef is just a visual formatting of the
+ // sequence and is not often used on the keyboard. It is
+ // similar to the Allah single character, which is also not on
+ // the keyboard.
+ // * Moved the following keys:
+ // o Thal from TLDE to AB05: Due to space limitation on the
+ // keybaord, but also accessibility
+ // o Shadda from TLDE to AD05
+ // * Placed currency letters on number keys and moved the ^ and &
+ // characters to lower keys (This change is worth revisiting
+ // before end of test period)
+
+ key <TLDE> { [ grave, asciitilde ] };
+
+ key <AE01> { [ 0x1000661, exclam ] };
+ key <AE02> { [ 0x1000662, at ] };
+ key <AE03> { [ 0x1000663, numbersign ] };
+ key <AE04> { [ 0x1000664, dollar ] };
+ key <AE05> { [ 0x1000665, Arabic_percent ] };
+ key <AE06> { [ 0x1000666, sterling ] };
+ key <AE07> { [ 0x1000667, EuroSign ] };
+ key <AE08> { [ 0x1000668, asterisk ] };
+ key <AE09> { [ 0x1000669, parenright ] };
+ key <AE10> { [ 0x1000660, parenleft ] };
+
+ key <AD05> { [ Arabic_feh, Arabic_shadda ] };
+
+ key <AD08> { [ Arabic_heh, division ] };
+ key <AD11> { [ Arabic_jeem, braceright ] };
+ key <AD12> { [ Arabic_dal, braceleft ] };
+
+ key <AC01> { [ Arabic_sheen, greater ] };
+ key <AC02> { [ Arabic_seen, less ] };
+ key <AC05> { [ Arabic_lam, ampersand ] };
+ key <AC10> { [ Arabic_kaf ] };
+ key <AC11> { [ Arabic_tah ] };
+
+ key <BKSL> { [ backslash, bar ] };
+
+
+ // REH isolated form?
+ key <AB03> { [ Arabic_hamzaonwaw, Arabic_kasra ] };
+ key <AB04> { [ Arabic_ra, Arabic_kasratan ] };
+ key <AB05> { [ Arabic_thal, asciicircum ] };
+
+ include "group(olpc)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/at b/xorg-server/xkeyboard-config/symbols/at
index b892af7a8..52382f9c0 100644
--- a/xorg-server/xkeyboard-config/symbols/at
+++ b/xorg-server/xkeyboard-config/symbols/at
@@ -1,8 +1,4 @@
-
// based on a keyboard map from an 'xkb/symbols/de' file
-//
-// $XKeyboardConfig$
-// $XFree86: xc/programs/xkbcomp/symbols/de,v 1.6 2003/09/08 13:12:51 pascal Exp $
default
xkb_symbols "basic" {
diff --git a/xorg-server/xkeyboard-config/symbols/az b/xorg-server/xkeyboard-config/symbols/az
index 254cf7f8c..4227bc944 100644
--- a/xorg-server/xkeyboard-config/symbols/az
+++ b/xorg-server/xkeyboard-config/symbols/az
@@ -1,94 +1,92 @@
-// $XKeyboardConfig$
-
-// based on:
-// symbols definition for a very simple Azerbaidjani keyboard layout.
-// 2001 - Pablo Saratxaga <pablo@mandrakesoft.com>
-
-partial default alphanumeric_keys
-xkb_symbols "latin" {
-
- include "us"
-
- name[Group1]= "Azerbaijan";
-
- key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] };
-
- key <AE03> { [ 3, numbersign, U2166 ] };
- key <AE06> { [ 6, colon, EuroSign, periodcentered ] };
- key <AE07> { [ 7, question ] };
-
- key <AE08> { [ 8, asterisk, asciicircum, dead_circumflex ] };
- key <AE11> { [ minus, underscore, hyphen, emdash ] };
-
- key <AD02> { [ udiaeresis, Udiaeresis ] };
- key <AD04> { [ r, R, registered ] };
- key <AD08> { [ i, Iabovedot ] };
- key <AD11> { [ odiaeresis, Odiaeresis, bracketleft, braceleft ] };
- key <AD12> { [ gbreve, Gbreve, bracketright, braceright ] };
-
- key <AC10> { [ idotless, I ] };
- key <AC11> { [ schwa, SCHWA ] };
-
- key <AB03> { [ c, C, copyright, division ] };
- key <AB07> { [ m, M, periodcentered, currency ] };
- key <AB08> { [ ccedilla, Ccedilla ] };
- key <AB09> { [ scedilla, Scedilla ] };
- key <AB10> { [ period, comma ] };
- // End alphanumeric section
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "cyrillic" {
-
- name[Group1]= "Azerbaijan - Cyrillic";
-
- key <AE02> {[ 2, quotedbl ] };
- key <AE03> {[ 3, numbersign ] };
- key <AE04> {[ 4, semicolon ] };
- key <AE06> {[ 6, colon ] };
- key <AE07> {[ 7, question ] };
- key <AE08> {[ 8, asterisk, braceleft ] };
- key <AE09> {[ 9, parenleft, bracketleft ] };
- key <AE10> {[ 0, parenright, bracketright ] };
- key <AE11> {[ minus, underscore, braceright ] };
-
- key <AD01> {[ Cyrillic_je, Cyrillic_JE ] };
- key <AD02> {[ Cyrillic_u_straight, Cyrillic_U_straight ] };
- key <AD03> {[ Cyrillic_u, Cyrillic_U ] };
- key <AD04> {[ Cyrillic_ka, Cyrillic_KA ] };
- key <AD05> {[ Cyrillic_ie, Cyrillic_IE ] };
- key <AD06> {[ Cyrillic_en, Cyrillic_EN ] };
- key <AD07> {[ Cyrillic_ghe, Cyrillic_GHE ] };
- key <AD08> {[ Cyrillic_sha, Cyrillic_SHA ] };
- key <AD09> {[ Cyrillic_shha, Cyrillic_SHHA ] };
- key <AD10> {[ Cyrillic_ze, Cyrillic_ZE ] };
- key <AD11> {[ Cyrillic_ha, Cyrillic_HA ] };
- key <AD12> {[ Cyrillic_che_vertstroke, Cyrillic_CHE_vertstroke ] };
-
- key <AC01> {[ Cyrillic_ef, Cyrillic_EF ] };
- key <AC02> {[ Cyrillic_yeru, Cyrillic_YERU ] };
- key <AC03> {[ Cyrillic_ve, Cyrillic_VE ] };
- key <AC04> {[ Cyrillic_a, Cyrillic_A ] };
- key <AC05> {[ Cyrillic_pe, Cyrillic_PE ] };
- key <AC06> {[ Cyrillic_er, Cyrillic_ER ] };
- key <AC07> {[ Cyrillic_o, Cyrillic_O ] };
- key <AC08> {[ Cyrillic_el, Cyrillic_EL ] };
- key <AC09> {[ Cyrillic_de, Cyrillic_DE ] };
- key <AC10> {[ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <AC11> {[ Cyrillic_ka_vertstroke,Cyrillic_KA_vertstroke ] };
-
- key <AB01> {[ Cyrillic_schwa, Cyrillic_SCHWA ] };
- key <AB02> {[ Cyrillic_che, Cyrillic_CHE ] };
- key <AB03> {[ Cyrillic_es, Cyrillic_ES ] };
- key <AB04> {[ Cyrillic_em, Cyrillic_EM ] };
- key <AB05> {[ Cyrillic_i, Cyrillic_I ] };
- key <AB06> {[ Cyrillic_te, Cyrillic_TE ] };
- key <AB07> {[ Cyrillic_ghe_bar, Cyrillic_GHE_bar ] };
- key <AB08> {[ Cyrillic_be, Cyrillic_BE ] };
- key <AB09> {[ Cyrillic_o_bar, Cyrillic_O_bar ] };
- key <AB10> {[ period, comma ] };
-
- // End alphanumeric section
-};
+// based on:
+// symbols definition for a very simple Azerbaidjani keyboard layout.
+// 2001 - Pablo Saratxaga <pablo@mandrakesoft.com>
+
+partial default alphanumeric_keys
+xkb_symbols "latin" {
+
+ include "us"
+
+ name[Group1]= "Azerbaijan";
+
+ key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] };
+
+ key <AE03> { [ 3, numbersign, U2166 ] };
+ key <AE06> { [ 6, colon, EuroSign, periodcentered ] };
+ key <AE07> { [ 7, question ] };
+
+ key <AE08> { [ 8, asterisk, asciicircum, dead_circumflex ] };
+ key <AE11> { [ minus, underscore, hyphen, emdash ] };
+
+ key <AD02> { [ udiaeresis, Udiaeresis ] };
+ key <AD04> { [ r, R, registered ] };
+ key <AD08> { [ i, Iabovedot ] };
+ key <AD11> { [ odiaeresis, Odiaeresis, bracketleft, braceleft ] };
+ key <AD12> { [ gbreve, Gbreve, bracketright, braceright ] };
+
+ key <AC10> { [ idotless, I ] };
+ key <AC11> { [ schwa, SCHWA ] };
+
+ key <AB03> { [ c, C, copyright, division ] };
+ key <AB07> { [ m, M, periodcentered, currency ] };
+ key <AB08> { [ ccedilla, Ccedilla ] };
+ key <AB09> { [ scedilla, Scedilla ] };
+ key <AB10> { [ period, comma ] };
+ // End alphanumeric section
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "cyrillic" {
+
+ name[Group1]= "Azerbaijan - Cyrillic";
+
+ key <AE02> {[ 2, quotedbl ] };
+ key <AE03> {[ 3, numbersign ] };
+ key <AE04> {[ 4, semicolon ] };
+ key <AE06> {[ 6, colon ] };
+ key <AE07> {[ 7, question ] };
+ key <AE08> {[ 8, asterisk, braceleft ] };
+ key <AE09> {[ 9, parenleft, bracketleft ] };
+ key <AE10> {[ 0, parenright, bracketright ] };
+ key <AE11> {[ minus, underscore, braceright ] };
+
+ key <AD01> {[ Cyrillic_je, Cyrillic_JE ] };
+ key <AD02> {[ Cyrillic_u_straight, Cyrillic_U_straight ] };
+ key <AD03> {[ Cyrillic_u, Cyrillic_U ] };
+ key <AD04> {[ Cyrillic_ka, Cyrillic_KA ] };
+ key <AD05> {[ Cyrillic_ie, Cyrillic_IE ] };
+ key <AD06> {[ Cyrillic_en, Cyrillic_EN ] };
+ key <AD07> {[ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <AD08> {[ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD09> {[ Cyrillic_shha, Cyrillic_SHHA ] };
+ key <AD10> {[ Cyrillic_ze, Cyrillic_ZE ] };
+ key <AD11> {[ Cyrillic_ha, Cyrillic_HA ] };
+ key <AD12> {[ Cyrillic_che_vertstroke, Cyrillic_CHE_vertstroke ] };
+
+ key <AC01> {[ Cyrillic_ef, Cyrillic_EF ] };
+ key <AC02> {[ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <AC03> {[ Cyrillic_ve, Cyrillic_VE ] };
+ key <AC04> {[ Cyrillic_a, Cyrillic_A ] };
+ key <AC05> {[ Cyrillic_pe, Cyrillic_PE ] };
+ key <AC06> {[ Cyrillic_er, Cyrillic_ER ] };
+ key <AC07> {[ Cyrillic_o, Cyrillic_O ] };
+ key <AC08> {[ Cyrillic_el, Cyrillic_EL ] };
+ key <AC09> {[ Cyrillic_de, Cyrillic_DE ] };
+ key <AC10> {[ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AC11> {[ Cyrillic_ka_vertstroke,Cyrillic_KA_vertstroke ] };
+
+ key <AB01> {[ Cyrillic_schwa, Cyrillic_SCHWA ] };
+ key <AB02> {[ Cyrillic_che, Cyrillic_CHE ] };
+ key <AB03> {[ Cyrillic_es, Cyrillic_ES ] };
+ key <AB04> {[ Cyrillic_em, Cyrillic_EM ] };
+ key <AB05> {[ Cyrillic_i, Cyrillic_I ] };
+ key <AB06> {[ Cyrillic_te, Cyrillic_TE ] };
+ key <AB07> {[ Cyrillic_ghe_bar, Cyrillic_GHE_bar ] };
+ key <AB08> {[ Cyrillic_be, Cyrillic_BE ] };
+ key <AB09> {[ Cyrillic_o_bar, Cyrillic_O_bar ] };
+ key <AB10> {[ period, comma ] };
+
+ // End alphanumeric section
+};
diff --git a/xorg-server/xkeyboard-config/symbols/ba b/xorg-server/xkeyboard-config/symbols/ba
index 68a887a94..4507d4033 100644
--- a/xorg-server/xkeyboard-config/symbols/ba
+++ b/xorg-server/xkeyboard-config/symbols/ba
@@ -1,43 +1,40 @@
-// $XKeyboardConfig$
-//
-
-default partial alphanumeric_keys
-xkb_symbols "basic" {
-
- name[Group1]="Bosnia and Herzegovina";
-
- include "rs(latin)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "us" {
-
- name[Group1]= "Bosnia and Herzegovina - US keyboard with Bosnian letters";
-
- include "rs(latinyz)"
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "alternatequotes" {
-
- name[Group1]= "Bosnia and Herzegovina - Use guillemets for quotes";
-
- include "rs(latinalternatequotes)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "unicode" {
-
- name[Group1]= "Bosnia and Herzegovina - Use Bosnian digraphs";
-
- include "rs(latinunicode)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "unicodeus" {
-
- name[Group1]= "Bosnia and Herzegovina - US keyboard with Bosnian digraphs";
-
- include "rs(latinunicodeyz)"
-};
+default partial alphanumeric_keys
+xkb_symbols "basic" {
+
+ name[Group1]="Bosnia and Herzegovina";
+
+ include "rs(latin)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "us" {
+
+ name[Group1]= "Bosnia and Herzegovina - US keyboard with Bosnian letters";
+
+ include "rs(latinyz)"
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "alternatequotes" {
+
+ name[Group1]= "Bosnia and Herzegovina - Use guillemets for quotes";
+
+ include "rs(latinalternatequotes)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "unicode" {
+
+ name[Group1]= "Bosnia and Herzegovina - Use Bosnian digraphs";
+
+ include "rs(latinunicode)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "unicodeus" {
+
+ name[Group1]= "Bosnia and Herzegovina - US keyboard with Bosnian digraphs";
+
+ include "rs(latinunicodeyz)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/bd b/xorg-server/xkeyboard-config/symbols/bd
index 1f622e9fd..4146f1c8f 100644
--- a/xorg-server/xkeyboard-config/symbols/bd
+++ b/xorg-server/xkeyboard-config/symbols/bd
@@ -1,98 +1,97 @@
-// $XKeyboardConfig$
-//
-// XKB symbol :: National Bangla/Bengali Standard Keyboard Layout for Bangladesh
-// Ref: http://www.bcc.net.bd/keyboard/bsti_kb_specification.pdf
-//
-// Author: Jamil Ahmed <jamil at bengalinux.org>
-// Created: 18-12-2005
-// Last Updated: 08-01-2006
-// Version: 6.01.3
-//
-// Issues:
-// <AC08> Khanda-Ta is given U-09CE; But BCC had U-09BA
-// <AC07> U-09BB is added though it is not allocated in Original Unicode
-// <AE06> U-09B3 is added though it is not allocated in Original Unicode
-// 3 Conjunct characters are not included
-//
-
-default partial alphanumeric_keys
-
-xkb_symbols "basic" {
- name[Group1]= "Bangladesh";
- key <ESC> { [ Escape ] };
-
-// numbers
- key <TLDE> { [ quoteleft, asciitilde, voidsymbol, voidsymbol ] };
- key <AE01> { [ 0x10009E7, exclam, 0x10009F4, voidsymbol ] };
- key <AE02> { [ 0x10009E8, at, 0x10009F5, voidsymbol ] };
- key <AE03> { [ 0x10009E9, numbersign, 0x10009F6, voidsymbol ] };
- key <AE04> { [ 0x10009EA, dollar, 0x10009F3, 0x10009F2 ] };
- key <AE05> { [ 0x10009EB, percent, 0x10009F7, voidsymbol ] };
- key <AE06> { [ 0x10009EC, asciicircum, 0x10009F8, 0x10009B3 ] };
- key <AE07> { [ 0x10009ED, ampersand, 0x1000902, voidsymbol ] };
- key <AE08> { [ 0x10009EE, asterisk, voidsymbol, voidsymbol ] };
- key <AE09> { [ 0x10009EF, parenleft, voidsymbol, voidsymbol ] };
- key <AE10> { [ 0x10009E6, parenright, 0x10009F9, voidsymbol ] };
- key <AE11> { [ minus, underscore, 0x100200C, voidsymbol ] };
- key <AE12> { [ equal, plus, 0x100200D, voidsymbol ] };
- key <BKSP> { [ BackSpace ] };
-
-// tab, q to ]
- key <TAB> { [ Tab, ISO_Left_Tab ] };
- key <AD01> { [ 0x1000999, 0x1000982, 0x10009E2, 0x10009E3 ] };
- key <AD02> { [ 0x10009AF, 0x10009DF, voidsymbol, voidsymbol ] };
- key <AD03> { [ 0x10009A1, 0x10009A2, 0x10009C4, voidsymbol ] };
- key <AD04> { [ 0x10009AA, 0x10009AB, voidsymbol, voidsymbol ] };
- key <AD05> { [ 0x100099F, 0x10009A0, voidsymbol, voidsymbol ] };
- key <AD06> { [ 0x100099A, 0x100099B, voidsymbol, voidsymbol ] };
- key <AD07> { [ 0x100099C, 0x100099D, voidsymbol, voidsymbol ] };
- key <AD08> { [ 0x10009B9, 0x100099E, 0x10009BD, voidsymbol ] };
- key <AD09> { [ 0x1000997, 0x1000998, voidsymbol, voidsymbol ] };
- key <AD10> { [ 0x10009DC, 0x10009DD, voidsymbol, voidsymbol ] };
- key <AD11> { [ bracketleft, braceleft, voidsymbol, voidsymbol ] };
- key <AD12> { [ bracketright, braceright, voidsymbol, voidsymbol ] };
- key <RTRN> { [ Return ] };
-
-// caps, a to '
-// key <CAPS> { [ Caps_Lock ] };
- key <AC01> { [ 0x10009C3, 0x10009D7, 0x100098B, 0x10009E0 ] };
- key <AC02> { [ 0x10009C1, 0x10009C2, 0x1000989, 0x100098A ] };
- key <AC03> { [ 0x10009BF, 0x10009C0, 0x1000987, 0x1000988 ] };
- key <AC04> { [ 0x10009AC, 0x10009AD, 0x10009F0, 0x10009F1 ] };
- key <AC05> { [ 0x10009CD, 0x1000964, 0x1000965, voidsymbol ] };
- key <AC06> { [ 0x10009BE, 0x1000985, 0x1000986, voidsymbol ] };
- key <AC07> { [ 0x1000995, 0x1000996, 0x10009BB, voidsymbol ] };
- key <AC08> { [ 0x10009A4, 0x10009A5, 0x10009CE, voidsymbol ] };
- key <AC09> { [ 0x10009A6, 0x10009A7, 0x100098C, 0x10009E1 ] };
- key <AC10> { [ semicolon, colon, voidsymbol, voidsymbol ] };
- key <AC11> { [ quoteright, quotedbl, voidsymbol, voidsymbol ] };
-
-// shift, z to /
-// key <LFSH> { [ Shift_L ] };
- key <AB01> { [ 0x1000981, 0x1000983, 0x10009FA, voidsymbol ] };
- key <AB02> { [ 0x10009CB, 0x10009CC, 0x1000993, 0x1000994 ] };
- key <AB03> { [ 0x10009C7, 0x10009C8, 0x100098F, 0x1000990 ] };
- key <AB04> { [ 0x10009B0, 0x10009B2, voidsymbol, voidsymbol ] };
- key <AB05> { [ 0x10009A8, 0x10009A3, voidsymbol, voidsymbol ] };
- key <AB06> { [ 0x10009B8, 0x10009B7, voidsymbol, voidsymbol ] };
- key <AB07> { [ 0x10009AE, 0x10009B6, voidsymbol, voidsymbol ] };
- key <AB08> { [ comma, less, voidsymbol, voidsymbol ] };
- key <AB09> { [ period, greater, 0x10009BC, voidsymbol ] };
- key <AB10> { [ slash, question, voidsymbol, voidsymbol ] };
- key <BKSL> { [ backslash, bar, voidsymbol, voidsymbol ] };
-
-// third level with right-Alt
- include "level3(ralt_switch)"
-
-};
-
-
-//
-// XKB symbol :: Probhat Bangla/Bengali Keyboard Layout
-// Ref: www.ankurbangla.org/images/probhat_layout.png
-//
-
-xkb_symbols "probhat" {
- include "in(ben_probhat)"
- name[Group1]= "Bangladesh - Probhat";
-};
+//
+// XKB symbol :: National Bangla/Bengali Standard Keyboard Layout for Bangladesh
+// Ref: http://www.bcc.net.bd/keyboard/bsti_kb_specification.pdf
+//
+// Author: Jamil Ahmed <jamil at bengalinux.org>
+// Created: 18-12-2005
+// Last Updated: 08-01-2006
+// Version: 6.01.3
+//
+// Issues:
+// <AC08> Khanda-Ta is given U-09CE; But BCC had U-09BA
+// <AC07> U-09BB is added though it is not allocated in Original Unicode
+// <AE06> U-09B3 is added though it is not allocated in Original Unicode
+// 3 Conjunct characters are not included
+//
+
+default partial alphanumeric_keys
+
+xkb_symbols "basic" {
+ name[Group1]= "Bangladesh";
+ key <ESC> { [ Escape ] };
+
+// numbers
+ key <TLDE> { [ quoteleft, asciitilde, voidsymbol, voidsymbol ] };
+ key <AE01> { [ 0x10009E7, exclam, 0x10009F4, voidsymbol ] };
+ key <AE02> { [ 0x10009E8, at, 0x10009F5, voidsymbol ] };
+ key <AE03> { [ 0x10009E9, numbersign, 0x10009F6, voidsymbol ] };
+ key <AE04> { [ 0x10009EA, dollar, 0x10009F3, 0x10009F2 ] };
+ key <AE05> { [ 0x10009EB, percent, 0x10009F7, voidsymbol ] };
+ key <AE06> { [ 0x10009EC, asciicircum, 0x10009F8, 0x10009B3 ] };
+ key <AE07> { [ 0x10009ED, ampersand, 0x1000902, voidsymbol ] };
+ key <AE08> { [ 0x10009EE, asterisk, voidsymbol, voidsymbol ] };
+ key <AE09> { [ 0x10009EF, parenleft, voidsymbol, voidsymbol ] };
+ key <AE10> { [ 0x10009E6, parenright, 0x10009F9, voidsymbol ] };
+ key <AE11> { [ minus, underscore, 0x100200C, voidsymbol ] };
+ key <AE12> { [ equal, plus, 0x100200D, voidsymbol ] };
+ key <BKSP> { [ BackSpace ] };
+
+// tab, q to ]
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [ 0x1000999, 0x1000982, 0x10009E2, 0x10009E3 ] };
+ key <AD02> { [ 0x10009AF, 0x10009DF, voidsymbol, voidsymbol ] };
+ key <AD03> { [ 0x10009A1, 0x10009A2, 0x10009C4, voidsymbol ] };
+ key <AD04> { [ 0x10009AA, 0x10009AB, voidsymbol, voidsymbol ] };
+ key <AD05> { [ 0x100099F, 0x10009A0, voidsymbol, voidsymbol ] };
+ key <AD06> { [ 0x100099A, 0x100099B, voidsymbol, voidsymbol ] };
+ key <AD07> { [ 0x100099C, 0x100099D, voidsymbol, voidsymbol ] };
+ key <AD08> { [ 0x10009B9, 0x100099E, 0x10009BD, voidsymbol ] };
+ key <AD09> { [ 0x1000997, 0x1000998, voidsymbol, voidsymbol ] };
+ key <AD10> { [ 0x10009DC, 0x10009DD, voidsymbol, voidsymbol ] };
+ key <AD11> { [ bracketleft, braceleft, voidsymbol, voidsymbol ] };
+ key <AD12> { [ bracketright, braceright, voidsymbol, voidsymbol ] };
+ key <RTRN> { [ Return ] };
+
+// caps, a to '
+// key <CAPS> { [ Caps_Lock ] };
+ key <AC01> { [ 0x10009C3, 0x10009D7, 0x100098B, 0x10009E0 ] };
+ key <AC02> { [ 0x10009C1, 0x10009C2, 0x1000989, 0x100098A ] };
+ key <AC03> { [ 0x10009BF, 0x10009C0, 0x1000987, 0x1000988 ] };
+ key <AC04> { [ 0x10009AC, 0x10009AD, 0x10009F0, 0x10009F1 ] };
+ key <AC05> { [ 0x10009CD, 0x1000964, 0x1000965, voidsymbol ] };
+ key <AC06> { [ 0x10009BE, 0x1000985, 0x1000986, voidsymbol ] };
+ key <AC07> { [ 0x1000995, 0x1000996, 0x10009BB, voidsymbol ] };
+ key <AC08> { [ 0x10009A4, 0x10009A5, 0x10009CE, voidsymbol ] };
+ key <AC09> { [ 0x10009A6, 0x10009A7, 0x100098C, 0x10009E1 ] };
+ key <AC10> { [ semicolon, colon, voidsymbol, voidsymbol ] };
+ key <AC11> { [ quoteright, quotedbl, voidsymbol, voidsymbol ] };
+
+// shift, z to /
+// key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ 0x1000981, 0x1000983, 0x10009FA, voidsymbol ] };
+ key <AB02> { [ 0x10009CB, 0x10009CC, 0x1000993, 0x1000994 ] };
+ key <AB03> { [ 0x10009C7, 0x10009C8, 0x100098F, 0x1000990 ] };
+ key <AB04> { [ 0x10009B0, 0x10009B2, voidsymbol, voidsymbol ] };
+ key <AB05> { [ 0x10009A8, 0x10009A3, voidsymbol, voidsymbol ] };
+ key <AB06> { [ 0x10009B8, 0x10009B7, voidsymbol, voidsymbol ] };
+ key <AB07> { [ 0x10009AE, 0x10009B6, voidsymbol, voidsymbol ] };
+ key <AB08> { [ comma, less, voidsymbol, voidsymbol ] };
+ key <AB09> { [ period, greater, 0x10009BC, voidsymbol ] };
+ key <AB10> { [ slash, question, voidsymbol, voidsymbol ] };
+ key <BKSL> { [ backslash, bar, voidsymbol, voidsymbol ] };
+
+// third level with right-Alt
+ include "level3(ralt_switch)"
+
+};
+
+
+//
+// XKB symbol :: Probhat Bangla/Bengali Keyboard Layout
+// Ref: www.ankurbangla.org/images/probhat_layout.png
+//
+
+xkb_symbols "probhat" {
+ include "in(ben_probhat)"
+ name[Group1]= "Bangladesh - Probhat";
+};
diff --git a/xorg-server/xkeyboard-config/symbols/be b/xorg-server/xkeyboard-config/symbols/be
index 040f1b42e..8e096e24c 100644
--- a/xorg-server/xkeyboard-config/symbols/be
+++ b/xorg-server/xkeyboard-config/symbols/be
@@ -1,8 +1,4 @@
-// $XKeyboardConfig$
-
// based on a keyboard map from an 'xkb/symbols/be' file
-//
-// $XFree86: xc/programs/xkbcomp/symbols/be,v 1.3 2003/04/12 10:53:48 pascal Exp $
partial default alphanumeric_keys
xkb_symbols "basic" {
diff --git a/xorg-server/xkeyboard-config/symbols/bg b/xorg-server/xkeyboard-config/symbols/bg
index d10204e8e..d1e6a6356 100644
--- a/xorg-server/xkeyboard-config/symbols/bg
+++ b/xorg-server/xkeyboard-config/symbols/bg
@@ -1,362 +1,361 @@
-//////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1999, 2000, 2007, 2009 by Anton Zinoviev <anton@lml.bas.bg>
-//
-// This software may be used, modified, copied, distributed, and sold,
-// both in source and binary form provided that the above copyright
-// notice and these terms are retained. The name of the author may not
-// be used to endorse or promote products derived from this software
-// without prior permission. THIS SOFTWARE IS PROVIDES "AS IS" AND
-// ANY EXPRESS OR IMPLIED WARRANTIES ARE DISCLAIMED. IN NO EVENT
-// SHALL THE AUTHOR BE LIABLE FOR ANY DAMAGES ARISING IN ANY WAY OUT
-// OF THE USE OF THIS SOFTWARE.
-//
-//////////////////////////////////////////////////////////////////////////
-// Version 2.0
-
-// The following variants are defined in this file:
-
-// "bds" - the BDS keyboard layout compliant with the proposed
-// Bulgarian state standard BDS 5237:2006
-
-// "phonetic" - Bulgarian phonetic layout with traditional position of
-// the letters.
-
-// "bas_phonetic" - the phonetic keyboard layout compliant with the
-// proposed Bulgarian state standard BDS 5237:2006
-
-// "latin" - an extended variant of the QWERTY layout with symbols
-// Bulgarian users will type while the keyboard is in Latin mode.
-
-// The reasons behind the layout of the symbols in levels 3 and 4 are
-// explained in http://arxiv.org/abs/0905.0484 (in Bulgarian).
-
-// Two notes for the maintainers of xkeyboard-config:
-
-// 1. Please do not use key names such as <LatQ> for the Bulgarian
-// phonetic layouts. The placement of the symbols must stay always
-// the same regardless of which one of the alias sets in
-// xkb/keycodes/aliases is used.
-
-// 2. The layouts should not include level3(ralt_switch).
-
-//////////////////////////////////////////////////////////////////////////
-
-// Describes Bulgarian keyboard "BDS" modified according to the
-// the new state standard BDS 5237:2006 and extended with symbols in
-// levels 3 and 4.
-partial default alphanumeric_keys
-xkb_symbols "bds" {
-
- name[Group1]= "Bulgaria";
-
- key <TLDE> { [ parenleft, parenright,
- bracketleft, bracketright ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, question ] };
- key <AE03> { [ 3, plus,
- dagger, dagger ] };
- key <AE04> { [ 4, quotedbl ] };
- key <AE05> { [ 5, percent,
- U2329, U232A ] };
- key <AE06> { [ 6, equal,
- emdash, emdash ] };
- key <AE07> { [ 7, colon,
- ellipsis, ellipsis ] };
- key <AE08> { [ 8, slash,
- U0300, U0301 ] };
- key <AE09> { [ 9, endash ] };
- key <AE10> { [ 0, numerosign ] };
- key <AE11> { [ minus, dollar,
- U2011, EuroSign ] };
- key <AE12> { [ period, EuroSign ] };
-
-
- key <AD01> { [ comma, Cyrillic_yeru,
- rightsinglequotemark, leftsinglequotemark ] };
- key <AD02> { [ Cyrillic_u, Cyrillic_U ] };
- key <AD03> { [ Cyrillic_ie, Cyrillic_IE,
- Cyrillic_e, Cyrillic_E ] };
- key <AD04> { [ Cyrillic_i, Cyrillic_I,
- U045D, U040D ] };
- key <AD05> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AD06> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <AD07> { [ Cyrillic_ka, Cyrillic_KA,
- copyright, copyright ] };
- key <AD08> { [ Cyrillic_es, Cyrillic_ES,
- copyright, copyright ] };
- key <AD09> { [ Cyrillic_de, Cyrillic_DE ] };
- key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <AD11> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <AD12> { [ semicolon, section ] };
-
-
- key <AC01> { [ Cyrillic_softsign, U045D,
- Cyrillic_yeru, Cyrillic_YERU ] };
- key <AC02> { [ Cyrillic_ya, Cyrillic_YA,
- U0463, U0462 ] };
- key <AC03> { [ Cyrillic_a, Cyrillic_A ] };
- key <AC04> { [ Cyrillic_o, Cyrillic_O ] };
- key <AC05> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <AC06> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <AC07> { [ Cyrillic_te, Cyrillic_TE,
- trademark, trademark ] };
- key <AC08> { [ Cyrillic_en, Cyrillic_EN ] };
- key <AC09> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <AC10> { [ Cyrillic_em, Cyrillic_EM ] };
- key <AC11> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <BKSL> { [ doublelowquotemark, leftdoublequotemark,
- guillemotleft, guillemotright ] };
-
-
- key <LSGT> { [ U045D, U040D ] };
- key <AB01> { [ Cyrillic_yu, Cyrillic_YU ] };
- key <AB02> { [ Cyrillic_shorti, Cyrillic_SHORTI,
- U046D, U046C ] };
- key <AB03> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN,
- U046B, U046A ] };
- key <AB04> { [ Cyrillic_e, Cyrillic_E ] };
- key <AB05> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <AB06> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <AB07> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <AB08> { [ Cyrillic_er, Cyrillic_ER,
- registered, registered ] };
- key <AB09> { [ Cyrillic_el, Cyrillic_EL ] };
- key <AB10> { [ Cyrillic_be, Cyrillic_BE ] };
-
-
- key <SPCE> { [ space, space,
- nobreakspace, nobreakspace ] };
-
-
- key <KPDL> { type[Group1] = "KEYPAD",
- [ KP_Delete, KP_Separator ] };
-};
-
-// This is improved variant of the traditional Bulgarian phonetic
-// keyboard. Some unnecessary symbols in levels 1 and 2 are replaced
-// by more useful (the same way as in "bas_phonetic") and additional
-// symbols in levels 3 and 4 are added.
-partial alphanumeric_keys
-xkb_symbols "phonetic" {
- name[Group1]= "Bulgaria - Traditional phonetic";
-
- key <TLDE> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, numerosign ] };
- key <AE04> { [ 4, dollar,
- EuroSign, EuroSign ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, EuroSign ] };
- key <AE07> { [ 7, section ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft,
- bracketleft, U2329 ] };
- key <AE10> { [ 0, parenright,
- bracketright, U232A ] };
- key <AE11> { [ minus, endash,
- U2011, U2011 ] };
- key <AE12> { [ equal, plus,
- emdash, dagger ] };
-
- key <AD01> { [ Cyrillic_ya, Cyrillic_YA,
- U0463, U0462 ] };
- key <AD02> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <AD03> { [ Cyrillic_ie, Cyrillic_IE,
- Cyrillic_e, Cyrillic_E ] };
- key <AD04> { [ Cyrillic_er, Cyrillic_ER,
- registered, registered ] };
- key <AD05> { [ Cyrillic_te, Cyrillic_TE,
- trademark, trademark ] };
- key <AD06> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN,
- U046B, U046A ] };
- key <AD07> { [ Cyrillic_u, Cyrillic_U ] };
- key <AD08> { [ Cyrillic_i, Cyrillic_I,
- U045D, U040D ] };
- key <AD09> { [ Cyrillic_o, Cyrillic_O ] };
- key <AD10> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
-
-
- key <AC01> { [ Cyrillic_a, Cyrillic_A ] };
- key <AC02> { [ Cyrillic_es, Cyrillic_ES,
- copyright, copyright ] };
- key <AC03> { [ Cyrillic_de, Cyrillic_DE ] };
- key <AC04> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <AC05> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <AC06> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <AC07> { [ Cyrillic_shorti, Cyrillic_SHORTI,
- U046D, U046C ] };
- key <AC08> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <AC09> { [ Cyrillic_el, Cyrillic_EL ] };
- key <AC10> { [ semicolon, colon,
- ellipsis, ellipsis ] };
- key <AC11> { [ apostrophe, quotedbl,
- rightsinglequotemark, leftsinglequotemark ] };
- key <BKSL> { [ Cyrillic_yu, Cyrillic_YU ] };
-
-
- key <LSGT> { [ U045D, U040D ] };
- key <AB01> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <AB02> { [ Cyrillic_softsign, U045D,
- Cyrillic_yeru, Cyrillic_YERU ] };
- key <AB03> { [ Cyrillic_tse, Cyrillic_TSE,
- copyright, copyright ] };
- key <AB04> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <AB05> { [ Cyrillic_be, Cyrillic_BE ] };
- key <AB06> { [ Cyrillic_en, Cyrillic_EN ] };
- key <AB07> { [ Cyrillic_em, Cyrillic_EM ] };
- key <AB08> { [ comma, doublelowquotemark,
- guillemotleft, guillemotleft ] };
- key <AB09> { [ period, leftdoublequotemark,
- guillemotright, guillemotright ] };
- key <AB10> { [ slash, question,
- U0300, U0301 ] };
-
-
- key <SPCE> { [ space, space,
- nobreakspace, nobreakspace ] };
-
-
- key <KPDL> { type[Group1] = "KEYPAD",
- [ KP_Delete, KP_Separator ] };
-
-};
-
-// This is the Bulgarian phonetic keyboard acording to the proposed
-// state standard BDS 5237:2006 with additional symbols in
-// levels 3 and 4.
-partial alphanumeric_keys
-xkb_symbols "bas_phonetic" {
- include "bg(phonetic)"
- name[Group1]= "Bulgaria - New phonetic";
-
- key <TLDE> { [ Cyrillic_yu, Cyrillic_YU ] };
- key <AD01> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AD02> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AD11> { [ Cyrillic_ya, Cyrillic_YA,
- U0463, U0462 ] };
- key <BKSL> { [ Cyrillic_softsign, U045D,
- Cyrillic_yeru, Cyrillic_YERU ] };
- key <AB02> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <AB04> { [ Cyrillic_ve, Cyrillic_VE ] };
-};
-
-
-// This is extended variant of the standard Latin QWERTY layout with
-// additional symbols in levels 3 and 4.
-partial hidden alphanumeric_keys
-xkb_symbols "latin" {
-
- key <TLDE> { [ grave, asciitilde,
- U2248, U2245 ] };
- key <AE01> { [ 1, exclam,
- notsign, notsign ] };
- key <AE02> { [ 2, at,
- twosuperior, enfilledcircbullet ] };
- key <AE03> { [ 3, numbersign,
- threesuperior, notequal ] };
- key <AE04> { [ 4, dollar,
- EuroSign, sterling ] };
- key <AE05> { [ 5, percent,
- U2030, U2030 ] };
- key <AE06> { [ 6, asciicircum,
- logicaland, logicalor ] };
- key <AE07> { [ 7, ampersand,
- section, section ] };
- key <AE08> { [ 8, asterisk,
- infinity, multiply ] };
- key <AE09> { [ 9, parenleft,
- U2202, nabla ] };
- key <AE10> { [ 0, parenright,
- U2300, U2300 ] };
- key <AE11> { [ minus, underscore,
- U2011, endash ] };
- key <AE12> { [ equal, plus,
- emdash, plusminus ] };
-
-
- key <AD01> { [ q, Q,
- Greek_THETA, Greek_theta ] };
- key <AD02> { [ w, W,
- Greek_OMEGA, Greek_omega ] };
- key <AD03> { [ e, E,
- U2203, Greek_epsilon ] };
- key <AD04> { [ r, R,
- registered, Greek_rho ] };
- key <AD05> { [ t, T,
- trademark, Greek_tau ] };
- key <AD06> { [ y, Y,
- yen, Greek_upsilon ] };
- key <AD07> { [ u, U,
- intersection, union ] };
- key <AD08> { [ i, I,
- integral, Greek_iota ] };
- key <AD09> { [ o, O,
- degree, U222E ] };
- key <AD10> { [ p, P,
- Greek_PI, Greek_pi ] };
- key <AD11> { [ bracketleft, braceleft,
- U2286, includedin ] };
- key <AD12> { [ bracketright, braceright,
- U2208, U2209 ] };
-
-
- key <AC01> { [ a, A,
- U2200, Greek_alpha ] };
- key <AC02> { [ s, S,
- Greek_SIGMA, Greek_sigma ] };
- key <AC03> { [ d, D,
- Greek_DELTA, Greek_delta ] };
- key <AC04> { [ f, F,
- Greek_PHI, Greek_phi ] };
- key <AC05> { [ g, G,
- Greek_GAMMA, Greek_gamma ] };
- key <AC06> { [ h, H,
- U2225, Greek_eta ] };
- key <AC07> { [ j, J ] };
- key <AC08> { [ k, K,
- U03F0, Greek_kappa ] };
- key <AC09> { [ l, L,
- Greek_LAMBDA, Greek_lambda ] };
- key <AC10> { [ semicolon, colon,
- division, division ] };
- key <AC11> { [ apostrophe, quotedbl,
- leftdoublequotemark, rightdoublequotemark ] };
- key <BKSL> { [ backslash, bar,
- identical, downtack ] };
-
-
- key <LSGT> { [ less, greater,
- U2266, U2267 ] };
- key <AB01> { [ z, Z,
- U2220, Greek_zeta ] };
- key <AB02> { [ x, X,
- Greek_XI, Greek_xi ] };
- key <AB03> { [ c, C,
- copyright, Greek_chi ] };
- key <AB04> { [ v, V,
- Greek_PSI, Greek_psi ] };
- key <AB05> { [ b, B,
- U03D1, Greek_beta ] };
- key <AB06> { [ n, N,
- U207F, Greek_nu ] };
- key <AB07> { [ m, M,
- Greek_mu, Greek_mu ] };
- key <AB08> { [ comma, less,
- U2266, U21D4 ] };
- key <AB09> { [ period, greater,
- U2267, U21D2 ] };
- key <AB10> { [ slash, question,
- leftsinglequotemark, rightsinglequotemark ] };
-
-
- key <SPCE> { [ space, space,
- nobreakspace, nobreakspace ] };
-
-
- key <KPDL> { type[Group1] = "KEYPAD",
- [ KP_Delete, KP_Decimal ] };
-};
-
+//////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1999, 2000, 2007, 2009 by Anton Zinoviev <anton@lml.bas.bg>
+//
+// This software may be used, modified, copied, distributed, and sold,
+// both in source and binary form provided that the above copyright
+// notice and these terms are retained. The name of the author may not
+// be used to endorse or promote products derived from this software
+// without prior permission. THIS SOFTWARE IS PROVIDES "AS IS" AND
+// ANY EXPRESS OR IMPLIED WARRANTIES ARE DISCLAIMED. IN NO EVENT
+// SHALL THE AUTHOR BE LIABLE FOR ANY DAMAGES ARISING IN ANY WAY OUT
+// OF THE USE OF THIS SOFTWARE.
+//
+//////////////////////////////////////////////////////////////////////////
+// Version 2.0
+
+// The following variants are defined in this file:
+
+// "bds" - the BDS keyboard layout compliant with the proposed
+// Bulgarian state standard BDS 5237:2006
+
+// "phonetic" - Bulgarian phonetic layout with traditional position of
+// the letters.
+
+// "bas_phonetic" - the phonetic keyboard layout compliant with the
+// proposed Bulgarian state standard BDS 5237:2006
+
+// "latin" - an extended variant of the QWERTY layout with symbols
+// Bulgarian users will type while the keyboard is in Latin mode.
+
+// The reasons behind the layout of the symbols in levels 3 and 4 are
+// explained in http://arxiv.org/abs/0905.0484 (in Bulgarian).
+
+// Two notes for the maintainers of xkeyboard-config:
+
+// 1. Please do not use key names such as <LatQ> for the Bulgarian
+// phonetic layouts. The placement of the symbols must stay always
+// the same regardless of which one of the alias sets in
+// xkb/keycodes/aliases is used.
+
+// 2. The layouts should not include level3(ralt_switch).
+
+//////////////////////////////////////////////////////////////////////////
+
+// Describes Bulgarian keyboard "BDS" modified according to the
+// the new state standard BDS 5237:2006 and extended with symbols in
+// levels 3 and 4.
+partial default alphanumeric_keys
+xkb_symbols "bds" {
+
+ name[Group1]= "Bulgaria";
+
+ key <TLDE> { [ parenleft, parenright,
+ bracketleft, bracketright ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, question ] };
+ key <AE03> { [ 3, plus,
+ dagger, dagger ] };
+ key <AE04> { [ 4, quotedbl ] };
+ key <AE05> { [ 5, percent,
+ U2329, U232A ] };
+ key <AE06> { [ 6, equal,
+ emdash, emdash ] };
+ key <AE07> { [ 7, colon,
+ ellipsis, ellipsis ] };
+ key <AE08> { [ 8, slash,
+ U0300, U0301 ] };
+ key <AE09> { [ 9, endash ] };
+ key <AE10> { [ 0, numerosign ] };
+ key <AE11> { [ minus, dollar,
+ U2011, EuroSign ] };
+ key <AE12> { [ period, EuroSign ] };
+
+
+ key <AD01> { [ comma, Cyrillic_yeru,
+ rightsinglequotemark, leftsinglequotemark ] };
+ key <AD02> { [ Cyrillic_u, Cyrillic_U ] };
+ key <AD03> { [ Cyrillic_ie, Cyrillic_IE,
+ Cyrillic_e, Cyrillic_E ] };
+ key <AD04> { [ Cyrillic_i, Cyrillic_I,
+ U045D, U040D ] };
+ key <AD05> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD06> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <AD07> { [ Cyrillic_ka, Cyrillic_KA,
+ copyright, copyright ] };
+ key <AD08> { [ Cyrillic_es, Cyrillic_ES,
+ copyright, copyright ] };
+ key <AD09> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <AD11> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AD12> { [ semicolon, section ] };
+
+
+ key <AC01> { [ Cyrillic_softsign, U045D,
+ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <AC02> { [ Cyrillic_ya, Cyrillic_YA,
+ U0463, U0462 ] };
+ key <AC03> { [ Cyrillic_a, Cyrillic_A ] };
+ key <AC04> { [ Cyrillic_o, Cyrillic_O ] };
+ key <AC05> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AC06> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <AC07> { [ Cyrillic_te, Cyrillic_TE,
+ trademark, trademark ] };
+ key <AC08> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <AC09> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <AC10> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <AC11> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <BKSL> { [ doublelowquotemark, leftdoublequotemark,
+ guillemotleft, guillemotright ] };
+
+
+ key <LSGT> { [ U045D, U040D ] };
+ key <AB01> { [ Cyrillic_yu, Cyrillic_YU ] };
+ key <AB02> { [ Cyrillic_shorti, Cyrillic_SHORTI,
+ U046D, U046C ] };
+ key <AB03> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN,
+ U046B, U046A ] };
+ key <AB04> { [ Cyrillic_e, Cyrillic_E ] };
+ key <AB05> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <AB06> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <AB07> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <AB08> { [ Cyrillic_er, Cyrillic_ER,
+ registered, registered ] };
+ key <AB09> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <AB10> { [ Cyrillic_be, Cyrillic_BE ] };
+
+
+ key <SPCE> { [ space, space,
+ nobreakspace, nobreakspace ] };
+
+
+ key <KPDL> { type[Group1] = "KEYPAD",
+ [ KP_Delete, KP_Separator ] };
+};
+
+// This is improved variant of the traditional Bulgarian phonetic
+// keyboard. Some unnecessary symbols in levels 1 and 2 are replaced
+// by more useful (the same way as in "bas_phonetic") and additional
+// symbols in levels 3 and 4 are added.
+partial alphanumeric_keys
+xkb_symbols "phonetic" {
+ name[Group1]= "Bulgaria - Traditional phonetic";
+
+ key <TLDE> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numerosign ] };
+ key <AE04> { [ 4, dollar,
+ EuroSign, EuroSign ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, EuroSign ] };
+ key <AE07> { [ 7, section ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft,
+ bracketleft, U2329 ] };
+ key <AE10> { [ 0, parenright,
+ bracketright, U232A ] };
+ key <AE11> { [ minus, endash,
+ U2011, U2011 ] };
+ key <AE12> { [ equal, plus,
+ emdash, dagger ] };
+
+ key <AD01> { [ Cyrillic_ya, Cyrillic_YA,
+ U0463, U0462 ] };
+ key <AD02> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <AD03> { [ Cyrillic_ie, Cyrillic_IE,
+ Cyrillic_e, Cyrillic_E ] };
+ key <AD04> { [ Cyrillic_er, Cyrillic_ER,
+ registered, registered ] };
+ key <AD05> { [ Cyrillic_te, Cyrillic_TE,
+ trademark, trademark ] };
+ key <AD06> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN,
+ U046B, U046A ] };
+ key <AD07> { [ Cyrillic_u, Cyrillic_U ] };
+ key <AD08> { [ Cyrillic_i, Cyrillic_I,
+ U045D, U040D ] };
+ key <AD09> { [ Cyrillic_o, Cyrillic_O ] };
+ key <AD10> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+
+
+ key <AC01> { [ Cyrillic_a, Cyrillic_A ] };
+ key <AC02> { [ Cyrillic_es, Cyrillic_ES,
+ copyright, copyright ] };
+ key <AC03> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <AC04> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <AC05> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <AC06> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <AC07> { [ Cyrillic_shorti, Cyrillic_SHORTI,
+ U046D, U046C ] };
+ key <AC08> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <AC09> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <AC10> { [ semicolon, colon,
+ ellipsis, ellipsis ] };
+ key <AC11> { [ apostrophe, quotedbl,
+ rightsinglequotemark, leftsinglequotemark ] };
+ key <BKSL> { [ Cyrillic_yu, Cyrillic_YU ] };
+
+
+ key <LSGT> { [ U045D, U040D ] };
+ key <AB01> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <AB02> { [ Cyrillic_softsign, U045D,
+ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <AB03> { [ Cyrillic_tse, Cyrillic_TSE,
+ copyright, copyright ] };
+ key <AB04> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AB05> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <AB06> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <AB07> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <AB08> { [ comma, doublelowquotemark,
+ guillemotleft, guillemotleft ] };
+ key <AB09> { [ period, leftdoublequotemark,
+ guillemotright, guillemotright ] };
+ key <AB10> { [ slash, question,
+ U0300, U0301 ] };
+
+
+ key <SPCE> { [ space, space,
+ nobreakspace, nobreakspace ] };
+
+
+ key <KPDL> { type[Group1] = "KEYPAD",
+ [ KP_Delete, KP_Separator ] };
+
+};
+
+// This is the Bulgarian phonetic keyboard acording to the proposed
+// state standard BDS 5237:2006 with additional symbols in
+// levels 3 and 4.
+partial alphanumeric_keys
+xkb_symbols "bas_phonetic" {
+ include "bg(phonetic)"
+ name[Group1]= "Bulgaria - New phonetic";
+
+ key <TLDE> { [ Cyrillic_yu, Cyrillic_YU ] };
+ key <AD01> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AD02> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD11> { [ Cyrillic_ya, Cyrillic_YA,
+ U0463, U0462 ] };
+ key <BKSL> { [ Cyrillic_softsign, U045D,
+ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <AB02> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AB04> { [ Cyrillic_ve, Cyrillic_VE ] };
+};
+
+
+// This is extended variant of the standard Latin QWERTY layout with
+// additional symbols in levels 3 and 4.
+partial hidden alphanumeric_keys
+xkb_symbols "latin" {
+
+ key <TLDE> { [ grave, asciitilde,
+ U2248, U2245 ] };
+ key <AE01> { [ 1, exclam,
+ notsign, notsign ] };
+ key <AE02> { [ 2, at,
+ twosuperior, enfilledcircbullet ] };
+ key <AE03> { [ 3, numbersign,
+ threesuperior, notequal ] };
+ key <AE04> { [ 4, dollar,
+ EuroSign, sterling ] };
+ key <AE05> { [ 5, percent,
+ U2030, U2030 ] };
+ key <AE06> { [ 6, asciicircum,
+ logicaland, logicalor ] };
+ key <AE07> { [ 7, ampersand,
+ section, section ] };
+ key <AE08> { [ 8, asterisk,
+ infinity, multiply ] };
+ key <AE09> { [ 9, parenleft,
+ U2202, nabla ] };
+ key <AE10> { [ 0, parenright,
+ U2300, U2300 ] };
+ key <AE11> { [ minus, underscore,
+ U2011, endash ] };
+ key <AE12> { [ equal, plus,
+ emdash, plusminus ] };
+
+
+ key <AD01> { [ q, Q,
+ Greek_THETA, Greek_theta ] };
+ key <AD02> { [ w, W,
+ Greek_OMEGA, Greek_omega ] };
+ key <AD03> { [ e, E,
+ U2203, Greek_epsilon ] };
+ key <AD04> { [ r, R,
+ registered, Greek_rho ] };
+ key <AD05> { [ t, T,
+ trademark, Greek_tau ] };
+ key <AD06> { [ y, Y,
+ yen, Greek_upsilon ] };
+ key <AD07> { [ u, U,
+ intersection, union ] };
+ key <AD08> { [ i, I,
+ integral, Greek_iota ] };
+ key <AD09> { [ o, O,
+ degree, U222E ] };
+ key <AD10> { [ p, P,
+ Greek_PI, Greek_pi ] };
+ key <AD11> { [ bracketleft, braceleft,
+ U2286, includedin ] };
+ key <AD12> { [ bracketright, braceright,
+ U2208, U2209 ] };
+
+
+ key <AC01> { [ a, A,
+ U2200, Greek_alpha ] };
+ key <AC02> { [ s, S,
+ Greek_SIGMA, Greek_sigma ] };
+ key <AC03> { [ d, D,
+ Greek_DELTA, Greek_delta ] };
+ key <AC04> { [ f, F,
+ Greek_PHI, Greek_phi ] };
+ key <AC05> { [ g, G,
+ Greek_GAMMA, Greek_gamma ] };
+ key <AC06> { [ h, H,
+ U2225, Greek_eta ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K,
+ U03F0, Greek_kappa ] };
+ key <AC09> { [ l, L,
+ Greek_LAMBDA, Greek_lambda ] };
+ key <AC10> { [ semicolon, colon,
+ division, division ] };
+ key <AC11> { [ apostrophe, quotedbl,
+ leftdoublequotemark, rightdoublequotemark ] };
+ key <BKSL> { [ backslash, bar,
+ identical, downtack ] };
+
+
+ key <LSGT> { [ less, greater,
+ U2266, U2267 ] };
+ key <AB01> { [ z, Z,
+ U2220, Greek_zeta ] };
+ key <AB02> { [ x, X,
+ Greek_XI, Greek_xi ] };
+ key <AB03> { [ c, C,
+ copyright, Greek_chi ] };
+ key <AB04> { [ v, V,
+ Greek_PSI, Greek_psi ] };
+ key <AB05> { [ b, B,
+ U03D1, Greek_beta ] };
+ key <AB06> { [ n, N,
+ U207F, Greek_nu ] };
+ key <AB07> { [ m, M,
+ Greek_mu, Greek_mu ] };
+ key <AB08> { [ comma, less,
+ U2266, U21D4 ] };
+ key <AB09> { [ period, greater,
+ U2267, U21D2 ] };
+ key <AB10> { [ slash, question,
+ leftsinglequotemark, rightsinglequotemark ] };
+
+
+ key <SPCE> { [ space, space,
+ nobreakspace, nobreakspace ] };
+
+
+ key <KPDL> { type[Group1] = "KEYPAD",
+ [ KP_Delete, KP_Decimal ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/br b/xorg-server/xkeyboard-config/symbols/br
index f9f5cbe5e..be0cd7cc2 100644
--- a/xorg-server/xkeyboard-config/symbols/br
+++ b/xorg-server/xkeyboard-config/symbols/br
@@ -1,6 +1,3 @@
-// $XKeyboardConfig$
-// $XdotOrg: xc/programs/xkbcomp/symbols/br,v 1.1.4.3 2004/03/05 13:41:32 eich Exp $
-// $XFree86: xc/programs/xkbcomp/symbols/br,v 1.3 2003/04/19 12:22:11 pascal Exp $
//
// based on
// "a very simple Brasilian ABNT2 keyboard
diff --git a/xorg-server/xkeyboard-config/symbols/brai b/xorg-server/xkeyboard-config/symbols/brai
index e89bed24f..b748d184b 100644
--- a/xorg-server/xkeyboard-config/symbols/brai
+++ b/xorg-server/xkeyboard-config/symbols/brai
@@ -1,62 +1,59 @@
-// $XKeyboardConfig$
-
-// 10-dot patterns on the home row + v and n
-partial default alphanumeric_keys
-xkb_symbols "home_row" {
- include "brai(keypad)"
-
- name[Group1]="Braille";
-
- key <AC04> { [ braille_dot_1 ] };
- key <AC03> { [ braille_dot_2 ] };
- key <AC02> { [ braille_dot_3 ] };
- key <AC07> { [ braille_dot_4 ] };
- key <AC08> { [ braille_dot_5 ] };
- key <AC09> { [ braille_dot_6 ] };
- key <AC01> { [ braille_dot_7 ] };
- key <AC10> { [ braille_dot_8 ] };
- key <AB04> { [ braille_dot_9 ] };
- key <AB06> { [ braille_dot_10 ] };
-};
-
-// 6-dot patterns for the left hand
-partial alphanumeric_keys
-xkb_symbols "left_hand" {
- include "brai(keypad)"
-
- name[Group1]="Braille - Left hand";
-
- key <AC03> { [ braille_dot_1 ] };
- key <AC02> { [ braille_dot_2 ] };
- key <AC01> { [ braille_dot_3 ] };
- key <AC04> { [ braille_dot_4 ] };
- key <AB05> { [ braille_dot_5 ] };
- key <AB04> { [ braille_dot_6 ] };
-};
-
-// 6-dot patterns for the right hand
-partial alphanumeric_keys
-xkb_symbols "right_hand" {
- include "brai(keypad)"
-
- name[Group1]="Braille - Right hand";
-
- key <AC07> { [ braille_dot_1 ] };
- key <AB05> { [ braille_dot_2 ] };
- key <AB06> { [ braille_dot_3 ] };
- key <AC08> { [ braille_dot_4 ] };
- key <AC09> { [ braille_dot_5 ] };
- key <AC10> { [ braille_dot_6 ] };
-};
-
-// 6-dot patterns on the keypad
-partial hidden keypad_keys
-xkb_symbols "keypad" {
- key <KP4> { [ braille_dot_1 ] };
- key <KP1> { [ braille_dot_2 ] };
- key <KP0> { [ braille_dot_3 ] };
- key <KP5> { [ braille_dot_4 ] };
- key <KP6> { [ braille_dot_5 ] };
- key <KPAD> { [ braille_dot_6 ] };
-};
-
+// 10-dot patterns on the home row + v and n
+partial default alphanumeric_keys
+xkb_symbols "home_row" {
+ include "brai(keypad)"
+
+ name[Group1]="Braille";
+
+ key <AC04> { [ braille_dot_1 ] };
+ key <AC03> { [ braille_dot_2 ] };
+ key <AC02> { [ braille_dot_3 ] };
+ key <AC07> { [ braille_dot_4 ] };
+ key <AC08> { [ braille_dot_5 ] };
+ key <AC09> { [ braille_dot_6 ] };
+ key <AC01> { [ braille_dot_7 ] };
+ key <AC10> { [ braille_dot_8 ] };
+ key <AB04> { [ braille_dot_9 ] };
+ key <AB06> { [ braille_dot_10 ] };
+};
+
+// 6-dot patterns for the left hand
+partial alphanumeric_keys
+xkb_symbols "left_hand" {
+ include "brai(keypad)"
+
+ name[Group1]="Braille - Left hand";
+
+ key <AC03> { [ braille_dot_1 ] };
+ key <AC02> { [ braille_dot_2 ] };
+ key <AC01> { [ braille_dot_3 ] };
+ key <AC04> { [ braille_dot_4 ] };
+ key <AB05> { [ braille_dot_5 ] };
+ key <AB04> { [ braille_dot_6 ] };
+};
+
+// 6-dot patterns for the right hand
+partial alphanumeric_keys
+xkb_symbols "right_hand" {
+ include "brai(keypad)"
+
+ name[Group1]="Braille - Right hand";
+
+ key <AC07> { [ braille_dot_1 ] };
+ key <AB05> { [ braille_dot_2 ] };
+ key <AB06> { [ braille_dot_3 ] };
+ key <AC08> { [ braille_dot_4 ] };
+ key <AC09> { [ braille_dot_5 ] };
+ key <AC10> { [ braille_dot_6 ] };
+};
+
+// 6-dot patterns on the keypad
+partial hidden keypad_keys
+xkb_symbols "keypad" {
+ key <KP4> { [ braille_dot_1 ] };
+ key <KP1> { [ braille_dot_2 ] };
+ key <KP0> { [ braille_dot_3 ] };
+ key <KP5> { [ braille_dot_4 ] };
+ key <KP6> { [ braille_dot_5 ] };
+ key <KPAD> { [ braille_dot_6 ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/bt b/xorg-server/xkeyboard-config/symbols/bt
index d87558371..b1ac22625 100644
--- a/xorg-server/xkeyboard-config/symbols/bt
+++ b/xorg-server/xkeyboard-config/symbols/bt
@@ -1,88 +1,87 @@
-// $XKeyboardConfig$
-//
-// Dzongkha / Tibetan layout for Bhutanese keyboard
-//
-/////////////////////////////////////////////////////////////////
-//
-// Based on the official layout for Dzongkha
-// approved by the Department of Information Technology &
-// Dzongkha Development Authority of the Government of Bhutan
-//
-// Copyright (C) 2004, Gregory Mokhin <mokhin@bog.msu.ru>
-/////////////////////////////////////////////////////////////////
-// Version 0.97 2004-01-09 Layout map provided by Chris Fynn
-// Version 1.0 2004-07-29 Some correction by Pema Geyleg <pema_geyleg@druknet.bt>
-/////////////////////////////////////////////////////////////////
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
- name[Group1]= "Bhutan";
-
- key <TLDE> { [ 0x1000F09, 0x1000F0A, 0x1000F6C, 0x1000F6D ] };
-
-// numbers e.a.
- key <AE01> { [ 0x1000F21, 0x1000F04, 1, exclam ] };
- key <AE02> { [ 0x1000F22, 0x1000F05, 2, at ] };
- key <AE03> { [ 0x1000F23, 0x1000F06, 3, numbersign ] };
- key <AE04> { [ 0x1000F24, 0x1000F48, 4, dollar ] };
- key <AE05> { [ 0x1000F25, 0x1000F70, 5, percent ] };
- key <AE06> { [ 0x1000F26, 0x1000F08, 6, 0x1000F01 ] };
- key <AE07> { [ 0x1000F27, 0x1000F38, 7, ampersand ] };
- key <AE08> { [ 0x1000F28, 0x1000F34, 8, asterisk ] };
- key <AE09> { [ 0x1000F29, 0x1000F3C, 9, parenleft ] };
- key <AE10> { [ 0x1000F20, 0x1000F3D, 0, parenright ] };
- key <AE11> { [ 0x1000F14, 0x1000F7F, minus, underscore ] };
- key <AE12> { [ 0x1000F0D, 0x1000F11, equal, plus ] };
-
-// consonants ( ka kha ga nga )
- key <AD01> { [ 0x1000F40, 0x1000F90, 0x1000F88, VoidSymbol ] };
- key <AD02> { [ 0x1000F41, 0x1000F91, 0x1000F89, VoidSymbol ] };
- key <AD03> { [ 0x1000F42, 0x1000F92, 0x1000F6E, 0x1000F6F] };
- key <AD04> { [ 0x1000F44, 0x1000F94, 0x1000F83, 0x1000F82 ] };
-
-// vowels ( i u e o )
- key <AD05> { [ 0x1000F72, 0x1000F80, 0x1000F1A, VoidSymbol ] };
- key <AD06> { [ 0x1000F74, 0x1000F84, 0x1000F1B, VoidSymbol ] };
- key <AD07> { [ 0x1000F7A, 0x1000F7B, 0x1000F1C, VoidSymbol ] };
- key <AD08> { [ 0x1000F7C, 0x1000F7D, 0x1000F1D, 0x1000F17 ] };
-
-// consonants ( ca cha ja nya )
- key <AD09> { [ 0x1000F45, 0x1000F95, 0x1000F1E, 0x1000F18 ] };
- key <AD10> { [ 0x1000F46, 0x1000F96, 0x1000F1F, 0x1000F19 ] };
- key <AD11> { [ 0x1000F47, 0x1000F97, bracketleft, 0x1000F3E ] };
- key <AD12> { [ 0x1000F49, 0x1000F99, bracketright, 0x1000F3F ] };
-
-// consonants ( ta tha da na pa pha ba ma tsa tsha dza wa )
- key <AC01> { [ 0x1000F4F, 0x1000F9F, 0x1000F4A, 0x1000F9A ] };
- key <AC02> { [ 0x1000F50, 0x1000FA0, 0x1000F4B, 0x1000F9B ] };
- key <AC03> { [ 0x1000F51, 0x1000FA1, 0x1000F4C, 0x1000F9C ] };
- key <AC04> { [ 0x1000F53, 0x1000FA3, 0x1000F4E, 0x1000F9E ] };
- key <AC05> { [ 0x1000F54, 0x1000FA4, 0x1002039, guillemotleft ] };
- key <AC06> { [ 0x1000F55, 0x1000FA5, 0x100203A, guillemotright ] };
- key <AC07> { [ 0x1000F56, 0x1000FA6, 0x1000F37, 0x1000F35 ] };
- key <AC08> { [ 0x1000F58, 0x1000FA8, 0x1000F7E, VoidSymbol ] };
- key <AC09> { [ 0x1000F59, 0x1000FA9, 0x1000F39, VoidSymbol ] };
- key <AC10> { [ 0x1000F5A, 0x1000FAA, colon, semicolon ] };
- key <AC11> { [ 0x1000F5B, 0x1000FAB, apostrophe, quotedbl ] };
-
-// TODO: BKSL and LSGT are from gb layout, are there any variants?
- key <BKSL> { [ 0x1000F5D, 0x1000FAD, backslash, 0x1000FBA ] };
- key <LSGT> { [ 0x1000F0D, 0x1000F11, 0x1000F10, 0x1000F0F ] };
-
-// consonants ( zha za 'a ya ra la sha sa ha a )
- key <AB01> { [ 0x1000F5E, 0x1000FAE, 0x1000F13, 0x1000F36 ] };
- key <AB02> { [ 0x1000F5F, 0x1000FAF, 0x1000FBE, 0x1000FBF ] };
- key <AB03> { [ 0x1000F60, 0x1000F71, 0x1000F03, 0x1000FB0 ] };
- key <AB04> { [ 0x1000F61, 0x1000FB1, 0x1000F12, 0x1000FBB ] };
- key <AB05> { [ 0x1000F62, 0x1000FB2, 0x1000F6A, 0x1000FBC ] };
- key <AB06> { [ 0x1000F63, 0x1000FB3, 0x1000F8A, 0x1000F8B ] };
- key <AB07> { [ 0x1000F64, 0x1000FB4, 0x1000F65, 0x1000FB5 ] };
- key <AB08> { [ 0x1000F66, 0x1000FB6, comma, less ] };
- key <AB09> { [ 0x1000F67, 0x1000FB7, period, greater ] };
- key <AB10> { [ 0x1000F68, 0x1000FB8, slash, question ] };
-
-// space
- key <SPCE> { [ 0x1000F0B, space, 0x1000F0C, nobreakspace ] };
-
- include "level3(ralt_switch)"
-};
+//
+// Dzongkha / Tibetan layout for Bhutanese keyboard
+//
+/////////////////////////////////////////////////////////////////
+//
+// Based on the official layout for Dzongkha
+// approved by the Department of Information Technology &
+// Dzongkha Development Authority of the Government of Bhutan
+//
+// Copyright (C) 2004, Gregory Mokhin <mokhin@bog.msu.ru>
+/////////////////////////////////////////////////////////////////
+// Version 0.97 2004-01-09 Layout map provided by Chris Fynn
+// Version 1.0 2004-07-29 Some correction by Pema Geyleg <pema_geyleg@druknet.bt>
+/////////////////////////////////////////////////////////////////
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ name[Group1]= "Bhutan";
+
+ key <TLDE> { [ 0x1000F09, 0x1000F0A, 0x1000F6C, 0x1000F6D ] };
+
+// numbers e.a.
+ key <AE01> { [ 0x1000F21, 0x1000F04, 1, exclam ] };
+ key <AE02> { [ 0x1000F22, 0x1000F05, 2, at ] };
+ key <AE03> { [ 0x1000F23, 0x1000F06, 3, numbersign ] };
+ key <AE04> { [ 0x1000F24, 0x1000F48, 4, dollar ] };
+ key <AE05> { [ 0x1000F25, 0x1000F70, 5, percent ] };
+ key <AE06> { [ 0x1000F26, 0x1000F08, 6, 0x1000F01 ] };
+ key <AE07> { [ 0x1000F27, 0x1000F38, 7, ampersand ] };
+ key <AE08> { [ 0x1000F28, 0x1000F34, 8, asterisk ] };
+ key <AE09> { [ 0x1000F29, 0x1000F3C, 9, parenleft ] };
+ key <AE10> { [ 0x1000F20, 0x1000F3D, 0, parenright ] };
+ key <AE11> { [ 0x1000F14, 0x1000F7F, minus, underscore ] };
+ key <AE12> { [ 0x1000F0D, 0x1000F11, equal, plus ] };
+
+// consonants ( ka kha ga nga )
+ key <AD01> { [ 0x1000F40, 0x1000F90, 0x1000F88, VoidSymbol ] };
+ key <AD02> { [ 0x1000F41, 0x1000F91, 0x1000F89, VoidSymbol ] };
+ key <AD03> { [ 0x1000F42, 0x1000F92, 0x1000F6E, 0x1000F6F] };
+ key <AD04> { [ 0x1000F44, 0x1000F94, 0x1000F83, 0x1000F82 ] };
+
+// vowels ( i u e o )
+ key <AD05> { [ 0x1000F72, 0x1000F80, 0x1000F1A, VoidSymbol ] };
+ key <AD06> { [ 0x1000F74, 0x1000F84, 0x1000F1B, VoidSymbol ] };
+ key <AD07> { [ 0x1000F7A, 0x1000F7B, 0x1000F1C, VoidSymbol ] };
+ key <AD08> { [ 0x1000F7C, 0x1000F7D, 0x1000F1D, 0x1000F17 ] };
+
+// consonants ( ca cha ja nya )
+ key <AD09> { [ 0x1000F45, 0x1000F95, 0x1000F1E, 0x1000F18 ] };
+ key <AD10> { [ 0x1000F46, 0x1000F96, 0x1000F1F, 0x1000F19 ] };
+ key <AD11> { [ 0x1000F47, 0x1000F97, bracketleft, 0x1000F3E ] };
+ key <AD12> { [ 0x1000F49, 0x1000F99, bracketright, 0x1000F3F ] };
+
+// consonants ( ta tha da na pa pha ba ma tsa tsha dza wa )
+ key <AC01> { [ 0x1000F4F, 0x1000F9F, 0x1000F4A, 0x1000F9A ] };
+ key <AC02> { [ 0x1000F50, 0x1000FA0, 0x1000F4B, 0x1000F9B ] };
+ key <AC03> { [ 0x1000F51, 0x1000FA1, 0x1000F4C, 0x1000F9C ] };
+ key <AC04> { [ 0x1000F53, 0x1000FA3, 0x1000F4E, 0x1000F9E ] };
+ key <AC05> { [ 0x1000F54, 0x1000FA4, 0x1002039, guillemotleft ] };
+ key <AC06> { [ 0x1000F55, 0x1000FA5, 0x100203A, guillemotright ] };
+ key <AC07> { [ 0x1000F56, 0x1000FA6, 0x1000F37, 0x1000F35 ] };
+ key <AC08> { [ 0x1000F58, 0x1000FA8, 0x1000F7E, VoidSymbol ] };
+ key <AC09> { [ 0x1000F59, 0x1000FA9, 0x1000F39, VoidSymbol ] };
+ key <AC10> { [ 0x1000F5A, 0x1000FAA, colon, semicolon ] };
+ key <AC11> { [ 0x1000F5B, 0x1000FAB, apostrophe, quotedbl ] };
+
+// TODO: BKSL and LSGT are from gb layout, are there any variants?
+ key <BKSL> { [ 0x1000F5D, 0x1000FAD, backslash, 0x1000FBA ] };
+ key <LSGT> { [ 0x1000F0D, 0x1000F11, 0x1000F10, 0x1000F0F ] };
+
+// consonants ( zha za 'a ya ra la sha sa ha a )
+ key <AB01> { [ 0x1000F5E, 0x1000FAE, 0x1000F13, 0x1000F36 ] };
+ key <AB02> { [ 0x1000F5F, 0x1000FAF, 0x1000FBE, 0x1000FBF ] };
+ key <AB03> { [ 0x1000F60, 0x1000F71, 0x1000F03, 0x1000FB0 ] };
+ key <AB04> { [ 0x1000F61, 0x1000FB1, 0x1000F12, 0x1000FBB ] };
+ key <AB05> { [ 0x1000F62, 0x1000FB2, 0x1000F6A, 0x1000FBC ] };
+ key <AB06> { [ 0x1000F63, 0x1000FB3, 0x1000F8A, 0x1000F8B ] };
+ key <AB07> { [ 0x1000F64, 0x1000FB4, 0x1000F65, 0x1000FB5 ] };
+ key <AB08> { [ 0x1000F66, 0x1000FB6, comma, less ] };
+ key <AB09> { [ 0x1000F67, 0x1000FB7, period, greater ] };
+ key <AB10> { [ 0x1000F68, 0x1000FB8, slash, question ] };
+
+// space
+ key <SPCE> { [ 0x1000F0B, space, 0x1000F0C, nobreakspace ] };
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/bw b/xorg-server/xkeyboard-config/symbols/bw
index ea5079e5d..9243da20f 100644
--- a/xorg-server/xkeyboard-config/symbols/bw
+++ b/xorg-server/xkeyboard-config/symbols/bw
@@ -1,19 +1,18 @@
-partial default alphanumeric_keys
-xkb_symbols "tswana" {
-
- include "us"
-
- name[Group1]= "Botswana";
-
- key <AC10> { [ semicolon, colon, 0x01000324, 0x01000324 ] }; //COMBINING DIAERESIS BELOW
- key <AC11> { [apostrophe, quotedbl, 0x01000301, 0x01000308 ] }; //COMBINING ACUTE ACCENT, COMBINING DIAERESIS
- key <TLDE> { [ grave, asciitilde, 0x01000300, 0x01000303 ] }; //COMBINING GRAVE ACCENT, COMBINING TILDE
- key <AE06> { [ 6, asciicircum, 0x01000302 ] }; //COMBINING CIRCUMFLEX ACCENT
- key <AE08> { [ 8, asterisk, 0x01000307, 0x01000323 ] }; //COMBINING DOT ABOVE, COMBINING DOT BELOW
- key <AE09> { [ 9, parenleft, 0x01000306 ] }; //COMBINING BREVE
- key <AE10> { [ 0, parenright, 0x0100030c ] }; //COMBINING CARON
- key <AE11> { [ minus, underscore, 0x01000304, 0x01000331 ] }; //COMBINING MACRON,COMBINING MACRON BELOW
-
- include "level3(ralt_switch)"
-};
-
+partial default alphanumeric_keys
+xkb_symbols "tswana" {
+
+ include "us"
+
+ name[Group1]= "Botswana";
+
+ key <AC10> { [ semicolon, colon, 0x01000324, 0x01000324 ] }; //COMBINING DIAERESIS BELOW
+ key <AC11> { [apostrophe, quotedbl, 0x01000301, 0x01000308 ] }; //COMBINING ACUTE ACCENT, COMBINING DIAERESIS
+ key <TLDE> { [ grave, asciitilde, 0x01000300, 0x01000303 ] }; //COMBINING GRAVE ACCENT, COMBINING TILDE
+ key <AE06> { [ 6, asciicircum, 0x01000302 ] }; //COMBINING CIRCUMFLEX ACCENT
+ key <AE08> { [ 8, asterisk, 0x01000307, 0x01000323 ] }; //COMBINING DOT ABOVE, COMBINING DOT BELOW
+ key <AE09> { [ 9, parenleft, 0x01000306 ] }; //COMBINING BREVE
+ key <AE10> { [ 0, parenright, 0x0100030c ] }; //COMBINING CARON
+ key <AE11> { [ minus, underscore, 0x01000304, 0x01000331 ] }; //COMBINING MACRON,COMBINING MACRON BELOW
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/by b/xorg-server/xkeyboard-config/symbols/by
index 4409e52dd..2c16f9e7a 100644
--- a/xorg-server/xkeyboard-config/symbols/by
+++ b/xorg-server/xkeyboard-config/symbols/by
@@ -1,56 +1,51 @@
-// $XKeyboardConfig$
-
-// based on
-// belarusian standard keyboard
-// Alexander Mikhailian <mikhailian@altern.org>
-// Reworked to use winkeys by default and russian keymap as base by Paul Lubetsky <vegeek@gmail.com>
-// Added third level with russian symbols
-// See freedesktop.org bug #23604
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
- include "ru(winkeys)"
- name[Group1]= "Belarus";
-
- key <AD09> { [ Byelorussian_shortu, Byelorussian_SHORTU ] };
- key <AD12> { [ apostrophe, apostrophe ] };
- key <AB05> { [ Ukrainian_i, Ukrainian_I ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "legacy" {
- include "by(basic)"
- name[Group1]= "Belarus - Legacy";
-
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, asterisk ] };
- key <AE05> { [ 5, colon ] };
- key <AE06> { [ 6, comma ] };
- key <AE07> { [ 7, period ] };
- key <AE08> { [ 8, semicolon ] };
- key <AB10> { [ slash, question ] };
- key <BKSL> { [ backslash, bar ] };
-};
-
-// based on a keyboard map from an 'xkb/symbols/iso3335-3' file
-//
-// $XFree86: xc/programs/xkbcomp/symbols/pc/en_US,v 1.3 2003/01/26 02:01:48 dawes Exp $
-
-partial alphanumeric_keys
-xkb_symbols "latin" {
- include "latin"
- name[Group1]= "Belarus - Latin";
-
- key <AD02> { [ w, W, scaron, Scaron ] };
- key <AD07> { [ u, U, ubreve, Ubreve ] };
- key <AC02> { [ s, S, sacute, Sacute ] };
- key <AC09> { [ l, L, lstroke, Lstroke ] };
- key <AB01> { [ z, Z, zacute, Zacute ] };
- key <AB02> { [ x, X, zcaron, Zcaron ] };
- key <AB03> { [ c, C, cacute, Cacute ] };
- key <AB04> { [ v, V, ccaron, Ccaron ] };
- key <AB06> { [ n, N, nacute, Nacute ] };
-
- include "level3(ralt_switch)"
-};
-
+// based on
+// belarusian standard keyboard
+// Alexander Mikhailian <mikhailian@altern.org>
+// Reworked to use winkeys by default and russian keymap as base by Paul Lubetsky <vegeek@gmail.com>
+// Added third level with russian symbols
+// See freedesktop.org bug #23604
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ include "ru(winkeys)"
+ name[Group1]= "Belarus";
+
+ key <AD09> { [ Byelorussian_shortu, Byelorussian_SHORTU ] };
+ key <AD12> { [ apostrophe, apostrophe ] };
+ key <AB05> { [ Ukrainian_i, Ukrainian_I ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "legacy" {
+ include "by(basic)"
+ name[Group1]= "Belarus - Legacy";
+
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, asterisk ] };
+ key <AE05> { [ 5, colon ] };
+ key <AE06> { [ 6, comma ] };
+ key <AE07> { [ 7, period ] };
+ key <AE08> { [ 8, semicolon ] };
+ key <AB10> { [ slash, question ] };
+ key <BKSL> { [ backslash, bar ] };
+};
+
+// based on a keyboard map from an 'xkb/symbols/iso3335-3' file
+
+partial alphanumeric_keys
+xkb_symbols "latin" {
+ include "latin"
+ name[Group1]= "Belarus - Latin";
+
+ key <AD02> { [ w, W, scaron, Scaron ] };
+ key <AD07> { [ u, U, ubreve, Ubreve ] };
+ key <AC02> { [ s, S, sacute, Sacute ] };
+ key <AC09> { [ l, L, lstroke, Lstroke ] };
+ key <AB01> { [ z, Z, zacute, Zacute ] };
+ key <AB02> { [ x, X, zcaron, Zcaron ] };
+ key <AB03> { [ c, C, cacute, Cacute ] };
+ key <AB04> { [ v, V, ccaron, Ccaron ] };
+ key <AB06> { [ n, N, nacute, Nacute ] };
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/ca b/xorg-server/xkeyboard-config/symbols/ca
index 63f9e48e6..10427e959 100644
--- a/xorg-server/xkeyboard-config/symbols/ca
+++ b/xorg-server/xkeyboard-config/symbols/ca
@@ -1,530 +1,527 @@
-// $XKeyboardConfig$
-
-default partial
-xkb_symbols "fr" {
- name[Group1] = "Canada";
-
- key <TLDE> { [ numbersign, bar, backslash ] };
- key <AE01> { [ 1, exclam, plusminus ] };
- key <AE02> { [ 2, quotedbl, at ] };
- key <AE03> { [ 3, slash, sterling ] };
- key <AE04> { [ 4, dollar, cent ] };
- key <AE05> { [ 5, percent, currency ] };
- key <AE06> { [ 6, question, notsign ] };
- key <AE07> { [ 7, ampersand, brokenbar ] };
- key <AE08> { [ 8, asterisk, twosuperior ] };
- key <AE09> { [ 9, parenleft, threesuperior ] };
- key <AE10> { [ 0, parenright, onequarter ] };
- key <AE11> { [ minus, underscore, onehalf ] };
- key <AE12> { [ equal, plus, threequarters ] };
-
- key <AD01> { [ q, Q ] };
- key <AD02> { [ w, W ] };
- key <AD03> { [ e, E ] };
- key <AD04> { [ r, R ] };
- key <AD05> { [ t, T ] };
- key <AD06> { [ y, Y ] };
- key <AD07> { [ u, U ] };
- key <AD08> { [ i, I ] };
- key <AD09> { [ o, O, section ] };
- key <AD10> { [ p, P, paragraph ] };
- key <AD11> { [dead_circumflex, dead_circumflex, bracketleft ] };
- key <AD12> { [ dead_cedilla, dead_diaeresis, bracketright ] };
-
- key <AC01> { [ a, A ] };
- key <AC02> { [ s, S ] };
- key <AC03> { [ d, D ] };
- key <AC04> { [ f, F ] };
- key <AC05> { [ g, G ] };
- key <AC06> { [ h, H ] };
- key <AC07> { [ j, J ] };
- key <AC08> { [ k, K ] };
- key <AC09> { [ l, L ] };
- key <AC10> { [ semicolon, colon, asciitilde ] };
- key <AC11> { [dead_grave, dead_grave, braceleft ] };
- key <BKSL> { [ less, greater, braceright ] };
-
- key <LSGT> { [guillemotleft, guillemotright, degree] };
- key <AB01> { [ z, Z ] };
- key <AB02> { [ x, X ] };
- key <AB03> { [ c, C ] };
- key <AB04> { [ v, V ] };
- key <AB05> { [ b, B ] };
- key <AB06> { [ n, N ] };
- key <AB07> { [ m, M, mu ] };
- key <AB08> { [ comma, apostrophe, macron ] };
- key <AB09> { [ period, period, hyphen ] };
- key <AB10> { [ eacute, Eacute, dead_acute ] };
-
- key <SPCE> { [ space, space, nobreakspace ] };
-
- include "level3(ralt_switch)"
-};
-
-xkb_symbols "fr-dvorak" {
- name[Group1] = "Canada - French Dvorak";
-
- key <TLDE> { [ numbersign, bar, backslash ] };
- key <AE01> { [ 1, exclam, plusminus ] };
- key <AE02> { [ 2, quotedbl, at ] };
- key <AE03> { [ 3, slash, sterling ] };
- key <AE04> { [ 4, dollar, cent ] };
- key <AE05> { [ 5, percent, currency ] };
- key <AE06> { [ 6, question, notsign ] };
- key <AE07> { [ 7, ampersand, brokenbar ] };
- key <AE08> { [ 8, asterisk, twosuperior ] };
- key <AE09> { [ 9, parenleft, threesuperior ] };
- key <AE10> { [ 0, parenright, onequarter ] };
- key <AE11> { [dead_circumflex, dead_circumflex, bracketleft ] };
- key <AE12> { [ dead_cedilla, dead_diaeresis, bracketright ] };
-
- key <AD01> { [dead_grave, dead_grave, braceleft ] };
- key <AD02> { [ comma, apostrophe, macron ] };
- key <AD03> { [ period, period, hyphen ] };
- key <AD04> { [ p, P, paragraph ] };
- key <AD05> { [ y, Y ] };
- key <AD06> { [ f, F ] };
- key <AD07> { [ g, G ] };
- key <AD08> { [ c, C ] };
- key <AD09> { [ r, R ] };
- key <AD10> { [ l, L ] };
- key <AD11> { [ eacute, Eacute, dead_acute ] };
- key <AD12> { [ equal, plus, threequarters ] };
-
- key <AC01> { [ a, A ] };
- key <AC02> { [ o, O, section ] };
- key <AC03> { [ e, E ] };
- key <AC04> { [ u, U ] };
- key <AC05> { [ i, I ] };
- key <AC06> { [ d, D ] };
- key <AC07> { [ h, H ] };
- key <AC08> { [ t, T ] };
- key <AC09> { [ n, N ] };
- key <AC10> { [ s, S ] };
- key <AC11> { [ minus, underscore, onehalf ] };
- key <BKSL> { [ less, greater, braceright ] };
-
- key <LSGT> { [guillemotleft, guillemotright, degree] };
- key <AB01> { [ semicolon, colon, asciitilde ] };
- key <AB02> { [ q, Q ] };
- key <AB03> { [ j, J ] };
- key <AB04> { [ k, K ] };
- key <AB05> { [ x, X ] };
- key <AB06> { [ b, B ] };
- key <AB07> { [ m, M, mu ] };
- key <AB08> { [ w, W ] };
- key <AB09> { [ v, V ] };
- key <AB10> { [ z, Z ] };
-
- key <SPCE> { [ space, space, nobreakspace ] };
-
- include "level3(ralt_switch)"
-};
-
-partial
-xkb_symbols "fr-legacy" {
-
- name[Group1] = "Canada - French (legacy)";
-
- include "ca(fr)"
-
- key <TLDE> { [ degree, degree, notsign ] };
- key <AE01> { [ 1, exclam, onesuperior ] };
-
- key <AE03> { [ 3, numbersign, threesuperior ] };
- key <AE04> { [ 4, dollar, onequarter ] };
- key <AE05> { [ 5, percent, onehalf ] };
- key <AE06> { [ 6, question, threequarters ] };
- key <AE07> { [ 7, ampersand, braceleft ] };
- key <AE08> { [ 8, asterisk, bracketleft ] };
- key <AE09> { [ 9, parenleft, bracketright, plusminus ] };
- key <AE10> { [ 0, parenright, braceright ] };
- key <AE11> { [ minus, underscore, bar, questiondown] };
- key <AE12> { [ equal, plus, dead_cedilla ] };
-
- key <AD04> { [ r, R, paragraph, registered ] };
- key <AD06> { [ y, Y, yen ] };
- key <AD09> { [ o, O, oslash, Ooblique ] };
- key <AD10> { [ p, P, thorn, THORN ] };
- key <AD11> { [dead_circumflex, dead_circumflex, degree ] };
- key <AD12> { [ ccedilla, Ccedilla, dead_tilde, dead_diaeresis ] };
-
- key <AC01> { [ a, A, ae, AE ] };
- key <AC02> { [ s, S, ssharp, section ] };
- key <AC03> { [ d, D, eth, ETH ] };
- key <AC04> { [ f, F, ordfeminine ] };
- key <AC10> { [ semicolon, colon, dead_acute, dead_acute ] };
- key <AC11> { [ egrave, Egrave ] };
- key <BKSL> { [ agrave, Agrave, dead_grave ] };
-
- key <LSGT> { [ ugrave, Ugrave, backslash, bar ] };
- key <AB01> { [ z, Z, guillemotleft ] };
- key <AB02> { [ x, X, guillemotright ] };
- key <AB03> { [ c, C, cent, copyright ] };
- key <AB07> { [ m, M, mu, masculine ] };
- key <AB08> { [ comma, apostrophe, less ] };
- key <AB09> { [ period, period, greater ] };
- key <AB10> { [ eacute, Eacute, slash ] };
-};
-
-partial
-xkb_symbols "multi" {
-
- name[Group1] = "Canada - Multilingual, first part";
-
- include "ca(fr)"
-
- key <TLDE> { [ slash, backslash, bar ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, question ] };
- key <AE07> { [ 7, ampersand, braceleft ] };
- key <AE08> { [ 8, asterisk, braceright ] };
- key <AE09> { [ 9, parenleft, bracketleft ] };
- key <AE10> { [ 0, parenright, bracketright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus, notsign ] };
-
- key <AD09> { [ o, O ] };
- key <AD10> { [ p, P ] };
- key <AD11> { [dead_circumflex, dead_diaeresis, dead_grave ] };
- key <AD12> { [ ccedilla, Ccedilla, asciitilde ] };
-
- key <AC10> { [ semicolon, colon, degree ] };
- key <AC11> { [ egrave, Egrave ] };
- key <BKSL> { [ agrave, Agrave ] };
-
- key <LSGT> { [ ugrave, Ugrave ] };
- key <AB01> { [ z, Z, guillemotleft ] };
- key <AB02> { [ x, X, guillemotright ] };
- key <AB08> { [ comma, apostrophe, less ] };
- key <AB09> { [ period, quotedbl, greater ] };
- key <AB10> { [ eacute, Eacute ] };
-};
-
-partial
-xkb_symbols "multi-2gr" {
-
- name[Group1] = "Canada - Multilingual, second part";
-
- key <TLDE> { [ NoSymbol, hyphen ] };
- key <AE01> { [ onesuperior, exclamdown ] };
- key <AE02> { [ twosuperior, NoSymbol ] };
- key <AE03> { [ threesuperior, sterling ] };
- key <AE04> { [ onequarter, currency ] };
- key <AE05> { [ onehalf,threeeighths ] };
- key <AE06> { [ threequarters, fiveeighths ] };
- key <AE07> { [ NoSymbol,seveneighths ] };
- key <AE08> { [ NoSymbol, trademark ] };
- key <AE09> { [ NoSymbol, plusminus ] };
-
- key <AE11> { [ NoSymbol, questiondown] };
- key <AE12> { [ dead_cedilla, dead_ogonek ] };
-
- key <AD01> { [ NoSymbol, Greek_OMEGA ] };
- key <AD02> { [ lstroke, Lstroke ] };
- key <AD03> { [ oe, OE ] };
- key <AD04> { [ paragraph, registered ] };
- key <AD05> { [ tslash, Tslash ] };
- key <AD06> { [ leftarrow, yen ] };
- key <AD07> { [ downarrow, uparrow ] };
- key <AD08> { [ rightarrow, idotless ] };
- key <AD09> { [ oslash, Ooblique ] };
- key <AD10> { [ thorn, THORN ] };
- key <AD11> { [ NoSymbol, dead_abovering ] };
- key <AD12> { [ dead_tilde, dead_macron ] };
-
- key <AC01> { [ ae, AE ] };
- key <AC02> { [ ssharp, section ] };
- key <AC03> { [ eth, ETH ] };
- key <AC04> { [ NoSymbol, ordfeminine ] };
- key <AC05> { [ eng, ENG ] };
- key <AC06> { [ hstroke, Hstroke ] };
- key <AC07> { [ U0133, U0132 ] };
- key <AC08> { [ kra, NoSymbol ] };
- key <AC09> { [ U0140, U013F ] };
- key <AC10> { [ dead_acute, dead_doubleacute ] };
- key <AC11> { [ NoSymbol, dead_caron ] };
- key <BKSL> { [ NoSymbol, dead_breve ] };
-
-
- key <LSGT> { [ NoSymbol, brokenbar ] };
-
- key <AB03> { [ cent, copyright ] };
- key <AB04> { [ leftdoublequotemark, leftsinglequotemark ] };
- key <AB05> { [ rightdoublequotemark, rightsinglequotemark ] };
- key <AB06> { [ U0149, U266A ] };
- key <AB07> { [ mu, masculine ] };
- key <AB08> { [ Greek_horizbar, multiply ] };
- key <AB09> { [ periodcentered, division ] };
- key <AB10> { [ NoSymbol, dead_abovedot ] };
-
-};
-
-// based on
-// Inuktitut keyboard for X11
-// written by Pablo Saratxaga <pablo@mandrakesoft.com>
-
-alphanumeric_keys
-xkb_symbols "ike" {
-
- name[Group1]= "Canada - Inuktitut";
-
- key <AE01> { [ 0x01001595, 1 ] };
- key <AE02> { [ 0x01001449, 2 ] };
- key <AE03> { [ 0x01001550, 3 ] };
- key <AE04> { [ 0x01001483, 4 ] };
- key <AE05> { [ 0x01001466, 5 ] };
- key <AE06> { [ 0x01001585, 6 ] };
- key <AE07> { [ 0x010014bb, 7 ] };
- key <AE08> { [ 0x010014d0, 8 ] };
- key <AE09> { [ 0x010014ea, 9 ] };
- key <AE10> { [ 0x0100153e, 0 ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ 0x0100155d, equal ] };
-
- key <AD01> { [ 0x0100158f, 0x0100148b ] };
- key <AD02> { [ 0x01001403, 0x01001431 ] };
- key <AD03> { [ 0x0100157f, 0x01001546 ] };
- key <AD04> { [ 0x0100146d, 0x01001596 ] };
- key <AD05> { [ 0x0100144e, 0x01001671 ] };
- key <AD06> { [ 0x010014ef, 0x01001673 ] };
- key <AD07> { [ 0x010014a5, 0x01001675 ] };
- key <AD08> { [ 0x010014c2, 0x010015a4 ] };
- key <AD09> { [ 0x010014d5, 0x010015a0 ] };
- key <AD10> { [ 0x01001528, 0x010015a6 ] };
- key <AD11> { [ 0x010014a1, 0x01001505 ] };
- key <AD12> { [ dead_abovedot, 0x0100141e] };
-
- key <AC01> { [ 0x01001591, 0x0100148d ] };
- key <AC02> { [ 0x01001405, 0x01001433 ] };
- key <AC03> { [ 0x01001581, 0x01001548 ] };
- key <AC04> { [ 0x0100146f, 0x01001555 ] };
- key <AC05> { [ 0x01001450, parenleft ] };
- key <AC06> { [ 0x010014f1, parenright ] };
- key <AC07> { [ 0x010014a7, 0x0100152a ] };
- key <AC08> { [ 0x010014c4, 0x01001557 ] };
- key <AC09> { [ 0x010014d7, 0x010015a2 ] };
- key <AC10> { [ semicolon, colon ] };
- key <AC11> { [ apostrophe, quotedbl ] };
-
- key <AB01> { [ 0x01001593, 0x01001490 ] };
- key <AB02> { [ 0x0100140a, 0x01001438 ] };
- key <AB03> { [ 0x01001583, 0x0100154b ] };
- key <AB04> { [ 0x01001472, question ] };
- key <AB05> { [ 0x01001455, 0x0100157c ] };
- key <AB06> { [ 0x010014f4, 0x010014c7 ] };
- key <AB07> { [ 0x010014aa, 0x010014da ] };
- key <AB08> { [ comma, less ] };
- key <AB09> { [ period, greater ] };
- key <AB10> { [ 0x0100152d, 0x01001559 ] };
-
- key <TLDE> { [ 0x0100157b, 0x01001575 ] };
- key <LSGT> { [ 0x01001579, 0x01001577 ] };
- key <BKSL> { [ backslash, bar ] };
-
-// End alphanumeric section
-};
-
-partial
-xkb_symbols "multix" {
-
- name[Group1] = "Canada - Multilingual";
-
- key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC";
- key <TLDE> { [ slash, backslash, bar, NoSymbol,
- NoSymbol, hyphen ] };
- key <AE01> { [ 1, exclam, plusminus, NoSymbol,
- onesuperior, exclamdown ] };
- key <AE02> { [ 2, at, at, NoSymbol,
- twosuperior, NoSymbol ] };
- key <AE03> { [ 3, numbersign, sterling, NoSymbol,
- threesuperior, sterling ] };
- key <AE04> { [ 4, dollar, cent, NoSymbol,
- onequarter, currency ] };
- key <AE05> { [ 5, percent, currency, NoSymbol,
- onehalf, threeeighths ] };
- key <AE06> { [ 6, question, notsign, NoSymbol,
- threequarters, fiveeighths ] };
- key <AE07> { [ 7, ampersand, braceleft, NoSymbol,
- NoSymbol, seveneighths ] };
- key <AE08> { [ 8, asterisk, braceright, NoSymbol,
- NoSymbol, trademark ] };
- key <AE09> { [ 9, parenleft, bracketleft, NoSymbol,
- NoSymbol, plusminus ] };
- key <AE10> { [ 0, parenright, bracketright, NoSymbol ] };
- key <AE11> { [ minus, underscore, onehalf, NoSymbol,
- NoSymbol, questiondown] };
- key <AE12> { [ equal, plus, notsign, NoSymbol,
- dead_cedilla, dead_ogonek ] };
-
- key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC";
- key <AD01> { [ q, Q, NoSymbol, NoSymbol,
- NoSymbol, Greek_OMEGA ] };
- key <AD02> { [ w, W, NoSymbol, NoSymbol,
- lstroke, Lstroke ] };
- key <AD03> { [ e, E, NoSymbol, NoSymbol,
- oe, OE ] };
- key <AD04> { [ r, R, NoSymbol, NoSymbol,
- paragraph, registered ] };
- key <AD05> { [ t, T, NoSymbol, NoSymbol,
- tslash, Tslash ] };
- key <AD06> { [ y, Y, NoSymbol, NoSymbol,
- leftarrow, yen ] };
- key <AD07> { [ u, U, NoSymbol, NoSymbol,
- downarrow, uparrow ] };
- key <AD08> { [ i, I, NoSymbol, NoSymbol,
- rightarrow, idotless ] };
- key <AD09> { [ o, O, section, NoSymbol,
- oslash, Ooblique ] };
- key <AD10> { [ p, P, paragraph, NoSymbol,
- thorn, THORN ] };
-
- key.type[group1]="EIGHT_LEVEL";
- key <AD11> { [dead_circumflex, dead_diaeresis, dead_grave, NoSymbol,
- NoSymbol, dead_abovering ] };
-
- key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC";
- key <AD12> { [ ccedilla, Ccedilla, asciitilde, NoSymbol,
- dead_tilde, dead_macron ] };
-
- key <AC01> { [ a, A, NoSymbol, NoSymbol,
- ae, AE ] };
- key <AC02> { [ s, S, NoSymbol, NoSymbol,
- ssharp, section ] };
- key <AC03> { [ d, D, NoSymbol, NoSymbol,
- eth, ETH ] };
- key <AC04> { [ f, F, NoSymbol, NoSymbol,
- NoSymbol, ordfeminine ] };
- key <AC05> { [ g, G, NoSymbol, NoSymbol,
- eng, ENG ] };
- key <AC06> { [ h, H, NoSymbol, NoSymbol,
- hstroke, Hstroke ] };
- key <AC07> { [ j, J, NoSymbol, NoSymbol,
- U0133, U0132 ] };
- key <AC08> { [ k, K, NoSymbol, NoSymbol,
- kra, NoSymbol ] };
- key <AC09> { [ l, L, NoSymbol, NoSymbol,
- U0140, U013F ] };
-
- key.type[group1]="EIGHT_LEVEL";
- key <AC10> { [ semicolon, colon, degree, NoSymbol,
- dead_acute, dead_doubleacute ] };
-
- key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC";
- key <AC11> { [ egrave, Egrave, braceleft, NoSymbol,
- NoSymbol, dead_caron ] };
- key <BKSL> { [ agrave, Agrave, braceright, NoSymbol,
- NoSymbol, dead_breve ] };
-
- key <LSGT> { [ ugrave, Ugrave, degree, NoSymbol,
- NoSymbol, brokenbar ] };
-
- key.type[group1]="FOUR_LEVEL_SEMIALPHABETIC";
- key <AB01> { [ z, Z, guillemotleft, NoSymbol ] };
- key <AB02> { [ x, X, guillemotright, NoSymbol ] };
-
- key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC";
- key <AB03> { [ c, C, NoSymbol, NoSymbol,
- cent, copyright ] };
- key <AB04> { [ v, V, NoSymbol, NoSymbol,
- leftdoublequotemark, leftsinglequotemark ] };
- key <AB05> { [ b, B, NoSymbol, NoSymbol,
- rightdoublequotemark, rightsinglequotemark ] };
- key <AB06> { [ n, N, NoSymbol, NoSymbol,
- U0149, U266A ] };
- key <AB07> { [ m, M, mu, NoSymbol,
- mu, masculine ] };
- key <AB08> { [ comma, apostrophe, less, NoSymbol,
- Greek_horizbar, multiply ] };
- key <AB09> { [ period, quotedbl, greater, NoSymbol,
- periodcentered, division ] };
- key <AB10> { [ eacute, Eacute, dead_acute, NoSymbol,
- NoSymbol, dead_abovedot ] };
-
- include "nbsp(level3s)"
-
- modifier_map Control{ Control_L };
-
- include "level3(ralt_switch)"
- include "level5(rctrl_switch)"
-};
-
-// Secwepemctsin keyboard for X11
-// written by Neskie Manuel <neskiem@gmail.com>
-
-partial alphanumeric_keys
-xkb_symbols "shs" {
-
- include "us"
-
- name[Group1]= "Canada - Secwepemctsin";
-
- //Using Dead key to get COMBINING COMMA ABOVE for ejectives on
- //q, l, t, s, m, g, k, p, w, y, r
- //XCompose key is used for the other accute and grave.
-
- key <AB08> { [ comma, less, U0313 ] };
- key <AC01> { [ a, A, aacute, Aacute ] };
- key <AD03> { [ e, E, eacute, Eacute ] };
- key <AD07> { [ u, U, uacute, Uacute ] };
- key <AD08> { [ i, I, iacute, Iacute ] };
- key <AD09> { [ o, O, oacute, Oacute ] };
-
- include "level3(ralt_switch)"
- include "compose(rctrl)"
-};
-
-// OLPC Section
-xkb_symbols "olpc" {
-
- include "ca(fr)"
-
- key <AE02> { [ 2, quotedbl, ograve, Ograve ] };
- key <AE03> { [ 3, slash, at, VoidSymbol ] };
-
- key <AD03> { [ e, E, EuroSign, VoidSymbol] };
-
- key <AB09> { [ period, period, 0x1002010 ] };
-
- key <I219> { [ guillemotleft, guillemotright, degree, VoidSymbol ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "kut" {
-
- //Ejective U0313 and compose accents are from shs layout
- include "ca(shs)"
-
- name[Group1]= "Canada - Ktunaxa";
-
- // Alphanumeric section
-
- // Alveolar Click
- key <AD05> { [ t, T,U01C2 ,U01C2 ] };
-
- //Cent sign
- key <AB03> { [ c, C,U00A2,U00A2 ] };
-
- //Mid dot
- key <AB09> { [ period, greater,U00B7 ] };
-
- //Glottal stop
- key <AB10> { [ slash, question, U0294 ] };
-
- //COMBINING COMMA ABOVE RIGHT
- key <AC11> { [ apostrophe, quotedbl, U0315,U0315 ] };
-
- //MODIFIER LETTER RIGHT HALF RING
- key <AC10> { [ semicolon, colon,U02BE,U02BE ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "eng" {
- name[Group1] = "Canada - English";
- include "us(basic)"
-};
-
+default partial
+xkb_symbols "fr" {
+ name[Group1] = "Canada";
+
+ key <TLDE> { [ numbersign, bar, backslash ] };
+ key <AE01> { [ 1, exclam, plusminus ] };
+ key <AE02> { [ 2, quotedbl, at ] };
+ key <AE03> { [ 3, slash, sterling ] };
+ key <AE04> { [ 4, dollar, cent ] };
+ key <AE05> { [ 5, percent, currency ] };
+ key <AE06> { [ 6, question, notsign ] };
+ key <AE07> { [ 7, ampersand, brokenbar ] };
+ key <AE08> { [ 8, asterisk, twosuperior ] };
+ key <AE09> { [ 9, parenleft, threesuperior ] };
+ key <AE10> { [ 0, parenright, onequarter ] };
+ key <AE11> { [ minus, underscore, onehalf ] };
+ key <AE12> { [ equal, plus, threequarters ] };
+
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E ] };
+ key <AD04> { [ r, R ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y ] };
+ key <AD07> { [ u, U ] };
+ key <AD08> { [ i, I ] };
+ key <AD09> { [ o, O, section ] };
+ key <AD10> { [ p, P, paragraph ] };
+ key <AD11> { [dead_circumflex, dead_circumflex, bracketleft ] };
+ key <AD12> { [ dead_cedilla, dead_diaeresis, bracketright ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ s, S ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K ] };
+ key <AC09> { [ l, L ] };
+ key <AC10> { [ semicolon, colon, asciitilde ] };
+ key <AC11> { [dead_grave, dead_grave, braceleft ] };
+ key <BKSL> { [ less, greater, braceright ] };
+
+ key <LSGT> { [guillemotleft, guillemotright, degree] };
+ key <AB01> { [ z, Z ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M, mu ] };
+ key <AB08> { [ comma, apostrophe, macron ] };
+ key <AB09> { [ period, period, hyphen ] };
+ key <AB10> { [ eacute, Eacute, dead_acute ] };
+
+ key <SPCE> { [ space, space, nobreakspace ] };
+
+ include "level3(ralt_switch)"
+};
+
+xkb_symbols "fr-dvorak" {
+ name[Group1] = "Canada - French Dvorak";
+
+ key <TLDE> { [ numbersign, bar, backslash ] };
+ key <AE01> { [ 1, exclam, plusminus ] };
+ key <AE02> { [ 2, quotedbl, at ] };
+ key <AE03> { [ 3, slash, sterling ] };
+ key <AE04> { [ 4, dollar, cent ] };
+ key <AE05> { [ 5, percent, currency ] };
+ key <AE06> { [ 6, question, notsign ] };
+ key <AE07> { [ 7, ampersand, brokenbar ] };
+ key <AE08> { [ 8, asterisk, twosuperior ] };
+ key <AE09> { [ 9, parenleft, threesuperior ] };
+ key <AE10> { [ 0, parenright, onequarter ] };
+ key <AE11> { [dead_circumflex, dead_circumflex, bracketleft ] };
+ key <AE12> { [ dead_cedilla, dead_diaeresis, bracketright ] };
+
+ key <AD01> { [dead_grave, dead_grave, braceleft ] };
+ key <AD02> { [ comma, apostrophe, macron ] };
+ key <AD03> { [ period, period, hyphen ] };
+ key <AD04> { [ p, P, paragraph ] };
+ key <AD05> { [ y, Y ] };
+ key <AD06> { [ f, F ] };
+ key <AD07> { [ g, G ] };
+ key <AD08> { [ c, C ] };
+ key <AD09> { [ r, R ] };
+ key <AD10> { [ l, L ] };
+ key <AD11> { [ eacute, Eacute, dead_acute ] };
+ key <AD12> { [ equal, plus, threequarters ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ o, O, section ] };
+ key <AC03> { [ e, E ] };
+ key <AC04> { [ u, U ] };
+ key <AC05> { [ i, I ] };
+ key <AC06> { [ d, D ] };
+ key <AC07> { [ h, H ] };
+ key <AC08> { [ t, T ] };
+ key <AC09> { [ n, N ] };
+ key <AC10> { [ s, S ] };
+ key <AC11> { [ minus, underscore, onehalf ] };
+ key <BKSL> { [ less, greater, braceright ] };
+
+ key <LSGT> { [guillemotleft, guillemotright, degree] };
+ key <AB01> { [ semicolon, colon, asciitilde ] };
+ key <AB02> { [ q, Q ] };
+ key <AB03> { [ j, J ] };
+ key <AB04> { [ k, K ] };
+ key <AB05> { [ x, X ] };
+ key <AB06> { [ b, B ] };
+ key <AB07> { [ m, M, mu ] };
+ key <AB08> { [ w, W ] };
+ key <AB09> { [ v, V ] };
+ key <AB10> { [ z, Z ] };
+
+ key <SPCE> { [ space, space, nobreakspace ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial
+xkb_symbols "fr-legacy" {
+
+ name[Group1] = "Canada - French (legacy)";
+
+ include "ca(fr)"
+
+ key <TLDE> { [ degree, degree, notsign ] };
+ key <AE01> { [ 1, exclam, onesuperior ] };
+
+ key <AE03> { [ 3, numbersign, threesuperior ] };
+ key <AE04> { [ 4, dollar, onequarter ] };
+ key <AE05> { [ 5, percent, onehalf ] };
+ key <AE06> { [ 6, question, threequarters ] };
+ key <AE07> { [ 7, ampersand, braceleft ] };
+ key <AE08> { [ 8, asterisk, bracketleft ] };
+ key <AE09> { [ 9, parenleft, bracketright, plusminus ] };
+ key <AE10> { [ 0, parenright, braceright ] };
+ key <AE11> { [ minus, underscore, bar, questiondown] };
+ key <AE12> { [ equal, plus, dead_cedilla ] };
+
+ key <AD04> { [ r, R, paragraph, registered ] };
+ key <AD06> { [ y, Y, yen ] };
+ key <AD09> { [ o, O, oslash, Ooblique ] };
+ key <AD10> { [ p, P, thorn, THORN ] };
+ key <AD11> { [dead_circumflex, dead_circumflex, degree ] };
+ key <AD12> { [ ccedilla, Ccedilla, dead_tilde, dead_diaeresis ] };
+
+ key <AC01> { [ a, A, ae, AE ] };
+ key <AC02> { [ s, S, ssharp, section ] };
+ key <AC03> { [ d, D, eth, ETH ] };
+ key <AC04> { [ f, F, ordfeminine ] };
+ key <AC10> { [ semicolon, colon, dead_acute, dead_acute ] };
+ key <AC11> { [ egrave, Egrave ] };
+ key <BKSL> { [ agrave, Agrave, dead_grave ] };
+
+ key <LSGT> { [ ugrave, Ugrave, backslash, bar ] };
+ key <AB01> { [ z, Z, guillemotleft ] };
+ key <AB02> { [ x, X, guillemotright ] };
+ key <AB03> { [ c, C, cent, copyright ] };
+ key <AB07> { [ m, M, mu, masculine ] };
+ key <AB08> { [ comma, apostrophe, less ] };
+ key <AB09> { [ period, period, greater ] };
+ key <AB10> { [ eacute, Eacute, slash ] };
+};
+
+partial
+xkb_symbols "multi" {
+
+ name[Group1] = "Canada - Multilingual, first part";
+
+ include "ca(fr)"
+
+ key <TLDE> { [ slash, backslash, bar ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, question ] };
+ key <AE07> { [ 7, ampersand, braceleft ] };
+ key <AE08> { [ 8, asterisk, braceright ] };
+ key <AE09> { [ 9, parenleft, bracketleft ] };
+ key <AE10> { [ 0, parenright, bracketright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus, notsign ] };
+
+ key <AD09> { [ o, O ] };
+ key <AD10> { [ p, P ] };
+ key <AD11> { [dead_circumflex, dead_diaeresis, dead_grave ] };
+ key <AD12> { [ ccedilla, Ccedilla, asciitilde ] };
+
+ key <AC10> { [ semicolon, colon, degree ] };
+ key <AC11> { [ egrave, Egrave ] };
+ key <BKSL> { [ agrave, Agrave ] };
+
+ key <LSGT> { [ ugrave, Ugrave ] };
+ key <AB01> { [ z, Z, guillemotleft ] };
+ key <AB02> { [ x, X, guillemotright ] };
+ key <AB08> { [ comma, apostrophe, less ] };
+ key <AB09> { [ period, quotedbl, greater ] };
+ key <AB10> { [ eacute, Eacute ] };
+};
+
+partial
+xkb_symbols "multi-2gr" {
+
+ name[Group1] = "Canada - Multilingual, second part";
+
+ key <TLDE> { [ NoSymbol, hyphen ] };
+ key <AE01> { [ onesuperior, exclamdown ] };
+ key <AE02> { [ twosuperior, NoSymbol ] };
+ key <AE03> { [ threesuperior, sterling ] };
+ key <AE04> { [ onequarter, currency ] };
+ key <AE05> { [ onehalf,threeeighths ] };
+ key <AE06> { [ threequarters, fiveeighths ] };
+ key <AE07> { [ NoSymbol,seveneighths ] };
+ key <AE08> { [ NoSymbol, trademark ] };
+ key <AE09> { [ NoSymbol, plusminus ] };
+
+ key <AE11> { [ NoSymbol, questiondown] };
+ key <AE12> { [ dead_cedilla, dead_ogonek ] };
+
+ key <AD01> { [ NoSymbol, Greek_OMEGA ] };
+ key <AD02> { [ lstroke, Lstroke ] };
+ key <AD03> { [ oe, OE ] };
+ key <AD04> { [ paragraph, registered ] };
+ key <AD05> { [ tslash, Tslash ] };
+ key <AD06> { [ leftarrow, yen ] };
+ key <AD07> { [ downarrow, uparrow ] };
+ key <AD08> { [ rightarrow, idotless ] };
+ key <AD09> { [ oslash, Ooblique ] };
+ key <AD10> { [ thorn, THORN ] };
+ key <AD11> { [ NoSymbol, dead_abovering ] };
+ key <AD12> { [ dead_tilde, dead_macron ] };
+
+ key <AC01> { [ ae, AE ] };
+ key <AC02> { [ ssharp, section ] };
+ key <AC03> { [ eth, ETH ] };
+ key <AC04> { [ NoSymbol, ordfeminine ] };
+ key <AC05> { [ eng, ENG ] };
+ key <AC06> { [ hstroke, Hstroke ] };
+ key <AC07> { [ U0133, U0132 ] };
+ key <AC08> { [ kra, NoSymbol ] };
+ key <AC09> { [ U0140, U013F ] };
+ key <AC10> { [ dead_acute, dead_doubleacute ] };
+ key <AC11> { [ NoSymbol, dead_caron ] };
+ key <BKSL> { [ NoSymbol, dead_breve ] };
+
+
+ key <LSGT> { [ NoSymbol, brokenbar ] };
+
+ key <AB03> { [ cent, copyright ] };
+ key <AB04> { [ leftdoublequotemark, leftsinglequotemark ] };
+ key <AB05> { [ rightdoublequotemark, rightsinglequotemark ] };
+ key <AB06> { [ U0149, U266A ] };
+ key <AB07> { [ mu, masculine ] };
+ key <AB08> { [ Greek_horizbar, multiply ] };
+ key <AB09> { [ periodcentered, division ] };
+ key <AB10> { [ NoSymbol, dead_abovedot ] };
+
+};
+
+// based on
+// Inuktitut keyboard for X11
+// written by Pablo Saratxaga <pablo@mandrakesoft.com>
+
+alphanumeric_keys
+xkb_symbols "ike" {
+
+ name[Group1]= "Canada - Inuktitut";
+
+ key <AE01> { [ 0x01001595, 1 ] };
+ key <AE02> { [ 0x01001449, 2 ] };
+ key <AE03> { [ 0x01001550, 3 ] };
+ key <AE04> { [ 0x01001483, 4 ] };
+ key <AE05> { [ 0x01001466, 5 ] };
+ key <AE06> { [ 0x01001585, 6 ] };
+ key <AE07> { [ 0x010014bb, 7 ] };
+ key <AE08> { [ 0x010014d0, 8 ] };
+ key <AE09> { [ 0x010014ea, 9 ] };
+ key <AE10> { [ 0x0100153e, 0 ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ 0x0100155d, equal ] };
+
+ key <AD01> { [ 0x0100158f, 0x0100148b ] };
+ key <AD02> { [ 0x01001403, 0x01001431 ] };
+ key <AD03> { [ 0x0100157f, 0x01001546 ] };
+ key <AD04> { [ 0x0100146d, 0x01001596 ] };
+ key <AD05> { [ 0x0100144e, 0x01001671 ] };
+ key <AD06> { [ 0x010014ef, 0x01001673 ] };
+ key <AD07> { [ 0x010014a5, 0x01001675 ] };
+ key <AD08> { [ 0x010014c2, 0x010015a4 ] };
+ key <AD09> { [ 0x010014d5, 0x010015a0 ] };
+ key <AD10> { [ 0x01001528, 0x010015a6 ] };
+ key <AD11> { [ 0x010014a1, 0x01001505 ] };
+ key <AD12> { [ dead_abovedot, 0x0100141e] };
+
+ key <AC01> { [ 0x01001591, 0x0100148d ] };
+ key <AC02> { [ 0x01001405, 0x01001433 ] };
+ key <AC03> { [ 0x01001581, 0x01001548 ] };
+ key <AC04> { [ 0x0100146f, 0x01001555 ] };
+ key <AC05> { [ 0x01001450, parenleft ] };
+ key <AC06> { [ 0x010014f1, parenright ] };
+ key <AC07> { [ 0x010014a7, 0x0100152a ] };
+ key <AC08> { [ 0x010014c4, 0x01001557 ] };
+ key <AC09> { [ 0x010014d7, 0x010015a2 ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ apostrophe, quotedbl ] };
+
+ key <AB01> { [ 0x01001593, 0x01001490 ] };
+ key <AB02> { [ 0x0100140a, 0x01001438 ] };
+ key <AB03> { [ 0x01001583, 0x0100154b ] };
+ key <AB04> { [ 0x01001472, question ] };
+ key <AB05> { [ 0x01001455, 0x0100157c ] };
+ key <AB06> { [ 0x010014f4, 0x010014c7 ] };
+ key <AB07> { [ 0x010014aa, 0x010014da ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ 0x0100152d, 0x01001559 ] };
+
+ key <TLDE> { [ 0x0100157b, 0x01001575 ] };
+ key <LSGT> { [ 0x01001579, 0x01001577 ] };
+ key <BKSL> { [ backslash, bar ] };
+
+// End alphanumeric section
+};
+
+partial
+xkb_symbols "multix" {
+
+ name[Group1] = "Canada - Multilingual";
+
+ key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC";
+ key <TLDE> { [ slash, backslash, bar, NoSymbol,
+ NoSymbol, hyphen ] };
+ key <AE01> { [ 1, exclam, plusminus, NoSymbol,
+ onesuperior, exclamdown ] };
+ key <AE02> { [ 2, at, at, NoSymbol,
+ twosuperior, NoSymbol ] };
+ key <AE03> { [ 3, numbersign, sterling, NoSymbol,
+ threesuperior, sterling ] };
+ key <AE04> { [ 4, dollar, cent, NoSymbol,
+ onequarter, currency ] };
+ key <AE05> { [ 5, percent, currency, NoSymbol,
+ onehalf, threeeighths ] };
+ key <AE06> { [ 6, question, notsign, NoSymbol,
+ threequarters, fiveeighths ] };
+ key <AE07> { [ 7, ampersand, braceleft, NoSymbol,
+ NoSymbol, seveneighths ] };
+ key <AE08> { [ 8, asterisk, braceright, NoSymbol,
+ NoSymbol, trademark ] };
+ key <AE09> { [ 9, parenleft, bracketleft, NoSymbol,
+ NoSymbol, plusminus ] };
+ key <AE10> { [ 0, parenright, bracketright, NoSymbol ] };
+ key <AE11> { [ minus, underscore, onehalf, NoSymbol,
+ NoSymbol, questiondown] };
+ key <AE12> { [ equal, plus, notsign, NoSymbol,
+ dead_cedilla, dead_ogonek ] };
+
+ key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC";
+ key <AD01> { [ q, Q, NoSymbol, NoSymbol,
+ NoSymbol, Greek_OMEGA ] };
+ key <AD02> { [ w, W, NoSymbol, NoSymbol,
+ lstroke, Lstroke ] };
+ key <AD03> { [ e, E, NoSymbol, NoSymbol,
+ oe, OE ] };
+ key <AD04> { [ r, R, NoSymbol, NoSymbol,
+ paragraph, registered ] };
+ key <AD05> { [ t, T, NoSymbol, NoSymbol,
+ tslash, Tslash ] };
+ key <AD06> { [ y, Y, NoSymbol, NoSymbol,
+ leftarrow, yen ] };
+ key <AD07> { [ u, U, NoSymbol, NoSymbol,
+ downarrow, uparrow ] };
+ key <AD08> { [ i, I, NoSymbol, NoSymbol,
+ rightarrow, idotless ] };
+ key <AD09> { [ o, O, section, NoSymbol,
+ oslash, Ooblique ] };
+ key <AD10> { [ p, P, paragraph, NoSymbol,
+ thorn, THORN ] };
+
+ key.type[group1]="EIGHT_LEVEL";
+ key <AD11> { [dead_circumflex, dead_diaeresis, dead_grave, NoSymbol,
+ NoSymbol, dead_abovering ] };
+
+ key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC";
+ key <AD12> { [ ccedilla, Ccedilla, asciitilde, NoSymbol,
+ dead_tilde, dead_macron ] };
+
+ key <AC01> { [ a, A, NoSymbol, NoSymbol,
+ ae, AE ] };
+ key <AC02> { [ s, S, NoSymbol, NoSymbol,
+ ssharp, section ] };
+ key <AC03> { [ d, D, NoSymbol, NoSymbol,
+ eth, ETH ] };
+ key <AC04> { [ f, F, NoSymbol, NoSymbol,
+ NoSymbol, ordfeminine ] };
+ key <AC05> { [ g, G, NoSymbol, NoSymbol,
+ eng, ENG ] };
+ key <AC06> { [ h, H, NoSymbol, NoSymbol,
+ hstroke, Hstroke ] };
+ key <AC07> { [ j, J, NoSymbol, NoSymbol,
+ U0133, U0132 ] };
+ key <AC08> { [ k, K, NoSymbol, NoSymbol,
+ kra, NoSymbol ] };
+ key <AC09> { [ l, L, NoSymbol, NoSymbol,
+ U0140, U013F ] };
+
+ key.type[group1]="EIGHT_LEVEL";
+ key <AC10> { [ semicolon, colon, degree, NoSymbol,
+ dead_acute, dead_doubleacute ] };
+
+ key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC";
+ key <AC11> { [ egrave, Egrave, braceleft, NoSymbol,
+ NoSymbol, dead_caron ] };
+ key <BKSL> { [ agrave, Agrave, braceright, NoSymbol,
+ NoSymbol, dead_breve ] };
+
+ key <LSGT> { [ ugrave, Ugrave, degree, NoSymbol,
+ NoSymbol, brokenbar ] };
+
+ key.type[group1]="FOUR_LEVEL_SEMIALPHABETIC";
+ key <AB01> { [ z, Z, guillemotleft, NoSymbol ] };
+ key <AB02> { [ x, X, guillemotright, NoSymbol ] };
+
+ key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC";
+ key <AB03> { [ c, C, NoSymbol, NoSymbol,
+ cent, copyright ] };
+ key <AB04> { [ v, V, NoSymbol, NoSymbol,
+ leftdoublequotemark, leftsinglequotemark ] };
+ key <AB05> { [ b, B, NoSymbol, NoSymbol,
+ rightdoublequotemark, rightsinglequotemark ] };
+ key <AB06> { [ n, N, NoSymbol, NoSymbol,
+ U0149, U266A ] };
+ key <AB07> { [ m, M, mu, NoSymbol,
+ mu, masculine ] };
+ key <AB08> { [ comma, apostrophe, less, NoSymbol,
+ Greek_horizbar, multiply ] };
+ key <AB09> { [ period, quotedbl, greater, NoSymbol,
+ periodcentered, division ] };
+ key <AB10> { [ eacute, Eacute, dead_acute, NoSymbol,
+ NoSymbol, dead_abovedot ] };
+
+ include "nbsp(level3s)"
+
+ modifier_map Control{ Control_L };
+
+ include "level3(ralt_switch)"
+ include "level5(rctrl_switch)"
+};
+
+// Secwepemctsin keyboard for X11
+// written by Neskie Manuel <neskiem@gmail.com>
+
+partial alphanumeric_keys
+xkb_symbols "shs" {
+
+ include "us"
+
+ name[Group1]= "Canada - Secwepemctsin";
+
+ //Using Dead key to get COMBINING COMMA ABOVE for ejectives on
+ //q, l, t, s, m, g, k, p, w, y, r
+ //XCompose key is used for the other accute and grave.
+
+ key <AB08> { [ comma, less, U0313 ] };
+ key <AC01> { [ a, A, aacute, Aacute ] };
+ key <AD03> { [ e, E, eacute, Eacute ] };
+ key <AD07> { [ u, U, uacute, Uacute ] };
+ key <AD08> { [ i, I, iacute, Iacute ] };
+ key <AD09> { [ o, O, oacute, Oacute ] };
+
+ include "level3(ralt_switch)"
+ include "compose(rctrl)"
+};
+
+// OLPC Section
+xkb_symbols "olpc" {
+
+ include "ca(fr)"
+
+ key <AE02> { [ 2, quotedbl, ograve, Ograve ] };
+ key <AE03> { [ 3, slash, at, VoidSymbol ] };
+
+ key <AD03> { [ e, E, EuroSign, VoidSymbol] };
+
+ key <AB09> { [ period, period, 0x1002010 ] };
+
+ key <I219> { [ guillemotleft, guillemotright, degree, VoidSymbol ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "kut" {
+
+ //Ejective U0313 and compose accents are from shs layout
+ include "ca(shs)"
+
+ name[Group1]= "Canada - Ktunaxa";
+
+ // Alphanumeric section
+
+ // Alveolar Click
+ key <AD05> { [ t, T,U01C2 ,U01C2 ] };
+
+ //Cent sign
+ key <AB03> { [ c, C,U00A2,U00A2 ] };
+
+ //Mid dot
+ key <AB09> { [ period, greater,U00B7 ] };
+
+ //Glottal stop
+ key <AB10> { [ slash, question, U0294 ] };
+
+ //COMBINING COMMA ABOVE RIGHT
+ key <AC11> { [ apostrophe, quotedbl, U0315,U0315 ] };
+
+ //MODIFIER LETTER RIGHT HALF RING
+ key <AC10> { [ semicolon, colon,U02BE,U02BE ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "eng" {
+ name[Group1] = "Canada - English";
+ include "us(basic)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/capslock b/xorg-server/xkeyboard-config/symbols/capslock
index 415e4db1d..288a1d293 100644
--- a/xorg-server/xkeyboard-config/symbols/capslock
+++ b/xorg-server/xkeyboard-config/symbols/capslock
@@ -1,65 +1,62 @@
-// $XKeyboardConfig$
-
-default partial hidden modifier_keys
-xkb_symbols "capslock" {
- replace key <CAPS> { [ Caps_Lock ] };
- modifier_map Lock { Caps_Lock };
-};
-
-partial hidden modifier_keys
-xkb_symbols "shiftlock" {
- replace key <CAPS> { [ Shift_Lock ] };
- modifier_map Shift { Shift_Lock };
-};
-
-partial hidden modifier_keys
-xkb_symbols "grouplock" {
- replace key <CAPS> { [ ISO_Next_Group, Caps_Lock ] };
-};
-
-partial hidden modifier_keys
-xkb_symbols "swapescape" {
- key <CAPS> { [ Escape ] };
- key <ESC> { [ Caps_Lock ] };
-};
-
-partial hidden modifier_keys
-xkb_symbols "groupshift" {
- key <CAPS> {
- type[Group1]="PC_ALT_LEVEL2",
- [ Mode_switch, Caps_Lock ]
- };
-};
-
-partial hidden modifier_keys
-xkb_symbols "escape" {
- key <CAPS> { [ Escape ] };
-};
-
-partial hidden modifier_keys
-xkb_symbols "backspace" {
- key <CAPS> { [ BackSpace ] };
-};
-
-partial hidden modifier_keys
-xkb_symbols "super" {
- key <CAPS> { [ Super_L ] };
- modifier_map Mod4 { <CAPS> };
-};
-
-partial hidden modifier_keys
-xkb_symbols "hyper" {
- key <CAPS> { [ Hyper_L ] };
- modifier_map Mod4 { <CAPS> };
-};
-
-partial hidden modifier_keys
-xkb_symbols "none" {
- key <CAPS> { [ VoidSymbol ] };
-};
-
-partial hidden modifier_keys
-xkb_symbols "numlock" {
- key <CAPS> { [ Num_Lock ] };
-};
-
+default partial hidden modifier_keys
+xkb_symbols "capslock" {
+ replace key <CAPS> { [ Caps_Lock ] };
+ modifier_map Lock { Caps_Lock };
+};
+
+partial hidden modifier_keys
+xkb_symbols "shiftlock" {
+ replace key <CAPS> { [ Shift_Lock ] };
+ modifier_map Shift { Shift_Lock };
+};
+
+partial hidden modifier_keys
+xkb_symbols "grouplock" {
+ replace key <CAPS> { [ ISO_Next_Group, Caps_Lock ] };
+};
+
+partial hidden modifier_keys
+xkb_symbols "swapescape" {
+ key <CAPS> { [ Escape ] };
+ key <ESC> { [ Caps_Lock ] };
+};
+
+partial hidden modifier_keys
+xkb_symbols "groupshift" {
+ key <CAPS> {
+ type[Group1]="PC_ALT_LEVEL2",
+ [ Mode_switch, Caps_Lock ]
+ };
+};
+
+partial hidden modifier_keys
+xkb_symbols "escape" {
+ key <CAPS> { [ Escape ] };
+};
+
+partial hidden modifier_keys
+xkb_symbols "backspace" {
+ key <CAPS> { [ BackSpace ] };
+};
+
+partial hidden modifier_keys
+xkb_symbols "super" {
+ key <CAPS> { [ Super_L ] };
+ modifier_map Mod4 { <CAPS> };
+};
+
+partial hidden modifier_keys
+xkb_symbols "hyper" {
+ key <CAPS> { [ Hyper_L ] };
+ modifier_map Mod4 { <CAPS> };
+};
+
+partial hidden modifier_keys
+xkb_symbols "none" {
+ key <CAPS> { [ VoidSymbol ] };
+};
+
+partial hidden modifier_keys
+xkb_symbols "numlock" {
+ key <CAPS> { [ Num_Lock ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/cd b/xorg-server/xkeyboard-config/symbols/cd
index 1ba036551..8a12a384e 100644
--- a/xorg-server/xkeyboard-config/symbols/cd
+++ b/xorg-server/xkeyboard-config/symbols/cd
@@ -1,71 +1,69 @@
-// $XKeyboardConfig$
-
-// based on us_intl keyboard map file and a Sinhala keyboard map
-// version 0.3
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- name[Group1]= "Congo, Democratic Republic of the";
-
- key.type[Group1] = "FOUR_LEVEL";
-
- // Alphanumeric section
- // TILDE, COMBINING TILDE
- key <TLDE> { [ grave, asciitilde, 0x01000303] };
- key <AE01> { [ ampersand, 1, numbersign ] };
- key <AE02> { [0x01000301, 2, at ] };
- key <AE03> { [0x01000300, 3, guillemotleft ] };
- key <AE04> { [ parenleft, 4, bracketleft ] };
- key <AE05> { [ braceleft, 5, less ] };
- key <AE06> { [ braceright, 6, greater ] };
- key <AE07> { [parenright, 7, bracketright ] };
- key <AE08> { [0x01000302, 8, guillemotright ] };
- key <AE09> { [0x0100030c, 9 ] };
- key <AE10> { [0x01000308, 0, at ] };
- key <AE11> { [ minus, underscore, percent ] };
- key <AE12> { [ equal, plus, multiply, division ] };
-
- key <AD01> { [ a, A ] };
- key <AD02> { [ z, Z ] };
- key <AD03> { [ e, E ] };
- key <AD04> { [ r, R ] };
- key <AD05> { [ t, T ] };
- key <AD06> { [ y, Y ] };
- key <AD07> { [ u, U, 0x01000289, 0x01001d7e ] };
- key <AD08> { [ i, I, 0x01000268, 0x01000197 ] };
- key <AD09> { [ o, O, oslash, Ooblique ] };
- key <AD10> { [ p, P ] };
- key <AD11> { [0x0100025B, 0x01000190, asciicircum ] };
- key <AD12> { [ asterisk, asciicircum, dollar ] };
-
- key <AC01> { [ q, Q ] };
- key <AC02> { [ s, S ] };
- key <AC03> { [ d, D ] };
- key <AC04> { [ f, F ] };
- key <AC05> { [ g, G ] };
- key <AC06> { [ h, H ] };
- key <AC07> { [ j, J ] };
- key <AC08> { [ k, K ] };
- key <AC09> { [ l, L ] };
- key <AC10> { [ m, M ] };
- key <AC11> { [0x01000254, 0x01000186 ] };
- key <LSGT> { [ backslash, bar ] };
-
- key <AB01> { [ w, W ] };
- key <AB02> { [ x, X ] };
- key <AB03> { [ c, C, ccedilla, Ccedilla ] };
- key <AB04> { [ v, V ] };
- key <AB05> { [ b, B ] };
- key <AB06> { [ n, N ] };
- key <AB07> { [ comma, question, 0x01000327 ] };
- key <AB08> { [ semicolon, period ] };
- key <AB09> { [ colon, slash ] };
- key <AB10> { [ exclam, apostrophe, 0x01002019 ] };
- key <BKSL> { [ quotedbl, backslash, bar ] };
-
- // SPACE, SPACE, SPACE, NO-BREAK SPACE, SPACE
- key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
-
- include "level3(ralt_switch)"
-};
+// based on us_intl keyboard map file and a Sinhala keyboard map
+// version 0.3
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ name[Group1]= "Congo, Democratic Republic of the";
+
+ key.type[Group1] = "FOUR_LEVEL";
+
+ // Alphanumeric section
+ // TILDE, COMBINING TILDE
+ key <TLDE> { [ grave, asciitilde, 0x01000303] };
+ key <AE01> { [ ampersand, 1, numbersign ] };
+ key <AE02> { [0x01000301, 2, at ] };
+ key <AE03> { [0x01000300, 3, guillemotleft ] };
+ key <AE04> { [ parenleft, 4, bracketleft ] };
+ key <AE05> { [ braceleft, 5, less ] };
+ key <AE06> { [ braceright, 6, greater ] };
+ key <AE07> { [parenright, 7, bracketright ] };
+ key <AE08> { [0x01000302, 8, guillemotright ] };
+ key <AE09> { [0x0100030c, 9 ] };
+ key <AE10> { [0x01000308, 0, at ] };
+ key <AE11> { [ minus, underscore, percent ] };
+ key <AE12> { [ equal, plus, multiply, division ] };
+
+ key <AD01> { [ a, A ] };
+ key <AD02> { [ z, Z ] };
+ key <AD03> { [ e, E ] };
+ key <AD04> { [ r, R ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y ] };
+ key <AD07> { [ u, U, 0x01000289, 0x01001d7e ] };
+ key <AD08> { [ i, I, 0x01000268, 0x01000197 ] };
+ key <AD09> { [ o, O, oslash, Ooblique ] };
+ key <AD10> { [ p, P ] };
+ key <AD11> { [0x0100025B, 0x01000190, asciicircum ] };
+ key <AD12> { [ asterisk, asciicircum, dollar ] };
+
+ key <AC01> { [ q, Q ] };
+ key <AC02> { [ s, S ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K ] };
+ key <AC09> { [ l, L ] };
+ key <AC10> { [ m, M ] };
+ key <AC11> { [0x01000254, 0x01000186 ] };
+ key <LSGT> { [ backslash, bar ] };
+
+ key <AB01> { [ w, W ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ comma, question, 0x01000327 ] };
+ key <AB08> { [ semicolon, period ] };
+ key <AB09> { [ colon, slash ] };
+ key <AB10> { [ exclam, apostrophe, 0x01002019 ] };
+ key <BKSL> { [ quotedbl, backslash, bar ] };
+
+ // SPACE, SPACE, SPACE, NO-BREAK SPACE, SPACE
+ key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/ch b/xorg-server/xkeyboard-config/symbols/ch
index 26dcb616f..ffb772d80 100644
--- a/xorg-server/xkeyboard-config/symbols/ch
+++ b/xorg-server/xkeyboard-config/symbols/ch
@@ -1,7 +1,3 @@
-// $XKeyboardConfig$
-// $Xorg: ch,v 1.3 2000/08/17 19:54:42 cpqbld Exp $
-// $XFree86: xc/programs/xkbcomp/symbols/ch,v 3.6 2002/11/25 14:05:06 eich Exp $
-
partial default alphanumeric_keys
xkb_symbols "basic" {
@@ -215,4 +211,3 @@ xkb_symbols "fr_mac" {
[ agrave, adiaeresis, braceleft ]
};
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/cn b/xorg-server/xkeyboard-config/symbols/cn
index 341298056..0d62ab3d4 100644
--- a/xorg-server/xkeyboard-config/symbols/cn
+++ b/xorg-server/xkeyboard-config/symbols/cn
@@ -1,6 +1,3 @@
-// $XKeyboardConfig$
-//
-
//
// Default Chinese is the same as American
//
@@ -217,4 +214,3 @@ xkb_symbols "uig" {
key <BKSL> { [ backslash, bar ] }; // \ |
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/compose b/xorg-server/xkeyboard-config/symbols/compose
index 84e1a4b04..520d44aaf 100644
--- a/xorg-server/xkeyboard-config/symbols/compose
+++ b/xorg-server/xkeyboard-config/symbols/compose
@@ -1,59 +1,54 @@
-// $XKeyboardConfig$
-
-// $XFree86: xc/programs/xkbcomp/symbols/compose,v 1.1 2001/08/17 16:31:25 dawes Exp $
-
-partial modifier_keys
-xkb_symbols "ralt" {
- key <RALT> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "lwin" {
- key <LWIN> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "rwin" {
- key <RWIN> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "menu" {
- key <MENU> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "rctrl" {
- key <RCTL> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "lctrl" {
- key <LCTL> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "caps" {
- key <CAPS> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "102" {
- key <LSGT> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "paus" {
- key <PAUS> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "prsc" {
- key <PRSC> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "sclk" {
- key <SCLK> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
+partial modifier_keys
+xkb_symbols "ralt" {
+ key <RALT> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "lwin" {
+ key <LWIN> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "rwin" {
+ key <RWIN> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "menu" {
+ key <MENU> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "rctrl" {
+ key <RCTL> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "lctrl" {
+ key <LCTL> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "caps" {
+ key <CAPS> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "102" {
+ key <LSGT> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "paus" {
+ key <PAUS> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "prsc" {
+ key <PRSC> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "sclk" {
+ key <SCLK> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/ctrl b/xorg-server/xkeyboard-config/symbols/ctrl
index e11306fa4..189ce739b 100644
--- a/xorg-server/xkeyboard-config/symbols/ctrl
+++ b/xorg-server/xkeyboard-config/symbols/ctrl
@@ -1,7 +1,3 @@
-// $XKeyboardConfig$
-
-// $XFree86: xc/programs/xkbcomp/symbols/ctrl,v 3.2 2003/10/24 20:38:20 tsi Exp $
-//
// eliminate the caps lock key completely (replace with control)
partial modifier_keys
xkb_symbols "nocaps" {
diff --git a/xorg-server/xkeyboard-config/symbols/cz b/xorg-server/xkeyboard-config/symbols/cz
index 32592799a..d53b8364b 100644
--- a/xorg-server/xkeyboard-config/symbols/cz
+++ b/xorg-server/xkeyboard-config/symbols/cz
@@ -1,174 +1,170 @@
-// $XKeyboardConfig$
-// $XFree86: xc/programs/xkbcomp/symbols/cz,v 1.2 2002/11/22 04:02:22 dawes
-// Exp $
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // This layout conforms to a new cz compromise standard designed
- // to satisfy most unix, windows and mac users.
- // 2001 by Kamil Toman <ktoman@email.cz>
-
- include "latin"
-
- name[Group1]= "Czechia";
-
- key <TLDE> { [ semicolon, dead_abovering, grave, asciitilde ] };
- key <AE01> { [ plus, 1, exclam, dead_tilde ] };
- key <AE02> { [ ecaron, 2, at, dead_caron ] };
- key <AE03> { [ scaron, 3, numbersign, dead_circumflex ] };
- key <AE04> { [ ccaron, 4, dollar, dead_breve ] };
- key <AE05> { [ rcaron, 5, percent, dead_abovering ] };
- key <AE06> { [ zcaron, 6, asciicircum, dead_ogonek ] };
- key <AE07> { [ yacute, 7, ampersand, dead_grave ] };
- key <AE08> { [ aacute, 8, asterisk, dead_abovedot] };
- key <AE09> { [ iacute, 9, braceleft, dead_acute ] };
- key <AE10> { [ eacute, 0, braceright, dead_doubleacute ] };
- key <AE11> { [ equal, percent, NoSymbol, dead_diaeresis ] };
- key <AE12> { [dead_acute, dead_caron, dead_macron, dead_cedilla ] };
-
- key <AD01> { [ q, Q, backslash, NoSymbol ] };
- key <AD02> { [ w, W, bar, Nosymbol ] };
- key <AD03> { [ e, E, EuroSign, NoSymbol ] };
- key <AD04> { [ r, R, NoSymbol, NoSymbol ] };
- key <AD05> { [ t, T, NoSymbol, NoSymbol ] };
- key <AD06> { [ z, Z, NoSymbol, NoSymbol ] };
- key <AD07> { [ u, U, NoSymbol, NoSymbol ] };
- key <AD08> { [ i, I, NoSymbol, NoSymbol ] };
- key <AD09> { [ o, O, NoSymbol, NoSymbol ] };
- key <AD10> { [ p, P, NoSymbol, NoSymbol ] };
-
- key <AD11> { [ uacute, slash, bracketleft, division ] };
- key <AD12> { [parenright, parenleft, bracketright, multiply ] };
-
- key <AC01> { [ a, A, asciitilde, NoSymbol ] };
- key <AC02> { [ s, S, dstroke, NoSymbol ] };
- key <AC03> { [ d, D, Dstroke, NoSymbol ] };
- key <AC04> { [ f, F, bracketleft, NoSymbol ] };
- key <AC05> { [ g, G, bracketright, NoSymbol ] };
- key <AC06> { [ h, H, grave, NoSymbol ] };
- key <AC07> { [ j, J, apostrophe, NoSymbol ] };
- key <AC08> { [ k, K, lstroke, NoSymbol ] };
- key <AC09> { [ l, L, Lstroke, NoSymbol ] };
-
- key <AC10> { [ uring, quotedbl, dollar, NoSymbol ] };
- key <AC11> { [ section, exclam, apostrophe, ssharp ] };
- key <AC12> { [ EuroSign, dead_diaeresis, NoSymbol, NoSymbol ] };
- key <BKSL> { [dead_diaeresis, apostrophe, backslash, bar ] };
-
- key <LSGT> { [ backslash, bar, slash, NoSymbol ] };
- key <AB01> { [ y, Y, degree, NoSymbol ] };
- key <AB02> { [ x, X, numbersign, Nosymbol ] };
- key <AB03> { [ c, C, ampersand, NoSymbol ] };
- key <AB04> { [ v, V, at, NoSymbol ] };
- key <AB05> { [ b, B, braceleft, NoSymbol ] };
- key <AB06> { [ n, N, braceright, NoSymbol ] };
- key <AB07> { [ m, M, asciicircum, NoSymbol ] };
- key <AB08> { [ comma, question, less, NoSymbol ] };
- key <AB09> { [ period, colon, greater, NoSymbol ] };
- key <AB10> { [ minus, underscore, asterisk, NoSymbol ] };
-
- key <SPCE> { [ space, space, space, space ] };
-
- include "level3(ralt_switch)"
-};
-
-// Use <BKSL> instead of <LSGT> (useful for keyboard without <LSGT> key)
-xkb_symbols "bksl" {
- include "cz(basic)"
- name[Group1]= "Czechia - With <\|> key";
-
- key <BKSL> { [ backslash, bar, slash, NoSymbol ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "qwerty" {
-
- // This layout should work exactly as a cz with the exception
- // of 'Z' and 'Y' keys, which are in the qwerty style (ie. swapped).
- // 2001 by Kamil Toman <ktoman@email.cz>
-
- include "cz(basic)"
- name[Group1]= "Czechia - qwerty";
-
- key <AB01> { [ z, Z, degree, NoSymbol ] };
- key <AD06> { [ y, Y, NoSymbol, NoSymbol ] };
-};
-
-// Use <BKSL> instead of <LSGT> (useful for keyboard without <LSGT> key)
-xkb_symbols "qwerty_bksl" {
- include "cz(qwerty)"
-
- name[Group1]= "Czechia - qwerty, extended Backslash";
-
- key <BKSL> { [ backslash, bar, slash, NoSymbol ] };
-};
-
-partial alphanumeric_keys alternate_group
-xkb_symbols "ucw" {
-
- // This layout is usually used as the second group, it contains
- // accented characters only, no 'latin' set.
- // 2008 by Milan Vancura <mvancura@suse.cz>
-
- name[Group1]= "Czechia - UCW layout (accented letters only)";
-
- key <AB01> { [zcaron, Zcaron ] };
- key <AB02> { [ssharp ] };
- key <AB03> { [ccaron, Ccaron ] };
- key <AB04> { [ccedilla, Ccedilla ] };
- key <AB05> { [ntilde, Ntilde ] };
- key <AB06> { [ncaron, Ncaron ] };
- key <AB07> { [lacute, Lacute ] };
-
- key <AC01> { [aacute, Aacute ] };
- key <AC02> { [scaron, Scaron ] };
- key <AC03> { [dcaron, Dcaron ] };
- key <AC04> { [ediaeresis, Ediaeresis ] };
- key <AC05> { [racute, Racute ] };
- key <AC06> { [uacute, Uacute ] };
- key <AC07> { [udiaeresis, Udiaeresis ] };
- key <AC08> { [ocircumflex, Ocircumflex ] };
- key <AC09> { [lcaron, Lcaron ] };
-
- key <AD01> { [adiaeresis, Adiaeresis ] };
- key <AD02> { [ecaron, Ecaron ] };
- key <AD03> { [eacute, Eacute ] };
- key <AD04> { [rcaron, Rcaron ] };
- key <AD05> { [tcaron, Tcaron ] };
- key <AD06> { [yacute, Yacute ] };
- key <AD07> { [uring, Uring ] };
- key <AD08> { [iacute, Iacute ] };
- key <AD09> { [oacute, Oacute ] };
- key <AD10> { [odiaeresis, Odiaeresis ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "dvorak-ucw" {
-
- // US Dvorak layout extend with UCW - AltGr produces accented characters
-
- include "us(dvorak)"
-
- name[Group1]= "Czechia - US Dvorak with CZ UCW support";
-
- key <AB03> { [ j, J, eacute, Eacute ] };
- key <AB04> { [ k, K, uacute, Uacute ] };
- key <AB10> { [ z, Z, zcaron, Zcaron ] };
-
- key <AC01> { [ a, A, aacute, Aacute ] };
- key <AC02> { [ o, O, oacute, Oacute ] };
- key <AC03> { [ e, E, ecaron, Ecaron ] };
- key <AC04> { [ u, U, uring, Uring ] };
- key <AC05> { [ i, I, iacute, Iacute ] };
- key <AC06> { [ d, D, dcaron, Dcaron ] };
- key <AC08> { [ t, T, tcaron, Tcaron ] };
- key <AC09> { [ n, N, ncaron, Ncaron ] };
- key <AC10> { [ s, S, scaron, Scaron ] };
-
- key <AD05> { [ y, Y, yacute, Yacute ] };
- key <AD08> { [ c, C, ccaron, Ccaron ] };
- key <AD09> { [ r, R, rcaron, Rcaron ] };
-
- include "level3(ralt_switch)"
-};
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // This layout conforms to a new cz compromise standard designed
+ // to satisfy most unix, windows and mac users.
+ // 2001 by Kamil Toman <ktoman@email.cz>
+
+ include "latin"
+
+ name[Group1]= "Czechia";
+
+ key <TLDE> { [ semicolon, dead_abovering, grave, asciitilde ] };
+ key <AE01> { [ plus, 1, exclam, dead_tilde ] };
+ key <AE02> { [ ecaron, 2, at, dead_caron ] };
+ key <AE03> { [ scaron, 3, numbersign, dead_circumflex ] };
+ key <AE04> { [ ccaron, 4, dollar, dead_breve ] };
+ key <AE05> { [ rcaron, 5, percent, dead_abovering ] };
+ key <AE06> { [ zcaron, 6, asciicircum, dead_ogonek ] };
+ key <AE07> { [ yacute, 7, ampersand, dead_grave ] };
+ key <AE08> { [ aacute, 8, asterisk, dead_abovedot] };
+ key <AE09> { [ iacute, 9, braceleft, dead_acute ] };
+ key <AE10> { [ eacute, 0, braceright, dead_doubleacute ] };
+ key <AE11> { [ equal, percent, NoSymbol, dead_diaeresis ] };
+ key <AE12> { [dead_acute, dead_caron, dead_macron, dead_cedilla ] };
+
+ key <AD01> { [ q, Q, backslash, NoSymbol ] };
+ key <AD02> { [ w, W, bar, Nosymbol ] };
+ key <AD03> { [ e, E, EuroSign, NoSymbol ] };
+ key <AD04> { [ r, R, NoSymbol, NoSymbol ] };
+ key <AD05> { [ t, T, NoSymbol, NoSymbol ] };
+ key <AD06> { [ z, Z, NoSymbol, NoSymbol ] };
+ key <AD07> { [ u, U, NoSymbol, NoSymbol ] };
+ key <AD08> { [ i, I, NoSymbol, NoSymbol ] };
+ key <AD09> { [ o, O, NoSymbol, NoSymbol ] };
+ key <AD10> { [ p, P, NoSymbol, NoSymbol ] };
+
+ key <AD11> { [ uacute, slash, bracketleft, division ] };
+ key <AD12> { [parenright, parenleft, bracketright, multiply ] };
+
+ key <AC01> { [ a, A, asciitilde, NoSymbol ] };
+ key <AC02> { [ s, S, dstroke, NoSymbol ] };
+ key <AC03> { [ d, D, Dstroke, NoSymbol ] };
+ key <AC04> { [ f, F, bracketleft, NoSymbol ] };
+ key <AC05> { [ g, G, bracketright, NoSymbol ] };
+ key <AC06> { [ h, H, grave, NoSymbol ] };
+ key <AC07> { [ j, J, apostrophe, NoSymbol ] };
+ key <AC08> { [ k, K, lstroke, NoSymbol ] };
+ key <AC09> { [ l, L, Lstroke, NoSymbol ] };
+
+ key <AC10> { [ uring, quotedbl, dollar, NoSymbol ] };
+ key <AC11> { [ section, exclam, apostrophe, ssharp ] };
+ key <AC12> { [ EuroSign, dead_diaeresis, NoSymbol, NoSymbol ] };
+ key <BKSL> { [dead_diaeresis, apostrophe, backslash, bar ] };
+
+ key <LSGT> { [ backslash, bar, slash, NoSymbol ] };
+ key <AB01> { [ y, Y, degree, NoSymbol ] };
+ key <AB02> { [ x, X, numbersign, Nosymbol ] };
+ key <AB03> { [ c, C, ampersand, NoSymbol ] };
+ key <AB04> { [ v, V, at, NoSymbol ] };
+ key <AB05> { [ b, B, braceleft, NoSymbol ] };
+ key <AB06> { [ n, N, braceright, NoSymbol ] };
+ key <AB07> { [ m, M, asciicircum, NoSymbol ] };
+ key <AB08> { [ comma, question, less, NoSymbol ] };
+ key <AB09> { [ period, colon, greater, NoSymbol ] };
+ key <AB10> { [ minus, underscore, asterisk, NoSymbol ] };
+
+ key <SPCE> { [ space, space, space, space ] };
+
+ include "level3(ralt_switch)"
+};
+
+// Use <BKSL> instead of <LSGT> (useful for keyboard without <LSGT> key)
+xkb_symbols "bksl" {
+ include "cz(basic)"
+ name[Group1]= "Czechia - With <\|> key";
+
+ key <BKSL> { [ backslash, bar, slash, NoSymbol ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "qwerty" {
+
+ // This layout should work exactly as a cz with the exception
+ // of 'Z' and 'Y' keys, which are in the qwerty style (ie. swapped).
+ // 2001 by Kamil Toman <ktoman@email.cz>
+
+ include "cz(basic)"
+ name[Group1]= "Czechia - qwerty";
+
+ key <AB01> { [ z, Z, degree, NoSymbol ] };
+ key <AD06> { [ y, Y, NoSymbol, NoSymbol ] };
+};
+
+// Use <BKSL> instead of <LSGT> (useful for keyboard without <LSGT> key)
+xkb_symbols "qwerty_bksl" {
+ include "cz(qwerty)"
+
+ name[Group1]= "Czechia - qwerty, extended Backslash";
+
+ key <BKSL> { [ backslash, bar, slash, NoSymbol ] };
+};
+
+partial alphanumeric_keys alternate_group
+xkb_symbols "ucw" {
+
+ // This layout is usually used as the second group, it contains
+ // accented characters only, no 'latin' set.
+ // 2008 by Milan Vancura <mvancura@suse.cz>
+
+ name[Group1]= "Czechia - UCW layout (accented letters only)";
+
+ key <AB01> { [zcaron, Zcaron ] };
+ key <AB02> { [ssharp ] };
+ key <AB03> { [ccaron, Ccaron ] };
+ key <AB04> { [ccedilla, Ccedilla ] };
+ key <AB05> { [ntilde, Ntilde ] };
+ key <AB06> { [ncaron, Ncaron ] };
+ key <AB07> { [lacute, Lacute ] };
+
+ key <AC01> { [aacute, Aacute ] };
+ key <AC02> { [scaron, Scaron ] };
+ key <AC03> { [dcaron, Dcaron ] };
+ key <AC04> { [ediaeresis, Ediaeresis ] };
+ key <AC05> { [racute, Racute ] };
+ key <AC06> { [uacute, Uacute ] };
+ key <AC07> { [udiaeresis, Udiaeresis ] };
+ key <AC08> { [ocircumflex, Ocircumflex ] };
+ key <AC09> { [lcaron, Lcaron ] };
+
+ key <AD01> { [adiaeresis, Adiaeresis ] };
+ key <AD02> { [ecaron, Ecaron ] };
+ key <AD03> { [eacute, Eacute ] };
+ key <AD04> { [rcaron, Rcaron ] };
+ key <AD05> { [tcaron, Tcaron ] };
+ key <AD06> { [yacute, Yacute ] };
+ key <AD07> { [uring, Uring ] };
+ key <AD08> { [iacute, Iacute ] };
+ key <AD09> { [oacute, Oacute ] };
+ key <AD10> { [odiaeresis, Odiaeresis ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "dvorak-ucw" {
+
+ // US Dvorak layout extend with UCW - AltGr produces accented characters
+
+ include "us(dvorak)"
+
+ name[Group1]= "Czechia - US Dvorak with CZ UCW support";
+
+ key <AB03> { [ j, J, eacute, Eacute ] };
+ key <AB04> { [ k, K, uacute, Uacute ] };
+ key <AB10> { [ z, Z, zcaron, Zcaron ] };
+
+ key <AC01> { [ a, A, aacute, Aacute ] };
+ key <AC02> { [ o, O, oacute, Oacute ] };
+ key <AC03> { [ e, E, ecaron, Ecaron ] };
+ key <AC04> { [ u, U, uring, Uring ] };
+ key <AC05> { [ i, I, iacute, Iacute ] };
+ key <AC06> { [ d, D, dcaron, Dcaron ] };
+ key <AC08> { [ t, T, tcaron, Tcaron ] };
+ key <AC09> { [ n, N, ncaron, Ncaron ] };
+ key <AC10> { [ s, S, scaron, Scaron ] };
+
+ key <AD05> { [ y, Y, yacute, Yacute ] };
+ key <AD08> { [ c, C, ccaron, Ccaron ] };
+ key <AD09> { [ r, R, rcaron, Rcaron ] };
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/de b/xorg-server/xkeyboard-config/symbols/de
index e597dcf3b..cfe803afb 100644
--- a/xorg-server/xkeyboard-config/symbols/de
+++ b/xorg-server/xkeyboard-config/symbols/de
@@ -1,600 +1,596 @@
-
-// based on a keyboard map from an 'xkb/symbols/de' file
-//
-// $XKeyboardConfig$
-// $XFree86: xc/programs/xkbcomp/symbols/de,v 1.6 2003/09/08 13:12:51 pascal Exp $
-
-default
-xkb_symbols "basic" {
-
- include "latin(type4)"
-
- name[Group1]="Germany";
-
- key <AE02> { [ 2, quotedbl, twosuperior, oneeighth ] };
- key <AE03> { [ 3, section, threesuperior, sterling ] };
- key <AE04> { [ 4, dollar, onequarter, currency ] };
-
- key <AE11> {type[Group1]="FOUR_LEVEL_PLUS_LOCK", symbols[Group1]=
- [ssharp, question, backslash, questiondown, 0x1001E9E ]};
-// The unicode capital letter sharp s U+1E9E is transformed to "SS"
-// to match the rules for capitalizing sharp s in german.
-// If the capital sharp s is needed, delete the line
-// starting with <U1E9C> from /usr/share/X11/locale/iso8859-15/Compose.
-// If both doubled S and capital sharp s are needed, use 0x1001E9E
-// for capital sharp s and some free unicode codepoint like 0x1001E9C
-// for doubled S. Don`t forget to change this in the Compose file, too.
-
- key <AE12> { [dead_acute, dead_grave, dead_cedilla, dead_ogonek ] };
-
- key <AD03> { [ e, E, EuroSign, EuroSign ] };
- key <AD06> { [ z, Z, leftarrow, yen ] };
- key <AD11> { [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] };
- key <AD12> { [ plus, asterisk, dead_tilde, dead_macron ] };
-
- key <AC02> { [ s, S, U017F, U1E9E ] };
- key <AC07> { [ j, J, dead_belowdot, dead_abovedot ] };
- key <AC10> { [odiaeresis, Odiaeresis, dead_doubleacute, dead_belowdot ] };
- key <AC11> { [adiaeresis, Adiaeresis, dead_circumflex, dead_caron ] };
- key <TLDE> { [dead_circumflex, degree, U2032, U2033 ] };
-
- key <BKSL> { [numbersign, apostrophe, rightsinglequotemark, dead_breve ] };
- key <AB01> { [ y, Y, guillemotright, U203A ] };
- key <AB02> { [ x, X, guillemotleft, U2039 ] };
- key <AB04> { [ v, V, doublelowquotemark, singlelowquotemark ] };
- key <AB05> { [ b, B, leftdoublequotemark, leftsinglequotemark ] };
- key <AB06> { [ n, N, rightdoublequotemark, rightsinglequotemark ] };
- key <AB08> { [ comma, semicolon, periodcentered, multiply ] };
- key <AB09> { [ period, colon, U2026, division ] };
- key <AB10> { [ minus, underscore, endash, emdash ] };
-
- include "kpdl(comma)"
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
-
- // modify the basic German layout to not have any dead keys
-
- include "de(basic)"
- name[Group1]="Germany - Eliminate dead keys";
-
- key <TLDE> { [asciicircum, degree, notsign, notsign ] };
- key <AE12> { [ acute, grave, cedilla, cedilla ] };
- key <AD11> { [udiaeresis, Udiaeresis, diaeresis, diaeresis ] };
- key <AD12> { [ plus, asterisk, asciitilde, macron ] };
- key <AC10> { [odiaeresis, Odiaeresis, doubleacute, doubleacute ] };
- key <AC11> { [adiaeresis, Adiaeresis, asciicircum, asciicircum ] };
- key <BKSL> { [numbersign, apostrophe, grave, grave ] };
- key <AB10> { [ minus, underscore, dead_belowdot, abovedot ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "deadgraveacute" {
- // modify the basic German layout to have only acute and grave
- // as dead keys (tilde and circumflex are needed as spacing characters
- // in many programming languages)
-
- include "de(basic)"
- name[Group1]="Germany - Dead grave acute";
-
- key <TLDE> { [asciicircum, degree, notsign, notsign ] };
- key <AD12> { [ plus, asterisk, asciitilde, dead_macron ] };
- key <BKSL> { [numbersign, apostrophe, grave, grave ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "deadacute" {
- // modify the basic German layout to have only acute as
- // dead keys (ASCII grave, tilde and circumflex are needed as
- // spacing characters in many programming languages and text formatters)
-
- include "de(deadgraveacute)"
-
- name[Group1]="Germany - Dead acute";
-
- key <AE12> { [dead_acute, grave, dead_cedilla, dead_ogonek ] };
- key <BKSL> { [numbersign, apostrophe, dead_grave, dead_grave ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "ro" {
- // add romanian-specific letters to the basic German layout.
- // Romanian symbols are accessible with combination of <AltGr> and
- // 'a', 's', 't', 'i', 'ä (&auml)' (+<Shift> for capital letters).
- // To view romanian-specific symbols, add "export LC_CTYPE=ro_RO"
- // or "export LC_CTYPE=de_DE.utf8" to your .profile.
-
- include "de(basic)"
-
- name[Group1]="Germany - Romanian keyboard with German letters";
-
- key <AD05> { [ t, T, tcedilla, Tcedilla ] };
- key <AD08> { [ i, I, icircumflex, Icircumflex ] };
- key <AC01> { [ a, A, acircumflex, Acircumflex ] };
- key <AC02> { [ s, S, scedilla, Scedilla ] };
- key <AC11> { [ adiaeresis, Adiaeresis, abreve, Abreve ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "ro_nodeadkeys" {
- // add romanian-specific letters to the German nodeadkeys layout.
- // Read the comment for de_ro !
-
- include "de(nodeadkeys)"
- name[Group1]="Germany - Romanian keyboard with German letters, eliminate dead keys";
-
- key <AD05> { [ t, T, tcedilla, Tcedilla ] };
- key <AD08> { [ i, I, icircumflex, Icircumflex ] };
- key <AC01> { [ a, A, acircumflex, Acircumflex ] };
- key <AC02> { [ s, S, scedilla, Scedilla ] };
- key <AC11> { [ adiaeresis, Adiaeresis, abreve, Abreve ] };
-};
-
-// German Dvorak keymap by Thorsten Staerk (www.staerk.de/thorsten)
-// Have acute and grave as dead keys, tilde and circumflex alive as they are needed
-// in many programming languages.
-// to use this keymap, use a 105-key-keyboard and the command setxkbmap -model pc105 -layout dvorak -variant de
-// source: http://www-lehre.informatik.uni-osnabrueck.de/~rfreund/dvorak.php
-partial alphanumeric_keys
-xkb_symbols "dvorak" {
- include "us(dvorak)"
-
- name[Group1]="Germany - Dvorak";
-
- key <TLDE> { [ asciicircum, degree ] };
-
- key <AE01> { [ 1, exclam, onesuperior ] };
- key <AE02> { [ 2, quotedbl, twosuperior ] };
- key <AE03> { [ 3, section, threesuperior ] };
- key <AE04> { [ 4, dollar, bar ] };
- key <AE05> { [ 5, percent, bar ] };
- key <AE06> { [ 6, ampersand, brokenbar ] };
- key <AE07> { [ 7, slash, braceleft ] };
- key <AE08> { [ 8, parenleft, bracketleft ] };
- key <AE09> { [ 9, parenright, bracketright ] };
- key <AE10> { [ 0, equal, braceright ] };
- key <AE11> { [ plus, asterisk, asciitilde ] };
- key <AE12> { [ less, greater, dead_grave ] };
-
- key <AD01> { [ udiaeresis, Udiaeresis, at ] };
- key <AD02> { [ comma, semicolon, dead_diaeresis ] };
- key <AD03> { [ period, colon ] };
- key <AD08> { [ c, C, copyright, Cacute ] };
- key <AD09> { [ t, T, trademark ] };
- key <AD10> { [ z, Z, zabovedot, Zabovedot ] };
- key <AD11> { [ question, ssharp ] };
- key <AD12> { [ slash, backslash, dead_acute ] };
-
- key <AC01> { [ a, A, at, aogonek ] };
- key <AC02> { [ o, O, oacute, Oacute ] };
- key <AC03> { [ e, E, EuroSign, eogonek ] };
- key <AC04> { [ i, I ] };
- key <AC05> { [ u, U ] };
- key <AC06> { [ h, H ] };
- key <AC07> { [ d, D ] };
- key <AC08> { [ r, R, registered ] };
- key <AC09> { [ n, N, nacute, Nacute ] };
- key <AC10> { [ s, S, sacute, Sacute] };
- key <AC11> { [ l, L, lstroke, Lstroke ] };
-
- key <AB01> { [ odiaeresis, Odiaeresis ] };
- key <AB02> { [ q, Q, at ] };
- key <AB07> { [ m, M, mu ] };
- key <AB10> { [ numbersign, apostrophe ] };
-
- key <BKSL> { [ minus, underscore, hyphen, diaeresis] };
-
- key <LSGT> { [ adiaeresis, Adiaeresis, bar ] };
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "Sundeadkeys" {
-
- // For naming consistency
-
- include "de(basic)"
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "sundeadkeys" {
-
- // For naming consistency
-
- include "de(Sundeadkeys)"
-
- name[Group1]="Germany - Sun dead keys";
-};
-
-
-// German Neo-Layout Version 2
-// adopted 2004 by Hanno Behrens <Hanno.Behrens@gmx.de>
-// inspired by Dvorak/de-ergo http://www.goebel-consult.de/de-ergo/
-//
-// Authors:
-// Stephan Hilb <stephan at ehilb dot de>
-// <lucky at zankt dot net>
-// Benjamin Kellermann <Benjamin dot Kellermann at gmx dot Germany>
-// Erik Streb <mail at erikstreb dot de>
-// and many other contributors
-//
-// http://www.neo-layout.org
-//
-// $Revision$, $Date$
-
-partial alphanumeric_keys modifier_keys keypad_keys
-xkb_symbols "neo_base" {
-
- // Levels in Neo jargon
- // --------------------------------------------------------------
- // Ebene 1: normal
- // Ebene 2: Shift
- // Ebene 3: Mod3
- // Ebene 4: Mod4 (for marking something use Shift + Mod4)
- // Ebene 5: Shift + Mod3
- // Ebene 6: Mod3 + Mod4
- // Compose (not a level): Mod3 + Tab
- // Feststelltaste (Capslock): Shift + Shift
- // Mod4-Lock: Mod4 + Mod4
- // Mod4-Lock: Shift + Mod3 + Tab
-
- // Legend
- // ===============
- // Levels in Xkbmap jargon to be found here in the definitions.
- // These are the levels used, and Xorg's translations:
- // --------------------------------------------------------------
- // Xorg: Level1 Level2 Level3 Level4 Level5 Level6 Level7 Level8
- // Neo: Ebene1 Ebene2 Ebene3 Ebene5 Ebene4 Pseudo-Ebene Ebene6 ???
- // Keys (Neo): None Shift Mod3 Mod3 + Shift Mod4 Mod4 + Shift Mod3 + Mod4 Mod3 + Mod4 + Shift
-
-
- // Alphanumeric-keys
- // ===============
- key.type[Group1] = "EIGHT_LEVEL";
-
- // Tab as Multi_key (Compose)
- // --------------------------------------------------------------
- key <TAB> { [ Tab, ISO_Left_Tab, Multi_key, ISO_Level5_Lock, NoSymbol, NoSymbol, NoSymbol, ISO_Level5_Lock ] };
-
-
- // Number row
- // --------------------------------------------------------------
- key <TLDE> { [ dead_circumflex, dead_caron, U21BB, U02DE, dead_abovedot, Pointer_EnableKeys, dead_belowdot, NoSymbol ] };
-
- key <AE01> { [ 1, degree, onesuperior, onesubscript, ordfeminine, NoSymbol, notsign, NoSymbol ] };
- key <AE02> { [ 2, section, twosuperior, twosubscript, masculine, NoSymbol, logicalor, NoSymbol ] };
- key <AE03> { [ 3, U2113, threesuperior, threesubscript, numerosign, NoSymbol, logicaland, NoSymbol ] };
- key <AE04> { [ 4, guillemotright, U203A, femalesymbol, NoSymbol, NoSymbol, U22A5, NoSymbol ] };
- key <AE05> { [ 5, guillemotleft, U2039, malesymbol, periodcentered, NoSymbol, U2221, NoSymbol ] };
- key <AE06> { [ 6, dollar, cent, U26A5, sterling, NoSymbol, U2225, NoSymbol ] };
-
- key <AE07> { [ 7, EuroSign, yen, U03F0, currency, NoSymbol, rightarrow, NoSymbol ] };
- key <AE08> { [ 8, doublelowquotemark, singlelowquotemark, U27E8, Tab, ISO_Left_Tab, U221E, NoSymbol ] };
- key <AE09> { [ 9, leftdoublequotemark, leftsinglequotemark, U27E9, KP_Divide, KP_Divide, variation, NoSymbol ] };
- key <AE10> { [ 0, rightdoublequotemark, rightsinglequotemark, zerosubscript, KP_Multiply, KP_Multiply, emptyset, NoSymbol ] };
-
- key <AE11> { [ minus, emdash, NoSymbol, U2011, KP_Subtract, KP_Subtract, hyphen, NoSymbol ] };
- key <AE12> { [ dead_grave, dead_cedilla, dead_abovering, dead_dasia, dead_diaeresis, NoSymbol, dead_macron, NoSymbol ] };
-
- // Top row
- // --------------------------------------------------------------
- key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC";
- key <AD01> { [ x, X, ellipsis, Greek_xi, Prior, Prior, Greek_XI, NoSymbol ] };
- key <AD02> { [ v, V, underscore, NoSymbol, BackSpace, BackSpace, radical, NoSymbol ] };
- key <AD03> { [ l, L, bracketleft, Greek_lambda, Up, Up, Greek_LAMBDA, NoSymbol ] };
- key <AD04> { [ c, C, bracketright, Greek_chi, Delete, Delete, U2102, NoSymbol ] };
- key <AD05> { [ w, W, asciicircum, Greek_omega, Next, Next, Greek_OMEGA, NoSymbol ] };
-
- key <AD06> { [ k, K, exclam, Greek_kappa, exclamdown, NoSymbol, multiply, NoSymbol ] };
- key <AD07> { [ h, H, less, Greek_psi, KP_7, KP_7, Greek_PSI, NoSymbol ] };
- key <AD08> { [ g, G, greater, Greek_gamma, KP_8, KP_8, Greek_GAMMA, NoSymbol ] };
- key <AD09> { [ f, F, equal, Greek_phi, KP_9, KP_9, Greek_PHI, NoSymbol ] };
- key <AD10> { [ q, Q, ampersand, U03D5, KP_Add, KP_Add, U211A, NoSymbol ] };
-
- key <AD11> { [ ssharp, U1E9E, U017F, Greek_finalsmallsigma, U2212, NoSymbol, jot, NoSymbol ] };
-
- key.type[Group1] = "EIGHT_LEVEL";
- key <AD12> { [ dead_acute, dead_tilde, dead_stroke, dead_psili, dead_doubleacute, NoSymbol, dead_breve, NoSymbol ] };
-
- // Middle row
- // --------------------------------------------------------------
- key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC";
- key <AC01> { [ u, U, backslash, NoSymbol, Home, Home, includedin, NoSymbol ] };
- key <AC02> { [ i, I, slash, Greek_iota, Left, Left, integral, NoSymbol ] };
- key <AC03> { [ a, A, braceleft, Greek_alpha, Down, Down, U2200, NoSymbol ] };
- key <AC04> { [ e, E, braceright, Greek_epsilon, Right, Right, U2203, NoSymbol ] };
- key <AC05> { [ o, O, asterisk, Greek_omicron, End, End, elementof, NoSymbol ] };
-
- key <AC06> { [ s, S, question, Greek_sigma, questiondown, NoSymbol, Greek_SIGMA, NoSymbol ] };
- key <AC07> { [ n, N, parenleft, Greek_nu, KP_4, KP_4, U2115, NoSymbol ] };
- key <AC08> { [ r, R, parenright, Greek_rho, KP_5, KP_5, U211D, NoSymbol ] };
- key <AC09> { [ t, T, minus, Greek_tau, KP_6, KP_6, partialderivative, NoSymbol ] };
- key <AC10> { [ d, D, colon, Greek_delta, KP_Separator, comma, Greek_DELTA, NoSymbol ] };
-
- key <AC11> { [ y, Y, at, Greek_upsilon, period, KP_Decimal, nabla, NoSymbol ] };
-
- // Bottom row
- // --------------------------------------------------------------
- key <AB01> { [ udiaeresis, Udiaeresis, numbersign, NoSymbol, Escape, Escape, union, NoSymbol ] };
- key <AB02> { [ odiaeresis, Odiaeresis, dollar, U03F5, Tab, Tab, intersection, NoSymbol ] };
- key <AB03> { [ adiaeresis, Adiaeresis, bar, Greek_eta, Insert, Insert, U2135, NoSymbol ] };
- key <AB04> { [ p, P, asciitilde, Greek_pi, Return, Return, Greek_PI, NoSymbol ] };
- key <AB05> { [ z, Z, grave, Greek_zeta, Undo, Undo, U2124, NoSymbol ] };
-
- key <AB06> { [ b, B, plus, Greek_beta, colon, NoSymbol, U21D0, NoSymbol ] };
- key <AB07> { [ m, M, percent, Greek_mu, KP_1, KP_1, ifonlyif, NoSymbol ] };
- key.type[Group1] = "EIGHT_LEVEL";
- key <AB08> { [ comma, endash, quotedbl, U03F1, KP_2, KP_2, U21D2, NoSymbol ] };
- key <AB09> { [ period, enfilledcircbullet, apostrophe, U03D1, KP_3, KP_3, U21A6, NoSymbol ] };
- key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC";
- key <AB10> { [ j, J, semicolon, Greek_theta, semicolon, NoSymbol, Greek_THETA, NoSymbol ] };
- key.type[Group1] = "EIGHT_LEVEL";
-
- // Space key
- // --------------------------------------------------------------
- key <SPCE> { [ space, space, space, nobreakspace, KP_0, KP_0, U202F, NoSymbol ] };
-
-
- // Keypad-keys
- // ===============
-
- // The former Numlock key:
- key <NMLK> { [ Tab, ISO_Left_Tab, equal, approxeq, notequal, Pointer_EnableKeys, identical, NoSymbol ] };
-
- // Topmost row
- // --------------------------------------------------------------
- key <KPDV> { [ KP_Divide, KP_Divide, division, U2300, U2215, NoSymbol, U2223, NoSymbol ] };
- key <KPMU> { [ KP_Multiply, KP_Multiply, U2219, U2299, multiply, NoSymbol, U2297, NoSymbol ] };
- key <KPSU> { [ KP_Subtract, KP_Subtract, U2212, U2296, U2216, NoSymbol, U2238, NoSymbol ] };
-
- // Top row
- // --------------------------------------------------------------
- key <KP7> { [ KP_7, U2714, U2195, U226A, KP_Home, KP_Home, upstile, NoSymbol ] };
- key <KP8> { [ KP_8, U2718, uparrow, intersection, KP_Up, KP_Up, U22C2, NoSymbol ] };
- key <KP9> { [ KP_9, dagger, U20D7, U226B, KP_Prior, KP_Prior, U2309, NoSymbol ] };
- key <KPAD> { [ KP_Add, KP_Add, plusminus, U2295, U2213, NoSymbol, U2214, NoSymbol ] };
-
- // Middle row
- // --------------------------------------------------------------
- key <KP4> { [ KP_4, club, leftarrow, includedin, KP_Left, KP_Left, U2286, NoSymbol ] };
- key <KP5> { [ KP_5, EuroSign, colon, U22B6, KP_Begin, KP_Begin, U22B7, NoSymbol ] };
- key <KP6> { [ KP_6, U2023, rightarrow, includes, KP_Right, KP_Right, U2287, NoSymbol ] };
-
- // Bottom row
- // --------------------------------------------------------------
- key <KP1> { [ KP_1, diamond, U2194, lessthanequal, KP_End, KP_End, downstile, NoSymbol ] };
- key <KP2> { [ KP_2, heart, downarrow, union, KP_Down, KP_Down, U22C3, NoSymbol ] };
- key <KP3> { [ KP_3, U2660, U21CC, greaterthanequal, KP_Next, KP_Next, U230B, NoSymbol ] };
- key <KPEN> { [ KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, NoSymbol ] };
- key <KPEQ> { [ KP_Equal, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
-
- // Bottommost row
- // --------------------------------------------------------------
- key <KP0> { [ KP_0, U2423, percent, U2030, KP_Insert, KP_Insert, U25A1, NoSymbol ] };
- key <KPDL> { [ KP_Separator, period, comma, minutes, KP_Delete, KP_Delete, seconds, NoSymbol ] };
-};
-
-partial alphanumeric_keys modifier_keys keypad_keys
-xkb_symbols "neo" {
-
- include "de(neo_base)"
-
- name[Group1]= "Germany - Neo 2";
-
- include "shift(both_capslock)"
- include "level3(caps_switch)"
- include "level3(bksl_switch)"
- include "level5(lsgt_switch)"
- include "level5(ralt_switch)"
-};
-
-// Copied from macintosh_vndr/de
-// olh@suse.de very close to MacOS map
-
-partial alphanumeric_keys
-xkb_symbols "mac" {
-
- include "de"
- name[Group1]= "Germany - Macintosh";
-
- // Alphanumeric section
- key <AE01> { [ 1, exclam, exclamdown, at ] };
- key <AE05> { [ 5, percent, bracketleft ] };
- key <AE06> { [ 6, ampersand, bracketright ] };
- key <AE07> { [ 7, slash, bar, backslash ] };
- key <AE08> { [ 8, parenleft, braceleft, asciitilde ] };
- key <AE09> { [ 9, parenright, braceright ] };
- key <AD01> { [ q, Q, guillemotleft, guillemotright ] };
- key <AD04> { [ r, R, registered ] };
- key <AD07> { [ u, U, diaeresis, Aacute ] };
- key <AD08> { [ i, I, slash, Ucircumflex ] };
- key <AD11> { [ udiaeresis, Udiaeresis, periodcentered, degree ] };
- key <AD12> { [ plus, asterisk, asciitilde ] };
- key <AC01> { [ a, A, aring, Aring ] };
- key <AC05> { [ g, G, copyright ] };
- key <AC06> { [ h, H, ordfeminine ] };
- key <AC09> { [ l, L, at ] };
- key <AC10> { [ odiaeresis, Odiaeresis, dead_acute ] };
- key <AB06> { [ n, N, asciitilde ] };
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "mac_nodeadkeys" {
- // modify the standard German mac layout to not have any dead keys
- include "de(mac)"
- name[Group1]= "Germany - Macintosh, eliminate dead keys";
- key <AE04> { [ 4, dollar, onequarter, currency ] };
-
- key <TLDE> { [ asciicircum, degree, notsign ] };
- key <AE12> { [ acute, grave, cedilla ] };
- key <AD11> { [ udiaeresis, Udiaeresis, diaeresis ] };
- key <AD12> { [ plus, asterisk, asciitilde, macron ] };
- key <AC10> { [ odiaeresis, Odiaeresis, acute ] };
- key <AC11> { [ adiaeresis, Adiaeresis, asciicircum ] };
-
- key <BKSL> { [ numbersign, apostrophe, grave ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "dsb"
-{
- name[Group1] = "Germany - Lower Sorbian";
- include "latin(basic)"
- include "level3(ralt_switch)"
- include "kpdl(comma)"
- key <AB01> { [ z, Z, zcaron, Zcaron ] };
- key <AB02> { [ x, X, zacute, Zacute ] };
- key <AB03> { [ c, C, cacute, Cacute ] };
- key <AB04> { [ v, V, ccaron, Ccaron ] };
- key <AB06> { [ n, N, nacute, Nacute ] };
- key <AC02> { [ s, S, sacute, Sacute ] };
- key <AC03> { [ d, D, scaron, Scaron ] };
- key <AC04> { [ f, F ] };
- key <AD01> { [ q, Q ] };
- key <AD02> { [ w, W ] };
- key <AD03> { [ e, E, ecaron, Ecaron ] };
- key <AD04> { [ r, R, racute, Racute ] };
- key <AD05> { [ t, T, U20B5, EuroSign ] };
- key <AD09> { [ o, O, oacute, Oacute ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "dsb_qwertz"
-{
- name[Group1] = "Germany - Lower Sorbian (qwertz)";
- include "latin(basic)"
- include "level3(ralt_switch)"
- include "kpdl(comma)"
- key <AB01> { [ y, Y ] };
- key <AB02> { [ x, X ] };
- key <AB03> { [ c, C, cacute, Cacute ] };
- key <AB04> { [ v, V, ccaron, Ccaron ] };
- key <AB06> { [ n, N, nacute, Nacute ] };
- key <AC02> { [ s, S, sacute, Sacute ] };
- key <AC03> { [ d, D, scaron, Scaron ] };
- key <AC04> { [ f, F ] };
- key <AD01> { [ q, Q ] };
- key <AD02> { [ w, W ] };
- key <AD03> { [ e, E, ecaron, Ecaron ] };
- key <AD04> { [ r, R, racute, Racute ] };
- key <AD05> { [ t, T, U20B5, EuroSign ] };
- key <AD06> { [ z, Z, zcaron, Zcaron ] };
- key <AD07> { [ u, U, zacute, Zacute ] };
- key <AD09> { [ o, O, oacute, Oacute ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "qwerty" {
-
- // This layout should work exactly as a de with the exception
- // of 'Z' and 'Y' keys, which are in the qwerty style (ie. swapped).
- // 2008 by Matej Košík <kosik@fiit.stuba.sk>
-
- include "de(basic)"
-
- name[Group1] = "Germany - qwerty";
-
- key <AB01> { [ z, Z, leftarrow, yen ] };
- key <AD06> { [ y, Y, guillemotleft, less ] };
-};
-
-// layout for Russian letters on an german keyboard
-// based on US-RU layout by Ivan Popov <pin@konvalo.org> 2005-07-17
-// adopted for german layout by Alexey Fisher <bug-track@fisher-privat.net> 2010-08-19
-
-partial alphanumeric_keys
-xkb_symbols "ru" {
-
- include "de(basic)"
-
- name[Group1]= "Germany - Russian phonetic";
-
-key.type[group1]="FOUR_LEVEL_ALPHABETIC";
-
- key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
- key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
- key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
- key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
- key <TLDE> { [ Cyrillic_io, Cyrillic_IO, asciitilde ] };
- key <LatX> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <LatI> { [ Cyrillic_i, Cyrillic_I ] };
- key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
- key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
- key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
- key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
- key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
- key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
- key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
- key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
- key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <LatH> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <AC10> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA, plus, asterisk ] };
- key <AE12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
- key <LatY> { [ Cyrillic_yeru, Cyrillic_YERU ] };
- key <LatV> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
- key <AC11> { [ Cyrillic_e, Cyrillic_E ] };
- key <BKSL> { [ Cyrillic_yu, Cyrillic_YU, numbersign, apostrophe ] };
- key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "htcdream" {
- include "inet(htcdream)"
-
- name[Group1]= "Germany - htcdream";
-
- //second row
- key <AD01> { [ q, Q, Tab, Tab ] };
- key <AD02> { [ w, W, grave, grave ] };
- key <AD03> { [ e, E, EuroSign, EuroSign ] };
- key <AD04> { [ r, R, underscore, underscore ] };
- key <AD05> { [ t, T, sterling, sterling] };
- key <AD06> { [ z, Z, division, division ] };
- key <AD07> { [ u, U, udiaeresis, udiaeresis ] };
- key <AD08> { [ i, I, minus, minus ] };
- key <AD09> { [ o, O, odiaeresis, odiaeresis ] };
- key <AD10> { [ p, P, equal, equal ] };
-
- //third row
- key <AC01> { [ a, A, adiaeresis, adiaeresis ] };
- key <AC02> { [ s, S, ssharp, ssharp] };
- key <AC03> { [ d ,D, backslash, backslash ] };
- key <AC04> { [ f, F, braceleft, braceleft ] };
- key <AC05> { [ g, G, braceright, braceright ] };
- key <AC06> { [ h, H, multiply, multiply ] };
- key <AC07> { [ j, J, colon, colon ] };
- key <AC08> { [ k, K, plus, plus ] };
- key <AC09> { [ l, L, apostrophe, apostrophe ] };
-
- //forth row
- key <AB01> { [ y, Y, bar, bar ] };
- key <AB02> { [ x, X, bracketleft, bracketleft ] };
- key <AB03> { [ c, C, bracketright, bracketright ] };
- key <AB04> { [ v, V, less, less ] };
- key <AB05> { [ b, B, greater, greater ] };
- key <AB06> { [ n, N, semicolon, semicolon ] };
- key <AB07> { [ m, M, quotedbl, quotedbl ] };
- key <AB08> { [ comma, comma, question, question ] };
-
- //fifth row
- key <FK15> { [ at, at, asciitilde, asciitilde ] };
-
- include "level3(alt_switch)"
-};
+// based on a keyboard map from an 'xkb/symbols/de' file
+
+default
+xkb_symbols "basic" {
+
+ include "latin(type4)"
+
+ name[Group1]="Germany";
+
+ key <AE02> { [ 2, quotedbl, twosuperior, oneeighth ] };
+ key <AE03> { [ 3, section, threesuperior, sterling ] };
+ key <AE04> { [ 4, dollar, onequarter, currency ] };
+
+ key <AE11> {type[Group1]="FOUR_LEVEL_PLUS_LOCK", symbols[Group1]=
+ [ssharp, question, backslash, questiondown, 0x1001E9E ]};
+// The unicode capital letter sharp s U+1E9E is transformed to "SS"
+// to match the rules for capitalizing sharp s in german.
+// If the capital sharp s is needed, delete the line
+// starting with <U1E9C> from /usr/share/X11/locale/iso8859-15/Compose.
+// If both doubled S and capital sharp s are needed, use 0x1001E9E
+// for capital sharp s and some free unicode codepoint like 0x1001E9C
+// for doubled S. Don`t forget to change this in the Compose file, too.
+
+ key <AE12> { [dead_acute, dead_grave, dead_cedilla, dead_ogonek ] };
+
+ key <AD03> { [ e, E, EuroSign, EuroSign ] };
+ key <AD06> { [ z, Z, leftarrow, yen ] };
+ key <AD11> { [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] };
+ key <AD12> { [ plus, asterisk, dead_tilde, dead_macron ] };
+
+ key <AC02> { [ s, S, U017F, U1E9E ] };
+ key <AC07> { [ j, J, dead_belowdot, dead_abovedot ] };
+ key <AC10> { [odiaeresis, Odiaeresis, dead_doubleacute, dead_belowdot ] };
+ key <AC11> { [adiaeresis, Adiaeresis, dead_circumflex, dead_caron ] };
+ key <TLDE> { [dead_circumflex, degree, U2032, U2033 ] };
+
+ key <BKSL> { [numbersign, apostrophe, rightsinglequotemark, dead_breve ] };
+ key <AB01> { [ y, Y, guillemotright, U203A ] };
+ key <AB02> { [ x, X, guillemotleft, U2039 ] };
+ key <AB04> { [ v, V, doublelowquotemark, singlelowquotemark ] };
+ key <AB05> { [ b, B, leftdoublequotemark, leftsinglequotemark ] };
+ key <AB06> { [ n, N, rightdoublequotemark, rightsinglequotemark ] };
+ key <AB08> { [ comma, semicolon, periodcentered, multiply ] };
+ key <AB09> { [ period, colon, U2026, division ] };
+ key <AB10> { [ minus, underscore, endash, emdash ] };
+
+ include "kpdl(comma)"
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+
+ // modify the basic German layout to not have any dead keys
+
+ include "de(basic)"
+ name[Group1]="Germany - Eliminate dead keys";
+
+ key <TLDE> { [asciicircum, degree, notsign, notsign ] };
+ key <AE12> { [ acute, grave, cedilla, cedilla ] };
+ key <AD11> { [udiaeresis, Udiaeresis, diaeresis, diaeresis ] };
+ key <AD12> { [ plus, asterisk, asciitilde, macron ] };
+ key <AC10> { [odiaeresis, Odiaeresis, doubleacute, doubleacute ] };
+ key <AC11> { [adiaeresis, Adiaeresis, asciicircum, asciicircum ] };
+ key <BKSL> { [numbersign, apostrophe, grave, grave ] };
+ key <AB10> { [ minus, underscore, dead_belowdot, abovedot ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "deadgraveacute" {
+ // modify the basic German layout to have only acute and grave
+ // as dead keys (tilde and circumflex are needed as spacing characters
+ // in many programming languages)
+
+ include "de(basic)"
+ name[Group1]="Germany - Dead grave acute";
+
+ key <TLDE> { [asciicircum, degree, notsign, notsign ] };
+ key <AD12> { [ plus, asterisk, asciitilde, dead_macron ] };
+ key <BKSL> { [numbersign, apostrophe, grave, grave ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "deadacute" {
+ // modify the basic German layout to have only acute as
+ // dead keys (ASCII grave, tilde and circumflex are needed as
+ // spacing characters in many programming languages and text formatters)
+
+ include "de(deadgraveacute)"
+
+ name[Group1]="Germany - Dead acute";
+
+ key <AE12> { [dead_acute, grave, dead_cedilla, dead_ogonek ] };
+ key <BKSL> { [numbersign, apostrophe, dead_grave, dead_grave ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "ro" {
+ // add romanian-specific letters to the basic German layout.
+ // Romanian symbols are accessible with combination of <AltGr> and
+ // 'a', 's', 't', 'i', 'ä (&auml)' (+<Shift> for capital letters).
+ // To view romanian-specific symbols, add "export LC_CTYPE=ro_RO"
+ // or "export LC_CTYPE=de_DE.utf8" to your .profile.
+
+ include "de(basic)"
+
+ name[Group1]="Germany - Romanian keyboard with German letters";
+
+ key <AD05> { [ t, T, tcedilla, Tcedilla ] };
+ key <AD08> { [ i, I, icircumflex, Icircumflex ] };
+ key <AC01> { [ a, A, acircumflex, Acircumflex ] };
+ key <AC02> { [ s, S, scedilla, Scedilla ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, abreve, Abreve ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "ro_nodeadkeys" {
+ // add romanian-specific letters to the German nodeadkeys layout.
+ // Read the comment for de_ro !
+
+ include "de(nodeadkeys)"
+ name[Group1]="Germany - Romanian keyboard with German letters, eliminate dead keys";
+
+ key <AD05> { [ t, T, tcedilla, Tcedilla ] };
+ key <AD08> { [ i, I, icircumflex, Icircumflex ] };
+ key <AC01> { [ a, A, acircumflex, Acircumflex ] };
+ key <AC02> { [ s, S, scedilla, Scedilla ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, abreve, Abreve ] };
+};
+
+// German Dvorak keymap by Thorsten Staerk (www.staerk.de/thorsten)
+// Have acute and grave as dead keys, tilde and circumflex alive as they are needed
+// in many programming languages.
+// to use this keymap, use a 105-key-keyboard and the command setxkbmap -model pc105 -layout dvorak -variant de
+// source: http://www-lehre.informatik.uni-osnabrueck.de/~rfreund/dvorak.php
+partial alphanumeric_keys
+xkb_symbols "dvorak" {
+ include "us(dvorak)"
+
+ name[Group1]="Germany - Dvorak";
+
+ key <TLDE> { [ asciicircum, degree ] };
+
+ key <AE01> { [ 1, exclam, onesuperior ] };
+ key <AE02> { [ 2, quotedbl, twosuperior ] };
+ key <AE03> { [ 3, section, threesuperior ] };
+ key <AE04> { [ 4, dollar, bar ] };
+ key <AE05> { [ 5, percent, bar ] };
+ key <AE06> { [ 6, ampersand, brokenbar ] };
+ key <AE07> { [ 7, slash, braceleft ] };
+ key <AE08> { [ 8, parenleft, bracketleft ] };
+ key <AE09> { [ 9, parenright, bracketright ] };
+ key <AE10> { [ 0, equal, braceright ] };
+ key <AE11> { [ plus, asterisk, asciitilde ] };
+ key <AE12> { [ less, greater, dead_grave ] };
+
+ key <AD01> { [ udiaeresis, Udiaeresis, at ] };
+ key <AD02> { [ comma, semicolon, dead_diaeresis ] };
+ key <AD03> { [ period, colon ] };
+ key <AD08> { [ c, C, copyright, Cacute ] };
+ key <AD09> { [ t, T, trademark ] };
+ key <AD10> { [ z, Z, zabovedot, Zabovedot ] };
+ key <AD11> { [ question, ssharp ] };
+ key <AD12> { [ slash, backslash, dead_acute ] };
+
+ key <AC01> { [ a, A, at, aogonek ] };
+ key <AC02> { [ o, O, oacute, Oacute ] };
+ key <AC03> { [ e, E, EuroSign, eogonek ] };
+ key <AC04> { [ i, I ] };
+ key <AC05> { [ u, U ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ d, D ] };
+ key <AC08> { [ r, R, registered ] };
+ key <AC09> { [ n, N, nacute, Nacute ] };
+ key <AC10> { [ s, S, sacute, Sacute] };
+ key <AC11> { [ l, L, lstroke, Lstroke ] };
+
+ key <AB01> { [ odiaeresis, Odiaeresis ] };
+ key <AB02> { [ q, Q, at ] };
+ key <AB07> { [ m, M, mu ] };
+ key <AB10> { [ numbersign, apostrophe ] };
+
+ key <BKSL> { [ minus, underscore, hyphen, diaeresis] };
+
+ key <LSGT> { [ adiaeresis, Adiaeresis, bar ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "Sundeadkeys" {
+
+ // For naming consistency
+
+ include "de(basic)"
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "sundeadkeys" {
+
+ // For naming consistency
+
+ include "de(Sundeadkeys)"
+
+ name[Group1]="Germany - Sun dead keys";
+};
+
+
+// German Neo-Layout Version 2
+// adopted 2004 by Hanno Behrens <Hanno.Behrens@gmx.de>
+// inspired by Dvorak/de-ergo http://www.goebel-consult.de/de-ergo/
+//
+// Authors:
+// Stephan Hilb <stephan at ehilb dot de>
+// <lucky at zankt dot net>
+// Benjamin Kellermann <Benjamin dot Kellermann at gmx dot Germany>
+// Erik Streb <mail at erikstreb dot de>
+// and many other contributors
+//
+// http://www.neo-layout.org
+//
+// $Revision$, $Date$
+
+partial alphanumeric_keys modifier_keys keypad_keys
+xkb_symbols "neo_base" {
+
+ // Levels in Neo jargon
+ // --------------------------------------------------------------
+ // Ebene 1: normal
+ // Ebene 2: Shift
+ // Ebene 3: Mod3
+ // Ebene 4: Mod4 (for marking something use Shift + Mod4)
+ // Ebene 5: Shift + Mod3
+ // Ebene 6: Mod3 + Mod4
+ // Compose (not a level): Mod3 + Tab
+ // Feststelltaste (Capslock): Shift + Shift
+ // Mod4-Lock: Mod4 + Mod4
+ // Mod4-Lock: Shift + Mod3 + Tab
+
+ // Legend
+ // ===============
+ // Levels in Xkbmap jargon to be found here in the definitions.
+ // These are the levels used, and Xorg's translations:
+ // --------------------------------------------------------------
+ // Xorg: Level1 Level2 Level3 Level4 Level5 Level6 Level7 Level8
+ // Neo: Ebene1 Ebene2 Ebene3 Ebene5 Ebene4 Pseudo-Ebene Ebene6 ???
+ // Keys (Neo): None Shift Mod3 Mod3 + Shift Mod4 Mod4 + Shift Mod3 + Mod4 Mod3 + Mod4 + Shift
+
+
+ // Alphanumeric-keys
+ // ===============
+ key.type[Group1] = "EIGHT_LEVEL";
+
+ // Tab as Multi_key (Compose)
+ // --------------------------------------------------------------
+ key <TAB> { [ Tab, ISO_Left_Tab, Multi_key, ISO_Level5_Lock, NoSymbol, NoSymbol, NoSymbol, ISO_Level5_Lock ] };
+
+
+ // Number row
+ // --------------------------------------------------------------
+ key <TLDE> { [ dead_circumflex, dead_caron, U21BB, U02DE, dead_abovedot, Pointer_EnableKeys, dead_belowdot, NoSymbol ] };
+
+ key <AE01> { [ 1, degree, onesuperior, onesubscript, ordfeminine, NoSymbol, notsign, NoSymbol ] };
+ key <AE02> { [ 2, section, twosuperior, twosubscript, masculine, NoSymbol, logicalor, NoSymbol ] };
+ key <AE03> { [ 3, U2113, threesuperior, threesubscript, numerosign, NoSymbol, logicaland, NoSymbol ] };
+ key <AE04> { [ 4, guillemotright, U203A, femalesymbol, NoSymbol, NoSymbol, U22A5, NoSymbol ] };
+ key <AE05> { [ 5, guillemotleft, U2039, malesymbol, periodcentered, NoSymbol, U2221, NoSymbol ] };
+ key <AE06> { [ 6, dollar, cent, U26A5, sterling, NoSymbol, U2225, NoSymbol ] };
+
+ key <AE07> { [ 7, EuroSign, yen, U03F0, currency, NoSymbol, rightarrow, NoSymbol ] };
+ key <AE08> { [ 8, doublelowquotemark, singlelowquotemark, U27E8, Tab, ISO_Left_Tab, U221E, NoSymbol ] };
+ key <AE09> { [ 9, leftdoublequotemark, leftsinglequotemark, U27E9, KP_Divide, KP_Divide, variation, NoSymbol ] };
+ key <AE10> { [ 0, rightdoublequotemark, rightsinglequotemark, zerosubscript, KP_Multiply, KP_Multiply, emptyset, NoSymbol ] };
+
+ key <AE11> { [ minus, emdash, NoSymbol, U2011, KP_Subtract, KP_Subtract, hyphen, NoSymbol ] };
+ key <AE12> { [ dead_grave, dead_cedilla, dead_abovering, dead_dasia, dead_diaeresis, NoSymbol, dead_macron, NoSymbol ] };
+
+ // Top row
+ // --------------------------------------------------------------
+ key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC";
+ key <AD01> { [ x, X, ellipsis, Greek_xi, Prior, Prior, Greek_XI, NoSymbol ] };
+ key <AD02> { [ v, V, underscore, NoSymbol, BackSpace, BackSpace, radical, NoSymbol ] };
+ key <AD03> { [ l, L, bracketleft, Greek_lambda, Up, Up, Greek_LAMBDA, NoSymbol ] };
+ key <AD04> { [ c, C, bracketright, Greek_chi, Delete, Delete, U2102, NoSymbol ] };
+ key <AD05> { [ w, W, asciicircum, Greek_omega, Next, Next, Greek_OMEGA, NoSymbol ] };
+
+ key <AD06> { [ k, K, exclam, Greek_kappa, exclamdown, NoSymbol, multiply, NoSymbol ] };
+ key <AD07> { [ h, H, less, Greek_psi, KP_7, KP_7, Greek_PSI, NoSymbol ] };
+ key <AD08> { [ g, G, greater, Greek_gamma, KP_8, KP_8, Greek_GAMMA, NoSymbol ] };
+ key <AD09> { [ f, F, equal, Greek_phi, KP_9, KP_9, Greek_PHI, NoSymbol ] };
+ key <AD10> { [ q, Q, ampersand, U03D5, KP_Add, KP_Add, U211A, NoSymbol ] };
+
+ key <AD11> { [ ssharp, U1E9E, U017F, Greek_finalsmallsigma, U2212, NoSymbol, jot, NoSymbol ] };
+
+ key.type[Group1] = "EIGHT_LEVEL";
+ key <AD12> { [ dead_acute, dead_tilde, dead_stroke, dead_psili, dead_doubleacute, NoSymbol, dead_breve, NoSymbol ] };
+
+ // Middle row
+ // --------------------------------------------------------------
+ key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC";
+ key <AC01> { [ u, U, backslash, NoSymbol, Home, Home, includedin, NoSymbol ] };
+ key <AC02> { [ i, I, slash, Greek_iota, Left, Left, integral, NoSymbol ] };
+ key <AC03> { [ a, A, braceleft, Greek_alpha, Down, Down, U2200, NoSymbol ] };
+ key <AC04> { [ e, E, braceright, Greek_epsilon, Right, Right, U2203, NoSymbol ] };
+ key <AC05> { [ o, O, asterisk, Greek_omicron, End, End, elementof, NoSymbol ] };
+
+ key <AC06> { [ s, S, question, Greek_sigma, questiondown, NoSymbol, Greek_SIGMA, NoSymbol ] };
+ key <AC07> { [ n, N, parenleft, Greek_nu, KP_4, KP_4, U2115, NoSymbol ] };
+ key <AC08> { [ r, R, parenright, Greek_rho, KP_5, KP_5, U211D, NoSymbol ] };
+ key <AC09> { [ t, T, minus, Greek_tau, KP_6, KP_6, partialderivative, NoSymbol ] };
+ key <AC10> { [ d, D, colon, Greek_delta, KP_Separator, comma, Greek_DELTA, NoSymbol ] };
+
+ key <AC11> { [ y, Y, at, Greek_upsilon, period, KP_Decimal, nabla, NoSymbol ] };
+
+ // Bottom row
+ // --------------------------------------------------------------
+ key <AB01> { [ udiaeresis, Udiaeresis, numbersign, NoSymbol, Escape, Escape, union, NoSymbol ] };
+ key <AB02> { [ odiaeresis, Odiaeresis, dollar, U03F5, Tab, Tab, intersection, NoSymbol ] };
+ key <AB03> { [ adiaeresis, Adiaeresis, bar, Greek_eta, Insert, Insert, U2135, NoSymbol ] };
+ key <AB04> { [ p, P, asciitilde, Greek_pi, Return, Return, Greek_PI, NoSymbol ] };
+ key <AB05> { [ z, Z, grave, Greek_zeta, Undo, Undo, U2124, NoSymbol ] };
+
+ key <AB06> { [ b, B, plus, Greek_beta, colon, NoSymbol, U21D0, NoSymbol ] };
+ key <AB07> { [ m, M, percent, Greek_mu, KP_1, KP_1, ifonlyif, NoSymbol ] };
+ key.type[Group1] = "EIGHT_LEVEL";
+ key <AB08> { [ comma, endash, quotedbl, U03F1, KP_2, KP_2, U21D2, NoSymbol ] };
+ key <AB09> { [ period, enfilledcircbullet, apostrophe, U03D1, KP_3, KP_3, U21A6, NoSymbol ] };
+ key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC";
+ key <AB10> { [ j, J, semicolon, Greek_theta, semicolon, NoSymbol, Greek_THETA, NoSymbol ] };
+ key.type[Group1] = "EIGHT_LEVEL";
+
+ // Space key
+ // --------------------------------------------------------------
+ key <SPCE> { [ space, space, space, nobreakspace, KP_0, KP_0, U202F, NoSymbol ] };
+
+
+ // Keypad-keys
+ // ===============
+
+ // The former Numlock key:
+ key <NMLK> { [ Tab, ISO_Left_Tab, equal, approxeq, notequal, Pointer_EnableKeys, identical, NoSymbol ] };
+
+ // Topmost row
+ // --------------------------------------------------------------
+ key <KPDV> { [ KP_Divide, KP_Divide, division, U2300, U2215, NoSymbol, U2223, NoSymbol ] };
+ key <KPMU> { [ KP_Multiply, KP_Multiply, U2219, U2299, multiply, NoSymbol, U2297, NoSymbol ] };
+ key <KPSU> { [ KP_Subtract, KP_Subtract, U2212, U2296, U2216, NoSymbol, U2238, NoSymbol ] };
+
+ // Top row
+ // --------------------------------------------------------------
+ key <KP7> { [ KP_7, U2714, U2195, U226A, KP_Home, KP_Home, upstile, NoSymbol ] };
+ key <KP8> { [ KP_8, U2718, uparrow, intersection, KP_Up, KP_Up, U22C2, NoSymbol ] };
+ key <KP9> { [ KP_9, dagger, U20D7, U226B, KP_Prior, KP_Prior, U2309, NoSymbol ] };
+ key <KPAD> { [ KP_Add, KP_Add, plusminus, U2295, U2213, NoSymbol, U2214, NoSymbol ] };
+
+ // Middle row
+ // --------------------------------------------------------------
+ key <KP4> { [ KP_4, club, leftarrow, includedin, KP_Left, KP_Left, U2286, NoSymbol ] };
+ key <KP5> { [ KP_5, EuroSign, colon, U22B6, KP_Begin, KP_Begin, U22B7, NoSymbol ] };
+ key <KP6> { [ KP_6, U2023, rightarrow, includes, KP_Right, KP_Right, U2287, NoSymbol ] };
+
+ // Bottom row
+ // --------------------------------------------------------------
+ key <KP1> { [ KP_1, diamond, U2194, lessthanequal, KP_End, KP_End, downstile, NoSymbol ] };
+ key <KP2> { [ KP_2, heart, downarrow, union, KP_Down, KP_Down, U22C3, NoSymbol ] };
+ key <KP3> { [ KP_3, U2660, U21CC, greaterthanequal, KP_Next, KP_Next, U230B, NoSymbol ] };
+ key <KPEN> { [ KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, NoSymbol ] };
+ key <KPEQ> { [ KP_Equal, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
+
+ // Bottommost row
+ // --------------------------------------------------------------
+ key <KP0> { [ KP_0, U2423, percent, U2030, KP_Insert, KP_Insert, U25A1, NoSymbol ] };
+ key <KPDL> { [ KP_Separator, period, comma, minutes, KP_Delete, KP_Delete, seconds, NoSymbol ] };
+};
+
+partial alphanumeric_keys modifier_keys keypad_keys
+xkb_symbols "neo" {
+
+ include "de(neo_base)"
+
+ name[Group1]= "Germany - Neo 2";
+
+ include "shift(both_capslock)"
+ include "level3(caps_switch)"
+ include "level3(bksl_switch)"
+ include "level5(lsgt_switch)"
+ include "level5(ralt_switch)"
+};
+
+// Copied from macintosh_vndr/de
+// olh@suse.de very close to MacOS map
+
+partial alphanumeric_keys
+xkb_symbols "mac" {
+
+ include "de"
+ name[Group1]= "Germany - Macintosh";
+
+ // Alphanumeric section
+ key <AE01> { [ 1, exclam, exclamdown, at ] };
+ key <AE05> { [ 5, percent, bracketleft ] };
+ key <AE06> { [ 6, ampersand, bracketright ] };
+ key <AE07> { [ 7, slash, bar, backslash ] };
+ key <AE08> { [ 8, parenleft, braceleft, asciitilde ] };
+ key <AE09> { [ 9, parenright, braceright ] };
+ key <AD01> { [ q, Q, guillemotleft, guillemotright ] };
+ key <AD04> { [ r, R, registered ] };
+ key <AD07> { [ u, U, diaeresis, Aacute ] };
+ key <AD08> { [ i, I, slash, Ucircumflex ] };
+ key <AD11> { [ udiaeresis, Udiaeresis, periodcentered, degree ] };
+ key <AD12> { [ plus, asterisk, asciitilde ] };
+ key <AC01> { [ a, A, aring, Aring ] };
+ key <AC05> { [ g, G, copyright ] };
+ key <AC06> { [ h, H, ordfeminine ] };
+ key <AC09> { [ l, L, at ] };
+ key <AC10> { [ odiaeresis, Odiaeresis, dead_acute ] };
+ key <AB06> { [ n, N, asciitilde ] };
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "mac_nodeadkeys" {
+ // modify the standard German mac layout to not have any dead keys
+ include "de(mac)"
+ name[Group1]= "Germany - Macintosh, eliminate dead keys";
+ key <AE04> { [ 4, dollar, onequarter, currency ] };
+
+ key <TLDE> { [ asciicircum, degree, notsign ] };
+ key <AE12> { [ acute, grave, cedilla ] };
+ key <AD11> { [ udiaeresis, Udiaeresis, diaeresis ] };
+ key <AD12> { [ plus, asterisk, asciitilde, macron ] };
+ key <AC10> { [ odiaeresis, Odiaeresis, acute ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, asciicircum ] };
+
+ key <BKSL> { [ numbersign, apostrophe, grave ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "dsb"
+{
+ name[Group1] = "Germany - Lower Sorbian";
+ include "latin(basic)"
+ include "level3(ralt_switch)"
+ include "kpdl(comma)"
+ key <AB01> { [ z, Z, zcaron, Zcaron ] };
+ key <AB02> { [ x, X, zacute, Zacute ] };
+ key <AB03> { [ c, C, cacute, Cacute ] };
+ key <AB04> { [ v, V, ccaron, Ccaron ] };
+ key <AB06> { [ n, N, nacute, Nacute ] };
+ key <AC02> { [ s, S, sacute, Sacute ] };
+ key <AC03> { [ d, D, scaron, Scaron ] };
+ key <AC04> { [ f, F ] };
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E, ecaron, Ecaron ] };
+ key <AD04> { [ r, R, racute, Racute ] };
+ key <AD05> { [ t, T, U20B5, EuroSign ] };
+ key <AD09> { [ o, O, oacute, Oacute ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "dsb_qwertz"
+{
+ name[Group1] = "Germany - Lower Sorbian (qwertz)";
+ include "latin(basic)"
+ include "level3(ralt_switch)"
+ include "kpdl(comma)"
+ key <AB01> { [ y, Y ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C, cacute, Cacute ] };
+ key <AB04> { [ v, V, ccaron, Ccaron ] };
+ key <AB06> { [ n, N, nacute, Nacute ] };
+ key <AC02> { [ s, S, sacute, Sacute ] };
+ key <AC03> { [ d, D, scaron, Scaron ] };
+ key <AC04> { [ f, F ] };
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E, ecaron, Ecaron ] };
+ key <AD04> { [ r, R, racute, Racute ] };
+ key <AD05> { [ t, T, U20B5, EuroSign ] };
+ key <AD06> { [ z, Z, zcaron, Zcaron ] };
+ key <AD07> { [ u, U, zacute, Zacute ] };
+ key <AD09> { [ o, O, oacute, Oacute ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "qwerty" {
+
+ // This layout should work exactly as a de with the exception
+ // of 'Z' and 'Y' keys, which are in the qwerty style (ie. swapped).
+ // 2008 by Matej Košík <kosik@fiit.stuba.sk>
+
+ include "de(basic)"
+
+ name[Group1] = "Germany - qwerty";
+
+ key <AB01> { [ z, Z, leftarrow, yen ] };
+ key <AD06> { [ y, Y, guillemotleft, less ] };
+};
+
+// layout for Russian letters on an german keyboard
+// based on US-RU layout by Ivan Popov <pin@konvalo.org> 2005-07-17
+// adopted for german layout by Alexey Fisher <bug-track@fisher-privat.net> 2010-08-19
+
+partial alphanumeric_keys
+xkb_symbols "ru" {
+
+ include "de(basic)"
+
+ name[Group1]= "Germany - Russian phonetic";
+
+key.type[group1]="FOUR_LEVEL_ALPHABETIC";
+
+ key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
+ key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <TLDE> { [ Cyrillic_io, Cyrillic_IO, asciitilde ] };
+ key <LatX> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <LatI> { [ Cyrillic_i, Cyrillic_I ] };
+ key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
+ key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
+ key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <LatH> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AC10> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA, plus, asterisk ] };
+ key <AE12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
+ key <LatY> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <LatV> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <AC11> { [ Cyrillic_e, Cyrillic_E ] };
+ key <BKSL> { [ Cyrillic_yu, Cyrillic_YU, numbersign, apostrophe ] };
+ key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "htcdream" {
+ include "inet(htcdream)"
+
+ name[Group1]= "Germany - htcdream";
+
+ //second row
+ key <AD01> { [ q, Q, Tab, Tab ] };
+ key <AD02> { [ w, W, grave, grave ] };
+ key <AD03> { [ e, E, EuroSign, EuroSign ] };
+ key <AD04> { [ r, R, underscore, underscore ] };
+ key <AD05> { [ t, T, sterling, sterling] };
+ key <AD06> { [ z, Z, division, division ] };
+ key <AD07> { [ u, U, udiaeresis, udiaeresis ] };
+ key <AD08> { [ i, I, minus, minus ] };
+ key <AD09> { [ o, O, odiaeresis, odiaeresis ] };
+ key <AD10> { [ p, P, equal, equal ] };
+
+ //third row
+ key <AC01> { [ a, A, adiaeresis, adiaeresis ] };
+ key <AC02> { [ s, S, ssharp, ssharp] };
+ key <AC03> { [ d ,D, backslash, backslash ] };
+ key <AC04> { [ f, F, braceleft, braceleft ] };
+ key <AC05> { [ g, G, braceright, braceright ] };
+ key <AC06> { [ h, H, multiply, multiply ] };
+ key <AC07> { [ j, J, colon, colon ] };
+ key <AC08> { [ k, K, plus, plus ] };
+ key <AC09> { [ l, L, apostrophe, apostrophe ] };
+
+ //forth row
+ key <AB01> { [ y, Y, bar, bar ] };
+ key <AB02> { [ x, X, bracketleft, bracketleft ] };
+ key <AB03> { [ c, C, bracketright, bracketright ] };
+ key <AB04> { [ v, V, less, less ] };
+ key <AB05> { [ b, B, greater, greater ] };
+ key <AB06> { [ n, N, semicolon, semicolon ] };
+ key <AB07> { [ m, M, quotedbl, quotedbl ] };
+ key <AB08> { [ comma, comma, question, question ] };
+
+ //fifth row
+ key <FK15> { [ at, at, asciitilde, asciitilde ] };
+
+ include "level3(alt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/digital_vndr/lk b/xorg-server/xkeyboard-config/symbols/digital_vndr/lk
index 4d311c7e5..82a8c90c6 100644
--- a/xorg-server/xkeyboard-config/symbols/digital_vndr/lk
+++ b/xorg-server/xkeyboard-config/symbols/digital_vndr/lk
@@ -1,131 +1,130 @@
-// $Xorg: lk,v 1.3 2000/08/17 19:54:44 cpqbld Exp $
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//Permission is hereby granted, free of charge, to any person obtaining
-//a copy of this software and associated documentation files (the
-//"Software"), to deal in the Software without restriction, including
-//without limitation the rights to use, copy, modify, merge, publish,
-//distribute, sublicense, and sell copies of the Software, and to
-//permit persons to whom the Software is furnished to do so, subject to
-//the following conditions:
-//
-//The above copyright notice and this permission notice shall be included
-//in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
-//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
-//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of the Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log: lk,v
-// Revision 1.2 1996/06/18 09:10:09 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.2.2 1995/03/10 17:16:52 William_Walker
-// Rename to avoid name conflicts with XKB stuff
-// [1995/03/10 17:10:33 William_Walker]
-//
-// Revision 1.1.2.2 1994/10/31 15:22:00 William_Walker
-// New experimental version.
-// [1994/10/31 14:48:37 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: lk,v Revision: 1.2 (DEC) Date: 1996/01/24 12:14:58
-//
-// Symbols common to all the LK-style keyboards.
-//
-default xkb_symbols "common" {
-
- // Modifier mappings
- modifier_map Shift { Shift_L, Shift_R };
- modifier_map Lock { Caps_Lock };
- modifier_map Control { Control_L, Control_R };
- modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
- modifier_map Mod2 { Num_Lock };
- modifier_map Mod3 { Scroll_Lock };
-
- // Additional alphanumeric keys
- key <LSGT> { [ less, greater ] };
- key <LALT> { [ Alt_L, Meta_L ] };
-
- // "Function" keys
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ Escape, F11 ] };
- key <FK12> { [ F12 ] };
- key <FK13> { [ F13 ] };
- key <FK14> { [ F14 ] };
- key <FK17> { [ F17 ] };
- key <FK18> { [ F18 ] };
- key <FK19> { [ F19 ] };
- key <FK20> { [ F20 ] };
-
- // "Editing" keys
- key <HELP> { [ Help ] };
- key <DO> { [ Menu ] };
- key <FIND> { [ Find ] };
- key <INS> { [ Insert ] };
- key <DELE> { [ Delete ] };
- key <SELE> { [ Select ] };
- key <PGUP> { [ Prior ] };
- key <PGDN> { [ Next ] };
-
- key <UP> { [ Up ] };
- key <LEFT> { [ Left ] };
- key <DOWN> { [ Down ] };
- key <RGHT> { [ Right ] };
-
- // "Keypad" keys
- key <KPF1> {
- type= "SHIFT+ALT",
- symbols[Group1]=[ KP_F1,Pointer_EnableKeys ]
- };
- key <KPF2> { [ KP_F2 ] };
- key <KPF3> { [ KP_F3 ] };
- key <KPF4> { [ KP_F4 ] };
-
- key <KPCO> { [ KP_Separator ] };
- key <KPSU> { [ KP_Subtract ] };
-
- key <KP7> { [ KP_7 ] };
- key <KP8> { [ KP_8 ] };
- key <KP9> { [ KP_9 ] };
-
- key <KP4> { [ KP_4 ] };
- key <KP5> { [ KP_5 ] };
- key <KP6> { [ KP_6 ] };
-
- key <KP1> { [ KP_1 ] };
- key <KP2> { [ KP_2 ] };
- key <KP3> { [ KP_3 ] };
- key <KPEN> { [ KP_Enter ] };
-
- key <KP0> { [ KP_0 ] };
- key <KPDL> { [ KP_Decimal ] };
-};
-
-xkb_symbols "lk401" {
- include "symbols/digital_vndr/lk(common)"
- key <RALT> { [ Alt_R, Meta_R ] };
- key <LCMP> { [ Multi_key ] };
- key <RCMP> { [ Multi_key ] };
-};
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//Permission is hereby granted, free of charge, to any person obtaining
+//a copy of this software and associated documentation files (the
+//"Software"), to deal in the Software without restriction, including
+//without limitation the rights to use, copy, modify, merge, publish,
+//distribute, sublicense, and sell copies of the Software, and to
+//permit persons to whom the Software is furnished to do so, subject to
+//the following conditions:
+//
+//The above copyright notice and this permission notice shall be included
+//in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
+//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of the Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log: lk,v
+// Revision 1.2 1996/06/18 09:10:09 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.2.2 1995/03/10 17:16:52 William_Walker
+// Rename to avoid name conflicts with XKB stuff
+// [1995/03/10 17:10:33 William_Walker]
+//
+// Revision 1.1.2.2 1994/10/31 15:22:00 William_Walker
+// New experimental version.
+// [1994/10/31 14:48:37 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: lk,v Revision: 1.2 (DEC) Date: 1996/01/24 12:14:58
+//
+// Symbols common to all the LK-style keyboards.
+//
+default xkb_symbols "common" {
+
+ // Modifier mappings
+ modifier_map Shift { Shift_L, Shift_R };
+ modifier_map Lock { Caps_Lock };
+ modifier_map Control { Control_L, Control_R };
+ modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
+ modifier_map Mod2 { Num_Lock };
+ modifier_map Mod3 { Scroll_Lock };
+
+ // Additional alphanumeric keys
+ key <LSGT> { [ less, greater ] };
+ key <LALT> { [ Alt_L, Meta_L ] };
+
+ // "Function" keys
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ Escape, F11 ] };
+ key <FK12> { [ F12 ] };
+ key <FK13> { [ F13 ] };
+ key <FK14> { [ F14 ] };
+ key <FK17> { [ F17 ] };
+ key <FK18> { [ F18 ] };
+ key <FK19> { [ F19 ] };
+ key <FK20> { [ F20 ] };
+
+ // "Editing" keys
+ key <HELP> { [ Help ] };
+ key <DO> { [ Menu ] };
+ key <FIND> { [ Find ] };
+ key <INS> { [ Insert ] };
+ key <DELE> { [ Delete ] };
+ key <SELE> { [ Select ] };
+ key <PGUP> { [ Prior ] };
+ key <PGDN> { [ Next ] };
+
+ key <UP> { [ Up ] };
+ key <LEFT> { [ Left ] };
+ key <DOWN> { [ Down ] };
+ key <RGHT> { [ Right ] };
+
+ // "Keypad" keys
+ key <KPF1> {
+ type= "SHIFT+ALT",
+ symbols[Group1]=[ KP_F1,Pointer_EnableKeys ]
+ };
+ key <KPF2> { [ KP_F2 ] };
+ key <KPF3> { [ KP_F3 ] };
+ key <KPF4> { [ KP_F4 ] };
+
+ key <KPCO> { [ KP_Separator ] };
+ key <KPSU> { [ KP_Subtract ] };
+
+ key <KP7> { [ KP_7 ] };
+ key <KP8> { [ KP_8 ] };
+ key <KP9> { [ KP_9 ] };
+
+ key <KP4> { [ KP_4 ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_6 ] };
+
+ key <KP1> { [ KP_1 ] };
+ key <KP2> { [ KP_2 ] };
+ key <KP3> { [ KP_3 ] };
+ key <KPEN> { [ KP_Enter ] };
+
+ key <KP0> { [ KP_0 ] };
+ key <KPDL> { [ KP_Decimal ] };
+};
+
+xkb_symbols "lk401" {
+ include "symbols/digital_vndr/lk(common)"
+ key <RALT> { [ Alt_R, Meta_R ] };
+ key <LCMP> { [ Multi_key ] };
+ key <RCMP> { [ Multi_key ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/digital_vndr/pc b/xorg-server/xkeyboard-config/symbols/digital_vndr/pc
index b1faec03c..b8d1fb2bb 100644
--- a/xorg-server/xkeyboard-config/symbols/digital_vndr/pc
+++ b/xorg-server/xkeyboard-config/symbols/digital_vndr/pc
@@ -1,176 +1,175 @@
-// $Xorg: pc,v 1.3 2000/08/17 19:54:44 cpqbld Exp $
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//Permission is hereby granted, free of charge, to any person obtaining
-//a copy of this software and associated documentation files (the
-//"Software"), to deal in the Software without restriction, including
-//without limitation the rights to use, copy, modify, merge, publish,
-//distribute, sublicense, and sell copies of the Software, and to
-//permit persons to whom the Software is furnished to do so, subject to
-//the following conditions:
-//
-//The above copyright notice and this permission notice shall be included
-//in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
-//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
-//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of the Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log
-// Revision 1.2 1996/06/18 09:10:12 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.6.4 1995/12/19 19:55:58 William_Walker
-// Update to XKB 0.65
-// [1995/12/17 02:37:07 William_Walker]
-//
-// Revision 1.1.6.3 1995/10/25 21:01:09 William_Walker
-// Make sure we use DIN 2137 and VT510 Spec for Group Semantics
-// [1995/10/23 15:49:03 William_Walker]
-//
-// Revision 1.1.6.2 1995/08/07 17:40:40 William_Walker
-// Upgrade XKB to protocol 0.62 (dual submit from decx11)
-// [1995/08/06 14:06:32 William_Walker]
-//
-// Revision 1.1.2.7 1995/08/05 15:25:57 William_Walker
-// Sync up with Erik's pool.
-// [1995/08/03 20:17:15 William_Walker]
-//
-// Revision 1.1.2.6 1995/06/27 12:18:25 William_Walker
-// Add LK201 and LK450 support as well as TW and DP variants.
-// [1995/06/26 20:29:52 William_Walker]
-//
-// Revision 1.1.2.5 1995/06/08 17:10:28 William_Walker
-// Make RALT default to Mode_switch
-// [1995/06/08 17:08:50 William_Walker]
-//
-// Revision 1.1.2.4 1995/06/05 19:24:14 William_Walker
-// New file. I love keymaps.
-// [1995/06/05 18:17:03 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: pc Revision: /main/4 (DEC) Date: 1996/01/24 12:15:02
-//
-
-// **************************************************************
-// * *
-// * The symbols common to all Extended PC layouts. *
-// * *
-// **************************************************************
-xkb_symbols "pc" {
-
- // Modifier mappings
- //
- modifier_map Shift { Shift_L, Shift_R };
- modifier_map Lock { Caps_Lock };
- modifier_map Control { Control_L, Control_R };
- modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
- modifier_map Mod3 { Mode_switch };
- modifier_map Mod4 { Num_Lock };
- modifier_map Mod5 { Scroll_Lock };
-
- // Common keys
- //
- key <BKSP> { [ BackSpace, Delete ] };
- key <TAB> { [ Tab, ISO_Left_Tab ] };
- key <CAPS> { [ Caps_Lock ] };
- key <RTRN> { [ Return ] };
- key <LFSH> { [ Shift_L ] };
- key <RTSH> { [ Shift_R ] };
- key <LCTL> { [ Control_L ] };
- key <LALT> { [ Alt_L, Meta_L ] };
- key <SPCE> { [ space ] };
- key <RALT> { [ Mode_switch ] };
- key <RCTL> { [ Control_R ] };
-
- // "Function" keys
- //
- key <ESC> { [ Escape ] };
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ F11 ] };
- key <FK12> { [ F12 ] };
- key <PRSC> {
- type= "PC_ALT_LEVEL2",
- symbols[Group1]= [ Print, Sys_Req ]
- };
- key <SCLK> { [ Scroll_Lock ] };
- key <PAUS> {
- type= "PC_CONTROL_LEVEL2",
- symbols[Group1]= [ Pause, Break ]
- };
-
- // "Editing" keys
- //
- key <INS> { [ Insert ] };
- key <HOME> { [ Home ] };
- key <PGUP> { [ Prior ] };
- key <DELE> { [ Delete ] };
- key <END> { [ End ] };
- key <PGDN> { [ Next ] };
-
- key <UP> { [ Up ] };
- key <LEFT> { [ Left ] };
- key <DOWN> { [ Down ] };
- key <RGHT> { [ Right ] };
-
- // "Keypad" keys
- //
- key <NMLK> {
- type= "SHIFT+ALT",
- symbols[Group1]= [ Num_Lock,Pointer_EnableKeys]
- };
- key <KPDV> { [ KP_Divide ] };
- key <KPMU> { [ KP_Multiply ] };
- key <KPSU> { [ KP_Subtract ] };
-
- key <KP7> { [ KP_Home, KP_7 ] };
- key <KP8> { [ KP_Up, KP_8 ] };
- key <KP9> { [ KP_Prior, KP_9 ] };
- key <KPAD> { [ KP_Add ] };
-
- key <KP4> { [ KP_Left, KP_4 ] };
- key <KP5> { [ KP_5 ] };
- key <KP6> { [ KP_Right, KP_6 ] };
-
- key <KP1> { [ KP_End, KP_1 ] };
- key <KP2> { [ KP_Down, KP_2 ] };
- key <KP3> { [ KP_Next, KP_3 ] };
- key <KPEN> { [ KP_Enter ] };
-
- key <KP0> { [ KP_Insert, KP_0 ] };
- key <KPDL> { [ KP_Delete, KP_Decimal ] };
-
- // Key to support Lock-Down Modifier descriptions for R5
- //
- key <LDM> { [ NoSymbol ] };
-};
-
-xkb_symbols "pc104" {
- include "digital_vndr/pc(pc)"
-
- replace key <LALT> { [ Alt_L ] };
- key <LWIN> { [ Meta_L ] };
- key <RWIN> { [ Meta_R ] };
- key <MENU> { [ Menu ] };
-};
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//Permission is hereby granted, free of charge, to any person obtaining
+//a copy of this software and associated documentation files (the
+//"Software"), to deal in the Software without restriction, including
+//without limitation the rights to use, copy, modify, merge, publish,
+//distribute, sublicense, and sell copies of the Software, and to
+//permit persons to whom the Software is furnished to do so, subject to
+//the following conditions:
+//
+//The above copyright notice and this permission notice shall be included
+//in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
+//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of the Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log
+// Revision 1.2 1996/06/18 09:10:12 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.6.4 1995/12/19 19:55:58 William_Walker
+// Update to XKB 0.65
+// [1995/12/17 02:37:07 William_Walker]
+//
+// Revision 1.1.6.3 1995/10/25 21:01:09 William_Walker
+// Make sure we use DIN 2137 and VT510 Spec for Group Semantics
+// [1995/10/23 15:49:03 William_Walker]
+//
+// Revision 1.1.6.2 1995/08/07 17:40:40 William_Walker
+// Upgrade XKB to protocol 0.62 (dual submit from decx11)
+// [1995/08/06 14:06:32 William_Walker]
+//
+// Revision 1.1.2.7 1995/08/05 15:25:57 William_Walker
+// Sync up with Erik's pool.
+// [1995/08/03 20:17:15 William_Walker]
+//
+// Revision 1.1.2.6 1995/06/27 12:18:25 William_Walker
+// Add LK201 and LK450 support as well as TW and DP variants.
+// [1995/06/26 20:29:52 William_Walker]
+//
+// Revision 1.1.2.5 1995/06/08 17:10:28 William_Walker
+// Make RALT default to Mode_switch
+// [1995/06/08 17:08:50 William_Walker]
+//
+// Revision 1.1.2.4 1995/06/05 19:24:14 William_Walker
+// New file. I love keymaps.
+// [1995/06/05 18:17:03 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: pc Revision: /main/4 (DEC) Date: 1996/01/24 12:15:02
+//
+
+// **************************************************************
+// * *
+// * The symbols common to all Extended PC layouts. *
+// * *
+// **************************************************************
+xkb_symbols "pc" {
+
+ // Modifier mappings
+ //
+ modifier_map Shift { Shift_L, Shift_R };
+ modifier_map Lock { Caps_Lock };
+ modifier_map Control { Control_L, Control_R };
+ modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
+ modifier_map Mod3 { Mode_switch };
+ modifier_map Mod4 { Num_Lock };
+ modifier_map Mod5 { Scroll_Lock };
+
+ // Common keys
+ //
+ key <BKSP> { [ BackSpace, Delete ] };
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <CAPS> { [ Caps_Lock ] };
+ key <RTRN> { [ Return ] };
+ key <LFSH> { [ Shift_L ] };
+ key <RTSH> { [ Shift_R ] };
+ key <LCTL> { [ Control_L ] };
+ key <LALT> { [ Alt_L, Meta_L ] };
+ key <SPCE> { [ space ] };
+ key <RALT> { [ Mode_switch ] };
+ key <RCTL> { [ Control_R ] };
+
+ // "Function" keys
+ //
+ key <ESC> { [ Escape ] };
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ F11 ] };
+ key <FK12> { [ F12 ] };
+ key <PRSC> {
+ type= "PC_ALT_LEVEL2",
+ symbols[Group1]= [ Print, Sys_Req ]
+ };
+ key <SCLK> { [ Scroll_Lock ] };
+ key <PAUS> {
+ type= "PC_CONTROL_LEVEL2",
+ symbols[Group1]= [ Pause, Break ]
+ };
+
+ // "Editing" keys
+ //
+ key <INS> { [ Insert ] };
+ key <HOME> { [ Home ] };
+ key <PGUP> { [ Prior ] };
+ key <DELE> { [ Delete ] };
+ key <END> { [ End ] };
+ key <PGDN> { [ Next ] };
+
+ key <UP> { [ Up ] };
+ key <LEFT> { [ Left ] };
+ key <DOWN> { [ Down ] };
+ key <RGHT> { [ Right ] };
+
+ // "Keypad" keys
+ //
+ key <NMLK> {
+ type= "SHIFT+ALT",
+ symbols[Group1]= [ Num_Lock,Pointer_EnableKeys]
+ };
+ key <KPDV> { [ KP_Divide ] };
+ key <KPMU> { [ KP_Multiply ] };
+ key <KPSU> { [ KP_Subtract ] };
+
+ key <KP7> { [ KP_Home, KP_7 ] };
+ key <KP8> { [ KP_Up, KP_8 ] };
+ key <KP9> { [ KP_Prior, KP_9 ] };
+ key <KPAD> { [ KP_Add ] };
+
+ key <KP4> { [ KP_Left, KP_4 ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_Right, KP_6 ] };
+
+ key <KP1> { [ KP_End, KP_1 ] };
+ key <KP2> { [ KP_Down, KP_2 ] };
+ key <KP3> { [ KP_Next, KP_3 ] };
+ key <KPEN> { [ KP_Enter ] };
+
+ key <KP0> { [ KP_Insert, KP_0 ] };
+ key <KPDL> { [ KP_Delete, KP_Decimal ] };
+
+ // Key to support Lock-Down Modifier descriptions for R5
+ //
+ key <LDM> { [ NoSymbol ] };
+};
+
+xkb_symbols "pc104" {
+ include "digital_vndr/pc(pc)"
+
+ replace key <LALT> { [ Alt_L ] };
+ key <LWIN> { [ Meta_L ] };
+ key <RWIN> { [ Meta_R ] };
+ key <MENU> { [ Menu ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/digital_vndr/us b/xorg-server/xkeyboard-config/symbols/digital_vndr/us
index 7e1131a63..95d7301e7 100644
--- a/xorg-server/xkeyboard-config/symbols/digital_vndr/us
+++ b/xorg-server/xkeyboard-config/symbols/digital_vndr/us
@@ -1,212 +1,211 @@
-// $Xorg: us,v 1.3 2000/08/17 19:54:44 cpqbld Exp $
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//Permission is hereby granted, free of charge, to any person obtaining
-//a copy of this software and associated documentation files (the
-//"Software"), to deal in the Software without restriction, including
-//without limitation the rights to use, copy, modify, merge, publish,
-//distribute, sublicense, and sell copies of the Software, and to
-//permit persons to whom the Software is furnished to do so, subject to
-//the following conditions:
-//
-//The above copyright notice and this permission notice shall be included
-//in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
-//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
-//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of the Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log
-// Revision 1.2 1996/06/18 09:10:16 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.6.3 1995/12/19 19:56:37 William_Walker
-// Update to XKB 0.65
-// [1995/12/17 02:37:44 William_Walker]
-//
-// Revision 1.1.6.2 1995/10/25 21:01:25 William_Walker
-// Add pc104-key support
-// [1995/10/23 15:46:27 William_Walker]
-//
-// Revision 1.1.2.7 1995/06/27 12:18:40 William_Walker
-// Add LK201 and LK450 support as well as TW and DP variants.
-// [1995/06/26 20:30:33 William_Walker]
-//
-// Revision 1.1.2.6 1995/06/09 20:55:20 William_Walker
-// Add VT105 layout support and ISO group support
-// [1995/06/09 20:43:05 William_Walker]
-//
-// Revision 1.1.2.5 1995/06/08 21:05:49 William_Walker
-// Use ISO_Next_Group instead of grouplock
-// [1995/06/08 21:03:56 William_Walker]
-//
-// Revision 1.1.2.4 1995/06/05 19:25:00 William_Walker
-// New file. I love keymaps.
-// [1995/06/05 18:17:54 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: us Revision: /main/4 (DEC) Date: 1996/01/24 12:15:05
-//
-
-// **************************************************************
-// * *
-// * Symbols for en_US.ISO8859-1 - English for U.S. *
-// * *
-// **************************************************************
-
-xkb_symbols "us" {
-
- key <AE00> { [ grave, asciitilde ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, asciicircum ] };
- key <AE07> { [ 7, ampersand ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
-
- key <AD01> { [ q, Q ] };
- key <AD02> { [ w, W ] };
- key <AD03> { [ e, E ] };
- key <AD04> { [ r, R ] };
- key <AD05> { [ t, T ] };
- key <AD06> { [ y, Y ] };
- key <AD07> { [ u, U ] };
- key <AD08> { [ i, I ] };
- key <AD09> { [ o, O ] };
- key <AD10> { [ p, P ] };
- key <AD11> { [ bracketleft, braceleft ] };
- key <AD12> { [ bracketright, braceright ] };
-
- key <AC01> { [ a, A ] };
- key <AC02> { [ s, S ] };
- key <AC03> { [ d, D ] };
- key <AC04> { [ f, F ] };
- key <AC05> { [ g, G ] };
- key <AC06> { [ h, H ] };
- key <AC07> { [ j, J ] };
- key <AC08> { [ k, K ] };
- key <AC09> { [ l, L ] };
- key <AC10> { [ semicolon, colon ] };
- key <AC11> { [ apostrophe, quotedbl ] };
- key <BKSL> { [ backslash, bar ] };
-
- key <AB01> { [ z, Z ] };
- key <AB02> { [ x, X ] };
- key <AB03> { [ c, C ] };
- key <AB04> { [ v, V ] };
- key <AB05> { [ b, B ] };
- key <AB06> { [ n, N ] };
- key <AB07> { [ m, M ] };
- key <AB08> { [ comma, less ] };
- key <AB09> { [ period, greater ] };
- key <AB10> { [ slash, question ] };
-};
-
-// **************************************************************
-// * *
-// * The VT105 layouts *
-// * *
-// * NOTES: The typewriter (TW) and dataprocessing (DP) keys *
-// * for the VT108 layout are identical for the US. *
-// * *
-// **************************************************************
-xkb_symbols "vt105-tw" {
- include "digital_vndr/us(us)"
- include "digital_vndr/vt(vt105)"
- override key <AE03> {
- symbols[Group1]= [ 3, numbersign ],
- symbols[Group2]= [ sterling ]
- };
- key <AB00> { [ less, greater ] };
-};
-
-xkb_symbols "vt105-dp" { include "digital_vndr/us(vt105-tw)" };
-xkb_symbols "vt105" { include "digital_vndr/us(vt105-tw)" };
-
-// **************************************************************
-// * *
-// * The VT108 layouts - based upon the LK401-AA *
-// * *
-// * NOTES: The typewriter (TW) and dataprocessing (DP) keys *
-// * for the VT108 layout are identical for the US. *
-// * *
-// **************************************************************
-xkb_symbols "vt108-tw" {
- include "digital_vndr/us(us)"
- include "digital_vndr/vt(vt108)"
- replace key <LCMP> { [ Multi_key ] };
- override key <AE03> {
- symbols[Group1]= [ 3, numbersign ],
- symbols[Group2]= [ sterling ]
- };
- key <AB00> { [ less, greater ] };
-};
-
-xkb_symbols "vt108-dp" { include "digital_vndr/us(vt108-tw)" };
-xkb_symbols "vt108" { include "digital_vndr/us(vt108-tw)" };
-
-// **************************************************************
-// * *
-// * The "unix" layouts - based upon the LK421-AA *
-// * *
-// * NOTES: The "unix" keyboard emits the same keycodes as the *
-// * LK401, but is a shorter keyboard that uses an *
-// * "extend" key. To make life easier, we map <AE00> *
-// * to Escape so users do not have to press Extend+F11 *
-// * to get Escape. *
-// * *
-// **************************************************************
-xkb_symbols "unix" {
- include "digital_vndr/us(vt108)"
- override key <AE00> { [ Escape ] };
- override key <AB00> { [ grave, asciitilde ] };
-};
-
-// **************************************************************
-// * *
-// * The "pcxal" layouts *
-// * *
-// * NOTES: The pcxal layouts are pretty much standardized for *
-// * the US and use a 101-key keyboard. *
-// * *
-// **************************************************************
-xkb_symbols "pcxalga" {
- include "digital_vndr/pc(pc)"
- include "digital_vndr/us(us)"
- replace key <RALT> { [ Alt_R, Meta_R ] };
-};
-
-xkb_symbols "pcxal" { include "digital_vndr/us(pcxalga)" };
-xkb_symbols "pcxalaa" { include "digital_vndr/us(pcxalga)" };
-xkb_symbols "pcxalfa" { include "digital_vndr/us(pcxalga)" };
-xkb_symbols "pcxalka" { include "digital_vndr/us(pcxalga)" };
-xkb_symbols "lk44x" { include "digital_vndr/us(pcxalga)" };
-
-// **************************************************************
-// * *
-// * The "pc104" layouts. *
-// * *
-// **************************************************************
-xkb_symbols "pc104" {
- include "digital_vndr/pc(pc104)"
- include "digital_vndr/us(us)"
- replace key <RALT> { [ Alt_R ] };
-};
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//Permission is hereby granted, free of charge, to any person obtaining
+//a copy of this software and associated documentation files (the
+//"Software"), to deal in the Software without restriction, including
+//without limitation the rights to use, copy, modify, merge, publish,
+//distribute, sublicense, and sell copies of the Software, and to
+//permit persons to whom the Software is furnished to do so, subject to
+//the following conditions:
+//
+//The above copyright notice and this permission notice shall be included
+//in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
+//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of the Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log
+// Revision 1.2 1996/06/18 09:10:16 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.6.3 1995/12/19 19:56:37 William_Walker
+// Update to XKB 0.65
+// [1995/12/17 02:37:44 William_Walker]
+//
+// Revision 1.1.6.2 1995/10/25 21:01:25 William_Walker
+// Add pc104-key support
+// [1995/10/23 15:46:27 William_Walker]
+//
+// Revision 1.1.2.7 1995/06/27 12:18:40 William_Walker
+// Add LK201 and LK450 support as well as TW and DP variants.
+// [1995/06/26 20:30:33 William_Walker]
+//
+// Revision 1.1.2.6 1995/06/09 20:55:20 William_Walker
+// Add VT105 layout support and ISO group support
+// [1995/06/09 20:43:05 William_Walker]
+//
+// Revision 1.1.2.5 1995/06/08 21:05:49 William_Walker
+// Use ISO_Next_Group instead of grouplock
+// [1995/06/08 21:03:56 William_Walker]
+//
+// Revision 1.1.2.4 1995/06/05 19:25:00 William_Walker
+// New file. I love keymaps.
+// [1995/06/05 18:17:54 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: us Revision: /main/4 (DEC) Date: 1996/01/24 12:15:05
+//
+
+// **************************************************************
+// * *
+// * Symbols for en_US.ISO8859-1 - English for U.S. *
+// * *
+// **************************************************************
+
+xkb_symbols "us" {
+
+ key <AE00> { [ grave, asciitilde ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E ] };
+ key <AD04> { [ r, R ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y ] };
+ key <AD07> { [ u, U ] };
+ key <AD08> { [ i, I ] };
+ key <AD09> { [ o, O ] };
+ key <AD10> { [ p, P ] };
+ key <AD11> { [ bracketleft, braceleft ] };
+ key <AD12> { [ bracketright, braceright ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ s, S ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K ] };
+ key <AC09> { [ l, L ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ apostrophe, quotedbl ] };
+ key <BKSL> { [ backslash, bar ] };
+
+ key <AB01> { [ z, Z ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
+};
+
+// **************************************************************
+// * *
+// * The VT105 layouts *
+// * *
+// * NOTES: The typewriter (TW) and dataprocessing (DP) keys *
+// * for the VT108 layout are identical for the US. *
+// * *
+// **************************************************************
+xkb_symbols "vt105-tw" {
+ include "digital_vndr/us(us)"
+ include "digital_vndr/vt(vt105)"
+ override key <AE03> {
+ symbols[Group1]= [ 3, numbersign ],
+ symbols[Group2]= [ sterling ]
+ };
+ key <AB00> { [ less, greater ] };
+};
+
+xkb_symbols "vt105-dp" { include "digital_vndr/us(vt105-tw)" };
+xkb_symbols "vt105" { include "digital_vndr/us(vt105-tw)" };
+
+// **************************************************************
+// * *
+// * The VT108 layouts - based upon the LK401-AA *
+// * *
+// * NOTES: The typewriter (TW) and dataprocessing (DP) keys *
+// * for the VT108 layout are identical for the US. *
+// * *
+// **************************************************************
+xkb_symbols "vt108-tw" {
+ include "digital_vndr/us(us)"
+ include "digital_vndr/vt(vt108)"
+ replace key <LCMP> { [ Multi_key ] };
+ override key <AE03> {
+ symbols[Group1]= [ 3, numbersign ],
+ symbols[Group2]= [ sterling ]
+ };
+ key <AB00> { [ less, greater ] };
+};
+
+xkb_symbols "vt108-dp" { include "digital_vndr/us(vt108-tw)" };
+xkb_symbols "vt108" { include "digital_vndr/us(vt108-tw)" };
+
+// **************************************************************
+// * *
+// * The "unix" layouts - based upon the LK421-AA *
+// * *
+// * NOTES: The "unix" keyboard emits the same keycodes as the *
+// * LK401, but is a shorter keyboard that uses an *
+// * "extend" key. To make life easier, we map <AE00> *
+// * to Escape so users do not have to press Extend+F11 *
+// * to get Escape. *
+// * *
+// **************************************************************
+xkb_symbols "unix" {
+ include "digital_vndr/us(vt108)"
+ override key <AE00> { [ Escape ] };
+ override key <AB00> { [ grave, asciitilde ] };
+};
+
+// **************************************************************
+// * *
+// * The "pcxal" layouts *
+// * *
+// * NOTES: The pcxal layouts are pretty much standardized for *
+// * the US and use a 101-key keyboard. *
+// * *
+// **************************************************************
+xkb_symbols "pcxalga" {
+ include "digital_vndr/pc(pc)"
+ include "digital_vndr/us(us)"
+ replace key <RALT> { [ Alt_R, Meta_R ] };
+};
+
+xkb_symbols "pcxal" { include "digital_vndr/us(pcxalga)" };
+xkb_symbols "pcxalaa" { include "digital_vndr/us(pcxalga)" };
+xkb_symbols "pcxalfa" { include "digital_vndr/us(pcxalga)" };
+xkb_symbols "pcxalka" { include "digital_vndr/us(pcxalga)" };
+xkb_symbols "lk44x" { include "digital_vndr/us(pcxalga)" };
+
+// **************************************************************
+// * *
+// * The "pc104" layouts. *
+// * *
+// **************************************************************
+xkb_symbols "pc104" {
+ include "digital_vndr/pc(pc104)"
+ include "digital_vndr/us(us)"
+ replace key <RALT> { [ Alt_R ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/digital_vndr/vt b/xorg-server/xkeyboard-config/symbols/digital_vndr/vt
index 483f1debe..5d3680db4 100644
--- a/xorg-server/xkeyboard-config/symbols/digital_vndr/vt
+++ b/xorg-server/xkeyboard-config/symbols/digital_vndr/vt
@@ -1,159 +1,158 @@
-// $Xorg: vt,v 1.3 2000/08/17 19:54:44 cpqbld Exp $
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//Permission is hereby granted, free of charge, to any person obtaining
-//a copy of this software and associated documentation files (the
-//"Software"), to deal in the Software without restriction, including
-//without limitation the rights to use, copy, modify, merge, publish,
-//distribute, sublicense, and sell copies of the Software, and to
-//permit persons to whom the Software is furnished to do so, subject to
-//the following conditions:
-//
-//The above copyright notice and this permission notice shall be included
-//in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
-//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
-//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of the Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log
-// Revision 1.2 1996/06/18 09:10:19 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.6.2 1995/12/19 19:56:39 William_Walker
-// Update to XKB 0.65
-// [1995/12/17 02:37:47 William_Walker]
-//
-// Revision 1.1.2.5 1995/07/11 21:20:50 William_Walker
-// Make RALT act as RALT
-// [1995/07/11 21:18:28 William_Walker]
-//
-// Revision 1.1.2.4 1995/06/27 12:18:41 William_Walker
-// Add LK201 and LK450 support as well as TW and DP variants.
-// [1995/06/26 20:30:37 William_Walker]
-//
-// Revision 1.1.2.3 1995/06/09 20:55:21 William_Walker
-// Add VT105 layout support and ISO group support
-// [1995/06/09 20:43:09 William_Walker]
-//
-// Revision 1.1.2.2 1995/06/05 19:25:04 William_Walker
-// New file. I love keymaps.
-// [1995/06/05 18:17:58 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: vt Revision: /main/3 (DEC) Date: 1996/01/24 12:15:08
-//
-xkb_symbols "vt105" {
-
- // Modifier mappings
- //
- modifier_map Shift { Shift_L, Shift_R };
- modifier_map Lock { Caps_Lock };
- modifier_map Control { Control_L, Control_R };
- modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
- modifier_map Mod3 { Mode_switch };
-
- // Common keys
- //
- key <BKSP> { [ Delete ] };
- key <TAB> { [ Tab ] };
- key <RTRN> { [ Return ] };
- key <LCTL> { [ Control_L ] };
- key <CAPS> { [ Caps_Lock ] };
- key <LFSH> { [ Shift_L ] };
- key <RTSH> { [ Shift_R ] };
- key <LCMP> { [ Alt_L, Meta_L ] };
- key <SPCE> { [ space ] };
-
- // "Function" keys
- //
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ Escape, F11 ] };
- key <FK12> { [ F12 ] };
- key <FK13> { [ F13 ] };
- key <FK14> { [ F14 ] };
- key <FK17> { [ F17 ] };
- key <FK18> { [ F18 ] };
- key <FK19> { [ F19 ] };
- key <FK20> { [ F20 ] };
-
- // "Editing" keys
- //
- key <HELP> { [ Help ] };
- key <DO> { [ Menu ] };
- key <FIND> { [ Find ] };
- key <INS> { [ Insert ] };
- key <DELE> { [ apLineDel ] };
- key <SELE> { [ Select ] };
- key <PGUP> { [ Prior ] };
- key <PGDN> { [ Next ] };
-
- key <UP> { [ Up ] };
- key <LEFT> { [ Left ] };
- key <DOWN> { [ Down ] };
- key <RGHT> { [ Right ] };
-
- // "Keypad" keys
- //
- key <KPF1> {
- type= "SHIFT+ALT",
- symbols[Group1]= [ KP_F1,Pointer_EnableKeys ]
- };
- key <KPF2> { [ KP_F2 ] };
- key <KPF3> { [ KP_F3 ] };
- key <KPF4> { [ KP_F4 ] };
-
- key <KP7> { [ KP_7 ] };
- key <KP8> { [ KP_8 ] };
- key <KP9> { [ KP_9 ] };
- key <KPSU> { [ KP_Subtract ] };
-
- key <KP4> { [ KP_4 ] };
- key <KP5> { [ KP_5 ] };
- key <KP6> { [ KP_6 ] };
- key <KPCO> { [ KP_Separator ] };
-
- key <KP1> { [ KP_1 ] };
- key <KP2> { [ KP_2 ] };
- key <KP3> { [ KP_3 ] };
- key <KPEN> { [ KP_Enter ] };
-
- key <KP0> { [ KP_0 ] };
- key <KPDL> { [ KP_Decimal ] };
-
- // Key to support Lock-Down Modifier descriptions for R5
- //
- key <LDM> { [ NoSymbol ] };
-};
-
-xkb_symbols "vt108" {
-
- include "digital_vndr/vt(vt105)"
-
- replace key <LCMP> { [ Mode_switch ] };
-
- key <LALT> { [ Alt_L, Meta_L ] };
- key <RALT> { [ Alt_R, Meta_R ] };
- key <RCMP> { [ Multi_key ] };
-};
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//Permission is hereby granted, free of charge, to any person obtaining
+//a copy of this software and associated documentation files (the
+//"Software"), to deal in the Software without restriction, including
+//without limitation the rights to use, copy, modify, merge, publish,
+//distribute, sublicense, and sell copies of the Software, and to
+//permit persons to whom the Software is furnished to do so, subject to
+//the following conditions:
+//
+//The above copyright notice and this permission notice shall be included
+//in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
+//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+//THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of the Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log
+// Revision 1.2 1996/06/18 09:10:19 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.6.2 1995/12/19 19:56:39 William_Walker
+// Update to XKB 0.65
+// [1995/12/17 02:37:47 William_Walker]
+//
+// Revision 1.1.2.5 1995/07/11 21:20:50 William_Walker
+// Make RALT act as RALT
+// [1995/07/11 21:18:28 William_Walker]
+//
+// Revision 1.1.2.4 1995/06/27 12:18:41 William_Walker
+// Add LK201 and LK450 support as well as TW and DP variants.
+// [1995/06/26 20:30:37 William_Walker]
+//
+// Revision 1.1.2.3 1995/06/09 20:55:21 William_Walker
+// Add VT105 layout support and ISO group support
+// [1995/06/09 20:43:09 William_Walker]
+//
+// Revision 1.1.2.2 1995/06/05 19:25:04 William_Walker
+// New file. I love keymaps.
+// [1995/06/05 18:17:58 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: vt Revision: /main/3 (DEC) Date: 1996/01/24 12:15:08
+//
+xkb_symbols "vt105" {
+
+ // Modifier mappings
+ //
+ modifier_map Shift { Shift_L, Shift_R };
+ modifier_map Lock { Caps_Lock };
+ modifier_map Control { Control_L, Control_R };
+ modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
+ modifier_map Mod3 { Mode_switch };
+
+ // Common keys
+ //
+ key <BKSP> { [ Delete ] };
+ key <TAB> { [ Tab ] };
+ key <RTRN> { [ Return ] };
+ key <LCTL> { [ Control_L ] };
+ key <CAPS> { [ Caps_Lock ] };
+ key <LFSH> { [ Shift_L ] };
+ key <RTSH> { [ Shift_R ] };
+ key <LCMP> { [ Alt_L, Meta_L ] };
+ key <SPCE> { [ space ] };
+
+ // "Function" keys
+ //
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ Escape, F11 ] };
+ key <FK12> { [ F12 ] };
+ key <FK13> { [ F13 ] };
+ key <FK14> { [ F14 ] };
+ key <FK17> { [ F17 ] };
+ key <FK18> { [ F18 ] };
+ key <FK19> { [ F19 ] };
+ key <FK20> { [ F20 ] };
+
+ // "Editing" keys
+ //
+ key <HELP> { [ Help ] };
+ key <DO> { [ Menu ] };
+ key <FIND> { [ Find ] };
+ key <INS> { [ Insert ] };
+ key <DELE> { [ apLineDel ] };
+ key <SELE> { [ Select ] };
+ key <PGUP> { [ Prior ] };
+ key <PGDN> { [ Next ] };
+
+ key <UP> { [ Up ] };
+ key <LEFT> { [ Left ] };
+ key <DOWN> { [ Down ] };
+ key <RGHT> { [ Right ] };
+
+ // "Keypad" keys
+ //
+ key <KPF1> {
+ type= "SHIFT+ALT",
+ symbols[Group1]= [ KP_F1,Pointer_EnableKeys ]
+ };
+ key <KPF2> { [ KP_F2 ] };
+ key <KPF3> { [ KP_F3 ] };
+ key <KPF4> { [ KP_F4 ] };
+
+ key <KP7> { [ KP_7 ] };
+ key <KP8> { [ KP_8 ] };
+ key <KP9> { [ KP_9 ] };
+ key <KPSU> { [ KP_Subtract ] };
+
+ key <KP4> { [ KP_4 ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_6 ] };
+ key <KPCO> { [ KP_Separator ] };
+
+ key <KP1> { [ KP_1 ] };
+ key <KP2> { [ KP_2 ] };
+ key <KP3> { [ KP_3 ] };
+ key <KPEN> { [ KP_Enter ] };
+
+ key <KP0> { [ KP_0 ] };
+ key <KPDL> { [ KP_Decimal ] };
+
+ // Key to support Lock-Down Modifier descriptions for R5
+ //
+ key <LDM> { [ NoSymbol ] };
+};
+
+xkb_symbols "vt108" {
+
+ include "digital_vndr/vt(vt105)"
+
+ replace key <LCMP> { [ Mode_switch ] };
+
+ key <LALT> { [ Alt_L, Meta_L ] };
+ key <RALT> { [ Alt_R, Meta_R ] };
+ key <RCMP> { [ Multi_key ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/dk b/xorg-server/xkeyboard-config/symbols/dk
index 16223e9a5..c652ebbb6 100644
--- a/xorg-server/xkeyboard-config/symbols/dk
+++ b/xorg-server/xkeyboard-config/symbols/dk
@@ -1,77 +1,72 @@
-
-// based on a keyboard map from an 'xkb/symbols/dk' file
-//
-// $XKeyboardConfig$
-// $XFree86: xc/programs/xkbcomp/symbols/dk,v 1.3 2002/12/19 01:07:56 dawes Exp $
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- include "latin(type2)"
-
- name[Group1]="Denmark";
-
- key <AE11> { [ plus, question, plusminus, questiondown ] };
- key <AE12> { [dead_acute, dead_grave, bar, brokenbar ] };
-
-
- key <AC10> { [ ae, AE, dead_acute, dead_doubleacute ] };
- key <AC11> { [ oslash, Ooblique, dead_circumflex, dead_caron ] };
- key <TLDE> { [ onehalf, section, threequarters, paragraph ] };
-
- key <BKSL> { [apostrophe, asterisk, dead_doubleacute, multiply ] };
-
- key <LSGT> { [ less, greater, backslash, notsign ] };
-
- include "kpdl(comma)"
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
-
- include "dk(basic)"
-
- name[Group1]="Denmark - Eliminate dead keys";
-
- key <AE12> { [ acute, grave, bar, ogonek ] };
- key <AD11> { [ aring, Aring, diaeresis, degree ] };
- key <AD12> { [ diaeresis, asciicircum, asciitilde, macron ] };
- key <AC10> { [ ae, AE, acute, doubleacute ] };
- key <AC11> { [ oslash, Ooblique, asciicircum, caron ] };
- key <BKSL> { [apostrophe, asterisk, doubleacute, multiply ] };
- key <AB08> { [ comma, semicolon, cedilla, ogonek ] };
- key <AB09> { [ period, colon, periodcentered, abovedot ] };
-
-};
-
-// Copied from macintosh_vndr/dk
-partial alphanumeric_keys
-xkb_symbols "mac" {
-
- include "dk"
- name[Group1]= "Denmark - Macintosh";
-
- key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
- key <AB10> { [ minus, underscore, hyphen, macron ] };
- include "kpdl(dot)"
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "mac_nodeadkeys" {
- include "dk(mac)"
- name[Group1]= "Denmark - Macintosh, eliminate dead keys";
-
- key <AE12> { [ acute, grave, bar, ogonek ] };
- key <AD12> { [diaeresis, asciicircum, asciitilde, dead_macron ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "dvorak" {
- include "no(dvorak)"
-
- name[Group1]= "Denmark - Dvorak";
-};
-
+// based on a keyboard map from an 'xkb/symbols/dk' file
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ include "latin(type2)"
+
+ name[Group1]="Denmark";
+
+ key <AE11> { [ plus, question, plusminus, questiondown ] };
+ key <AE12> { [dead_acute, dead_grave, bar, brokenbar ] };
+
+
+ key <AC10> { [ ae, AE, dead_acute, dead_doubleacute ] };
+ key <AC11> { [ oslash, Ooblique, dead_circumflex, dead_caron ] };
+ key <TLDE> { [ onehalf, section, threequarters, paragraph ] };
+
+ key <BKSL> { [apostrophe, asterisk, dead_doubleacute, multiply ] };
+
+ key <LSGT> { [ less, greater, backslash, notsign ] };
+
+ include "kpdl(comma)"
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+
+ include "dk(basic)"
+
+ name[Group1]="Denmark - Eliminate dead keys";
+
+ key <AE12> { [ acute, grave, bar, ogonek ] };
+ key <AD11> { [ aring, Aring, diaeresis, degree ] };
+ key <AD12> { [ diaeresis, asciicircum, asciitilde, macron ] };
+ key <AC10> { [ ae, AE, acute, doubleacute ] };
+ key <AC11> { [ oslash, Ooblique, asciicircum, caron ] };
+ key <BKSL> { [apostrophe, asterisk, doubleacute, multiply ] };
+ key <AB08> { [ comma, semicolon, cedilla, ogonek ] };
+ key <AB09> { [ period, colon, periodcentered, abovedot ] };
+
+};
+
+// Copied from macintosh_vndr/dk
+partial alphanumeric_keys
+xkb_symbols "mac" {
+
+ include "dk"
+ name[Group1]= "Denmark - Macintosh";
+
+ key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
+ key <AB10> { [ minus, underscore, hyphen, macron ] };
+ include "kpdl(dot)"
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "mac_nodeadkeys" {
+ include "dk(mac)"
+ name[Group1]= "Denmark - Macintosh, eliminate dead keys";
+
+ key <AE12> { [ acute, grave, bar, ogonek ] };
+ key <AD12> { [diaeresis, asciicircum, asciitilde, dead_macron ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "dvorak" {
+ include "no(dvorak)"
+
+ name[Group1]= "Denmark - Dvorak";
+};
diff --git a/xorg-server/xkeyboard-config/symbols/ee b/xorg-server/xkeyboard-config/symbols/ee
index e55f20e27..e85037b04 100644
--- a/xorg-server/xkeyboard-config/symbols/ee
+++ b/xorg-server/xkeyboard-config/symbols/ee
@@ -1,103 +1,100 @@
-// $XKeyboardConfig$
-
-// based on
-// Estonian XKB-keymap by Ville Hallik <ville@linux.ee>
-//
-// $XFree86: xc/programs/xkbcomp/symbols/ee,v 1.2 2002/11/22 04:03:28 dawes Exp $
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple en_US
- // keyboard and a very simple Estonian keyboard
- // This layout conforms to both EVS8:1993 and EVS8:2000 standards
-
- include "latin(type4)"
-
- name[Group1]="Estonia";
-
- key <AE03> { [ 3, numbersign, sterling, sterling ] };
- key <AE04> { [ 4, currency, dollar, dollar ] };
- key <AE11> { [ plus, question, backslash, questiondown ] };
- key <AE12> { [dead_acute, dead_grave, grave, apostrophe ] };
-
- key <AD11> { [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] };
- key <AD12> { [ otilde, Otilde, section, dead_macron ] };
-
- key <AC02> { [ s, S, scaron, Scaron ] };
- key <AC10> { [odiaeresis, Odiaeresis, dead_acute, dead_doubleacute ] };
- key <AC11> { [adiaeresis, Adiaeresis, asciicircum, dead_caron ] };
- key <TLDE> { [dead_caron, dead_tilde, notsign, notsign ] };
-
- key <BKSL> { [apostrophe, asterisk, onehalf, dead_breve ] };
- key <AB01> { [ z, Z, zcaron, Zcaron ] };
- key <AB08> { [ comma, semicolon, less, multiply ] };
- key <AB09> { [ period, colon, greater, division ] };
-
- include "level3(ralt_switch)"
- include "eurosign(e)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
-
- // Modifies the basic Estonian layout to eliminate all dead keys
-
- include "ee(basic)"
- name[Group1]="Estonia - Eliminate dead keys";
-
- key <TLDE> { [asciicircum,asciitilde ] };
- key <AE12> { [apostrophe, grave ] };
- key <AD11> { [udiaeresis, Udiaeresis, diaeresis, degree ] };
- key <AD12> { [ otilde, Otilde, section, macron ] };
- key <AC10> { [odiaeresis, Odiaeresis, acute, doubleacute ] };
- key <AC11> { [adiaeresis, Adiaeresis, asciicircum, caron ] };
- key <BKSL> { [apostrophe, asterisk, onehalf, breve ] };
- key <AB10> { [ minus, underscore, dead_belowdot, abovedot ] };
-};
-
-// Dvorak with Estonian characters
-partial alphanumeric_keys
-xkb_symbols "dvorak" {
- include "us(dvorak)"
- name[Group1]= "Estonia - Dvorak";
-
- key <AE03> { [ 3, numbersign, sterling ] };
- key <AE04> { [ 4, dollar, section, currency ] };
- key <AE08> { [ 8, asterisk, onehalf ] };
-
- key <AC01> { [ a, A, adiaeresis, Adiaeresis ] };
- key <AC02> { [ o, O, otilde, Otilde ] };
- key <AC03> { [ e, E, odiaeresis, Odiaeresis ] };
- key <AC04> { [ u, U, udiaeresis, Udiaeresis ] };
- key <AC10> { [ s, S, scaron, Scaron ] };
- key <AB10> { [ z, Z, zcaron, Zcaron ] };
-
- include "level3(ralt_switch)"
- include "kpdl(comma)"
- include "eurosign(5)"
-};
-
-// Estonian few characters on basic US keymap.
-// by Elan Ruusamäe <glen@delfi.ee>
-partial alphanumeric_keys
-xkb_symbols "us" {
- include "us(euro)"
- name[Group1] = "Estonia - US keyboard with Estonian letters";
-
- // ž, Ž
- key <AB01> { [ z, Z, zcaron, Zcaron ] };
- // ¢
- key <AB03> { [ c, C, cent, cent ] };
- // š, Š
- key <AC02> { [ s, S, scaron, Scaron ] };
- key <AC10> { [ semicolon, colon, odiaeresis, Odiaeresis ] };
- key <AC11> { [ quoteright, quotedbl, adiaeresis, Adiaeresis ] };
- key <AD11> { [ bracketleft, braceleft, udiaeresis, Udiaeresis ] };
- key <AD12> { [ bracketright, braceright, otilde, Otilde ] };
- // £
- key <AE03> { [ 3, numbersign, sterling, sterling ] };
-
- include "level3(ralt_switch)"
- include "eurosign(e)"
-};
+// based on
+// Estonian XKB-keymap by Ville Hallik <ville@linux.ee>
+//
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple en_US
+ // keyboard and a very simple Estonian keyboard
+ // This layout conforms to both EVS8:1993 and EVS8:2000 standards
+
+ include "latin(type4)"
+
+ name[Group1]="Estonia";
+
+ key <AE03> { [ 3, numbersign, sterling, sterling ] };
+ key <AE04> { [ 4, currency, dollar, dollar ] };
+ key <AE11> { [ plus, question, backslash, questiondown ] };
+ key <AE12> { [dead_acute, dead_grave, grave, apostrophe ] };
+
+ key <AD11> { [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] };
+ key <AD12> { [ otilde, Otilde, section, dead_macron ] };
+
+ key <AC02> { [ s, S, scaron, Scaron ] };
+ key <AC10> { [odiaeresis, Odiaeresis, dead_acute, dead_doubleacute ] };
+ key <AC11> { [adiaeresis, Adiaeresis, asciicircum, dead_caron ] };
+ key <TLDE> { [dead_caron, dead_tilde, notsign, notsign ] };
+
+ key <BKSL> { [apostrophe, asterisk, onehalf, dead_breve ] };
+ key <AB01> { [ z, Z, zcaron, Zcaron ] };
+ key <AB08> { [ comma, semicolon, less, multiply ] };
+ key <AB09> { [ period, colon, greater, division ] };
+
+ include "level3(ralt_switch)"
+ include "eurosign(e)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+
+ // Modifies the basic Estonian layout to eliminate all dead keys
+
+ include "ee(basic)"
+ name[Group1]="Estonia - Eliminate dead keys";
+
+ key <TLDE> { [asciicircum,asciitilde ] };
+ key <AE12> { [apostrophe, grave ] };
+ key <AD11> { [udiaeresis, Udiaeresis, diaeresis, degree ] };
+ key <AD12> { [ otilde, Otilde, section, macron ] };
+ key <AC10> { [odiaeresis, Odiaeresis, acute, doubleacute ] };
+ key <AC11> { [adiaeresis, Adiaeresis, asciicircum, caron ] };
+ key <BKSL> { [apostrophe, asterisk, onehalf, breve ] };
+ key <AB10> { [ minus, underscore, dead_belowdot, abovedot ] };
+};
+
+// Dvorak with Estonian characters
+partial alphanumeric_keys
+xkb_symbols "dvorak" {
+ include "us(dvorak)"
+ name[Group1]= "Estonia - Dvorak";
+
+ key <AE03> { [ 3, numbersign, sterling ] };
+ key <AE04> { [ 4, dollar, section, currency ] };
+ key <AE08> { [ 8, asterisk, onehalf ] };
+
+ key <AC01> { [ a, A, adiaeresis, Adiaeresis ] };
+ key <AC02> { [ o, O, otilde, Otilde ] };
+ key <AC03> { [ e, E, odiaeresis, Odiaeresis ] };
+ key <AC04> { [ u, U, udiaeresis, Udiaeresis ] };
+ key <AC10> { [ s, S, scaron, Scaron ] };
+ key <AB10> { [ z, Z, zcaron, Zcaron ] };
+
+ include "level3(ralt_switch)"
+ include "kpdl(comma)"
+ include "eurosign(5)"
+};
+
+// Estonian few characters on basic US keymap.
+// by Elan Ruusamäe <glen@delfi.ee>
+partial alphanumeric_keys
+xkb_symbols "us" {
+ include "us(euro)"
+ name[Group1] = "Estonia - US keyboard with Estonian letters";
+
+ // ž, Ž
+ key <AB01> { [ z, Z, zcaron, Zcaron ] };
+ // ¢
+ key <AB03> { [ c, C, cent, cent ] };
+ // š, Š
+ key <AC02> { [ s, S, scaron, Scaron ] };
+ key <AC10> { [ semicolon, colon, odiaeresis, Odiaeresis ] };
+ key <AC11> { [ quoteright, quotedbl, adiaeresis, Adiaeresis ] };
+ key <AD11> { [ bracketleft, braceleft, udiaeresis, Udiaeresis ] };
+ key <AD12> { [ bracketright, braceright, otilde, Otilde ] };
+ // £
+ key <AE03> { [ 3, numbersign, sterling, sterling ] };
+
+ include "level3(ralt_switch)"
+ include "eurosign(e)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/empty b/xorg-server/xkeyboard-config/symbols/empty
index 72eb12736..16443b28c 100644
--- a/xorg-server/xkeyboard-config/symbols/empty
+++ b/xorg-server/xkeyboard-config/symbols/empty
@@ -1,6 +1,4 @@
-// $XKeyboardConfig$
-
-default partial alphanumeric_keys modifier_keys
-xkb_symbols "basic" {
- name[Group1]= "Empty";
-};
+default partial alphanumeric_keys modifier_keys
+xkb_symbols "basic" {
+ name[Group1]= "Empty";
+};
diff --git a/xorg-server/xkeyboard-config/symbols/epo b/xorg-server/xkeyboard-config/symbols/epo
index c9b2d57b2..d5bd762fe 100644
--- a/xorg-server/xkeyboard-config/symbols/epo
+++ b/xorg-server/xkeyboard-config/symbols/epo
@@ -1,141 +1,139 @@
-// $XKeyboardConfig$
-
-// Esperanto keyboard maps -- "Ekverto"
-//
-// Ekverto A ("legacy") (2004-01-10)
-// Chusslove Illich (Ĉaslavo Iliĉo) <caslav.ilic@gmx.net>
-//
-// Ekverto B ("basic") (2006-12-02)
-// Benno Schulenberg (Beno Sĥilenberĥ) <bensberg@justemail.net>
-// Chusslove Illich (Ĉaslavo Iliĉo) <caslav.ilic@gmx.net>
-
-default partial alphanumeric_keys
-xkb_symbols "basic" {
-
- name[Group1]= "Esperanto";
-
- include "us(basic)"
-
- key.type[Group1] = "FOUR_LEVEL_ALPHABETIC";
-
- key <AD01> { [ scircumflex, Scircumflex, q, Q ] };
- key <AD02> { [ gcircumflex, Gcircumflex, w, W ] };
- key <AB02> { [ ccircumflex, Ccircumflex, x, X ] };
- key <AD06> { [ ubreve, Ubreve, y, Y ] };
-
- key.type[Group1] = "FOUR_LEVEL_SEMIALPHABETIC";
-
- key <AD11> { [ jcircumflex, Jcircumflex, bracketleft, braceleft ] };
- key <AD12> { [ hcircumflex, Hcircumflex, bracketright, braceright ] };
-
- key <AD09> { [ o, O, braceleft, braceleft ] };
- key <AD10> { [ p, P, braceright, braceright ] };
-
- key <AC01> { [ a, A, leftsinglequotemark, NoSymbol ] };
- key <AC02> { [ s, S, rightsinglequotemark, NoSymbol ] };
- key <AC03> { [ d, D, leftdoublequotemark, NoSymbol ] };
- key <AC04> { [ f, F, rightdoublequotemark, NoSymbol ] };
-
- key <AB06> { [ n, N, endash, endash ] };
- key <AB07> { [ m, M, emdash, emdash ] };
-
- key.type[Group1] = "FOUR_LEVEL";
-
- key <AE05> { [ 5, percent, EuroSign, EuroSign ] };
-
- include "level3(ralt_switch)"
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "legacy" {
-
- name[Group1]= "Esperanto - displaced semicolon and quote (obsolete)";
-
- key.type[Group1] = "FOUR_LEVEL";
-
- key <TLDE> { [ grave, asciitilde, NoSymbol, NoSymbol ] };
- key <AE01> { [ 1, exclam, NoSymbol, NoSymbol ] };
- key <AE02> { [ 2, quotedbl, NoSymbol, NoSymbol ] };
- key <AE03> { [ 3, numbersign, NoSymbol, NoSymbol ] };
- key <AE04> { [ 4, dollar, NoSymbol, NoSymbol ] };
- key <AE05> { [ 5, percent, NoSymbol, NoSymbol ] };
- key <AE06> { [ 6, apostrophe, NoSymbol, NoSymbol ] };
- key <AE07> { [ 7, ampersand, NoSymbol, NoSymbol ] };
- key <AE08> { [ 8, asterisk, NoSymbol, NoSymbol ] };
- key <AE09> { [ 9, parenleft, NoSymbol, NoSymbol ] };
- key <AE10> { [ 0, parenright, NoSymbol, NoSymbol ] };
- key <AE11> { [ minus, underscore, NoSymbol, NoSymbol ] };
- key <AE12> { [ equal, plus, NoSymbol, NoSymbol ] };
-
- key <AB08> { [ comma, semicolon, NoSymbol, NoSymbol ] };
- key <AB09> { [ period, colon, NoSymbol, NoSymbol ] };
- key <AB10> { [ slash, question, NoSymbol, NoSymbol ] };
-
- key <AD11> { [ bracketleft, braceleft, NoSymbol, NoSymbol ] };
- key <AD12> { [ bracketright, braceright, NoSymbol, NoSymbol ] };
-
- key <BKSL> { [ backslash, bar, NoSymbol, NoSymbol ] };
- key <LSGT> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
-
- key.type[Group1] = "FOUR_LEVEL_SEMIALPHABETIC";
-
- key <AD01> { [ scircumflex, Scircumflex, at, NoSymbol ] };
- key <AD02> { [ jcircumflex, Jcircumflex, asciicircum, NoSymbol ] };
- key <AD03> { [ e, E, EuroSign, NoSymbol ] };
- key <AD04> { [ r, R, emdash, NoSymbol ] };
- key <AD05> { [ t, T, endash, NoSymbol ] };
- key <AD06> { [ gcircumflex, Gcircumflex, NoSymbol, NoSymbol ] };
- key <AD07> { [ u, U, NoSymbol, NoSymbol ] };
- key <AD08> { [ i, I, NoSymbol, NoSymbol ] };
- key <AD09> { [ o, O, NoSymbol, NoSymbol ] };
- key <AD10> { [ p, P, NoSymbol, NoSymbol ] };
-
- key <AC01> { [ a, A, less, NoSymbol ] };
- key <AC02> { [ s, S, greater, NoSymbol ] };
- key <AC03> { [ d, D, leftdoublequotemark, NoSymbol ] };
- key <AC04> { [ f, F, rightdoublequotemark, NoSymbol ] };
- key <AC05> { [ g, G, NoSymbol, NoSymbol ] };
- key <AC06> { [ h, H, NoSymbol, NoSymbol ] };
- key <AC07> { [ j, J, NoSymbol, NoSymbol ] };
- key <AC08> { [ k, K, NoSymbol, NoSymbol ] };
- key <AC09> { [ l, L, NoSymbol, NoSymbol ] };
- key <AC10> { [ ubreve, Ubreve, NoSymbol, NoSymbol ] };
- key <AC11> { [ hcircumflex, Hcircumflex, NoSymbol, NoSymbol ] };
-
- key <AB01> { [ z, Z, leftsinglequotemark, NoSymbol ] };
- key <AB02> { [ ccircumflex, Ccircumflex, rightsinglequotemark, NoSymbol ] };
- key <AB03> { [ c, C, NoSymbol, NoSymbol ] };
- key <AB04> { [ v, V, NoSymbol, NoSymbol ] };
- key <AB05> { [ b, B, NoSymbol, NoSymbol ] };
- key <AB06> { [ n, N, NoSymbol, NoSymbol ] };
- key <AB07> { [ m, M, NoSymbol, NoSymbol ] };
-
- include "level3(ralt_switch)"
-};
-
-// Add Esperanto supersignos to the corresponding key in a Qwerty keyboard.
-// This is a generic "component" that is not used to the other layouts in this
-// file but it is meant to be applied to any layout. If you have any questions
-// ask J. Pablo Fernández <pupeno@pupeno.com>.
-partial
-xkb_symbols "qwerty" {
- key <AB03> { [ NoSymbol, NoSymbol, ccircumflex, Ccircumflex ] };
- key <AC05> { [ NoSymbol, NoSymbol, gcircumflex, Gcircumflex ] };
- key <AC06> { [ NoSymbol, NoSymbol, hcircumflex, Hcircumflex ] };
- key <AC07> { [ NoSymbol, NoSymbol, jcircumflex, Jcircumflex ] };
- key <AC02> { [ NoSymbol, NoSymbol, scircumflex, Scircumflex ] };
- key <AD07> { [ NoSymbol, NoSymbol, ubreve, Ubreve ] };
-};
-
-// Add Esperanto supersignos to the corresponding key in a Dvorak keyboard.
-// Same comment as the Qwerty one above applies.
-partial
-xkb_symbols "dvorak" {
- key <AD08> { [ NoSymbol, NoSymbol, ccircumflex, Ccircumflex ] };
- key <AD07> { [ NoSymbol, NoSymbol, gcircumflex, Gcircumflex ] };
- key <AC07> { [ NoSymbol, NoSymbol, hcircumflex, Hcircumflex ] };
- key <AB03> { [ NoSymbol, NoSymbol, jcircumflex, Jcircumflex ] };
- key <AC10> { [ NoSymbol, NoSymbol, scircumflex, Scircumflex ] };
- key <AC04> { [ NoSymbol, NoSymbol, ubreve, Ubreve ] };
-};
+// Esperanto keyboard maps -- "Ekverto"
+//
+// Ekverto A ("legacy") (2004-01-10)
+// Chusslove Illich (Ĉaslavo Iliĉo) <caslav.ilic@gmx.net>
+//
+// Ekverto B ("basic") (2006-12-02)
+// Benno Schulenberg (Beno Sĥilenberĥ) <bensberg@justemail.net>
+// Chusslove Illich (Ĉaslavo Iliĉo) <caslav.ilic@gmx.net>
+
+default partial alphanumeric_keys
+xkb_symbols "basic" {
+
+ name[Group1]= "Esperanto";
+
+ include "us(basic)"
+
+ key.type[Group1] = "FOUR_LEVEL_ALPHABETIC";
+
+ key <AD01> { [ scircumflex, Scircumflex, q, Q ] };
+ key <AD02> { [ gcircumflex, Gcircumflex, w, W ] };
+ key <AB02> { [ ccircumflex, Ccircumflex, x, X ] };
+ key <AD06> { [ ubreve, Ubreve, y, Y ] };
+
+ key.type[Group1] = "FOUR_LEVEL_SEMIALPHABETIC";
+
+ key <AD11> { [ jcircumflex, Jcircumflex, bracketleft, braceleft ] };
+ key <AD12> { [ hcircumflex, Hcircumflex, bracketright, braceright ] };
+
+ key <AD09> { [ o, O, braceleft, braceleft ] };
+ key <AD10> { [ p, P, braceright, braceright ] };
+
+ key <AC01> { [ a, A, leftsinglequotemark, NoSymbol ] };
+ key <AC02> { [ s, S, rightsinglequotemark, NoSymbol ] };
+ key <AC03> { [ d, D, leftdoublequotemark, NoSymbol ] };
+ key <AC04> { [ f, F, rightdoublequotemark, NoSymbol ] };
+
+ key <AB06> { [ n, N, endash, endash ] };
+ key <AB07> { [ m, M, emdash, emdash ] };
+
+ key.type[Group1] = "FOUR_LEVEL";
+
+ key <AE05> { [ 5, percent, EuroSign, EuroSign ] };
+
+ include "level3(ralt_switch)"
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "legacy" {
+
+ name[Group1]= "Esperanto - displaced semicolon and quote (obsolete)";
+
+ key.type[Group1] = "FOUR_LEVEL";
+
+ key <TLDE> { [ grave, asciitilde, NoSymbol, NoSymbol ] };
+ key <AE01> { [ 1, exclam, NoSymbol, NoSymbol ] };
+ key <AE02> { [ 2, quotedbl, NoSymbol, NoSymbol ] };
+ key <AE03> { [ 3, numbersign, NoSymbol, NoSymbol ] };
+ key <AE04> { [ 4, dollar, NoSymbol, NoSymbol ] };
+ key <AE05> { [ 5, percent, NoSymbol, NoSymbol ] };
+ key <AE06> { [ 6, apostrophe, NoSymbol, NoSymbol ] };
+ key <AE07> { [ 7, ampersand, NoSymbol, NoSymbol ] };
+ key <AE08> { [ 8, asterisk, NoSymbol, NoSymbol ] };
+ key <AE09> { [ 9, parenleft, NoSymbol, NoSymbol ] };
+ key <AE10> { [ 0, parenright, NoSymbol, NoSymbol ] };
+ key <AE11> { [ minus, underscore, NoSymbol, NoSymbol ] };
+ key <AE12> { [ equal, plus, NoSymbol, NoSymbol ] };
+
+ key <AB08> { [ comma, semicolon, NoSymbol, NoSymbol ] };
+ key <AB09> { [ period, colon, NoSymbol, NoSymbol ] };
+ key <AB10> { [ slash, question, NoSymbol, NoSymbol ] };
+
+ key <AD11> { [ bracketleft, braceleft, NoSymbol, NoSymbol ] };
+ key <AD12> { [ bracketright, braceright, NoSymbol, NoSymbol ] };
+
+ key <BKSL> { [ backslash, bar, NoSymbol, NoSymbol ] };
+ key <LSGT> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
+
+ key.type[Group1] = "FOUR_LEVEL_SEMIALPHABETIC";
+
+ key <AD01> { [ scircumflex, Scircumflex, at, NoSymbol ] };
+ key <AD02> { [ jcircumflex, Jcircumflex, asciicircum, NoSymbol ] };
+ key <AD03> { [ e, E, EuroSign, NoSymbol ] };
+ key <AD04> { [ r, R, emdash, NoSymbol ] };
+ key <AD05> { [ t, T, endash, NoSymbol ] };
+ key <AD06> { [ gcircumflex, Gcircumflex, NoSymbol, NoSymbol ] };
+ key <AD07> { [ u, U, NoSymbol, NoSymbol ] };
+ key <AD08> { [ i, I, NoSymbol, NoSymbol ] };
+ key <AD09> { [ o, O, NoSymbol, NoSymbol ] };
+ key <AD10> { [ p, P, NoSymbol, NoSymbol ] };
+
+ key <AC01> { [ a, A, less, NoSymbol ] };
+ key <AC02> { [ s, S, greater, NoSymbol ] };
+ key <AC03> { [ d, D, leftdoublequotemark, NoSymbol ] };
+ key <AC04> { [ f, F, rightdoublequotemark, NoSymbol ] };
+ key <AC05> { [ g, G, NoSymbol, NoSymbol ] };
+ key <AC06> { [ h, H, NoSymbol, NoSymbol ] };
+ key <AC07> { [ j, J, NoSymbol, NoSymbol ] };
+ key <AC08> { [ k, K, NoSymbol, NoSymbol ] };
+ key <AC09> { [ l, L, NoSymbol, NoSymbol ] };
+ key <AC10> { [ ubreve, Ubreve, NoSymbol, NoSymbol ] };
+ key <AC11> { [ hcircumflex, Hcircumflex, NoSymbol, NoSymbol ] };
+
+ key <AB01> { [ z, Z, leftsinglequotemark, NoSymbol ] };
+ key <AB02> { [ ccircumflex, Ccircumflex, rightsinglequotemark, NoSymbol ] };
+ key <AB03> { [ c, C, NoSymbol, NoSymbol ] };
+ key <AB04> { [ v, V, NoSymbol, NoSymbol ] };
+ key <AB05> { [ b, B, NoSymbol, NoSymbol ] };
+ key <AB06> { [ n, N, NoSymbol, NoSymbol ] };
+ key <AB07> { [ m, M, NoSymbol, NoSymbol ] };
+
+ include "level3(ralt_switch)"
+};
+
+// Add Esperanto supersignos to the corresponding key in a Qwerty keyboard.
+// This is a generic "component" that is not used to the other layouts in this
+// file but it is meant to be applied to any layout. If you have any questions
+// ask J. Pablo Fernández <pupeno@pupeno.com>.
+partial
+xkb_symbols "qwerty" {
+ key <AB03> { [ NoSymbol, NoSymbol, ccircumflex, Ccircumflex ] };
+ key <AC05> { [ NoSymbol, NoSymbol, gcircumflex, Gcircumflex ] };
+ key <AC06> { [ NoSymbol, NoSymbol, hcircumflex, Hcircumflex ] };
+ key <AC07> { [ NoSymbol, NoSymbol, jcircumflex, Jcircumflex ] };
+ key <AC02> { [ NoSymbol, NoSymbol, scircumflex, Scircumflex ] };
+ key <AD07> { [ NoSymbol, NoSymbol, ubreve, Ubreve ] };
+};
+
+// Add Esperanto supersignos to the corresponding key in a Dvorak keyboard.
+// Same comment as the Qwerty one above applies.
+partial
+xkb_symbols "dvorak" {
+ key <AD08> { [ NoSymbol, NoSymbol, ccircumflex, Ccircumflex ] };
+ key <AD07> { [ NoSymbol, NoSymbol, gcircumflex, Gcircumflex ] };
+ key <AC07> { [ NoSymbol, NoSymbol, hcircumflex, Hcircumflex ] };
+ key <AB03> { [ NoSymbol, NoSymbol, jcircumflex, Jcircumflex ] };
+ key <AC10> { [ NoSymbol, NoSymbol, scircumflex, Scircumflex ] };
+ key <AC04> { [ NoSymbol, NoSymbol, ubreve, Ubreve ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/es b/xorg-server/xkeyboard-config/symbols/es
index 70f8088a8..048a9f03a 100644
--- a/xorg-server/xkeyboard-config/symbols/es
+++ b/xorg-server/xkeyboard-config/symbols/es
@@ -1,9 +1,6 @@
-// $XKeyboardConfig$
-
// based on a keyboard
// Modified for a real Spanish Keyboard by Jon Tombs
//
-// $XFree86: xc/programs/xkbcomp/symbols/es,v 1.2 2002/11/22 04:03:28 dawes Exp $
partial default alphanumeric_keys
xkb_symbols "basic" {
diff --git a/xorg-server/xkeyboard-config/symbols/et b/xorg-server/xkeyboard-config/symbols/et
index f3d4a98db..6f71b2f97 100644
--- a/xorg-server/xkeyboard-config/symbols/et
+++ b/xorg-server/xkeyboard-config/symbols/et
@@ -1,75 +1,73 @@
-// $XKeyboardConfig$
-
-//
-// Ethiopia
-// Designed as a part of OLPC project
-//
-// 2007 Sergey Udaltsov <svu@gnome.org>
-//
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
- include "et(olpc)"
- name[Group1]="Ethiopia";
-};
-
-partial alphanumeric_keys
-xkb_symbols "olpc" {
-
- name[Group1]="Ethiopia";
-
- key <AE01> { [ 0x01001369, 0x01001372 ] }; // 1
- key <AE02> { [ 0x0100136a, 0x01001373 ] }; // 2
- key <AE03> { [ 0x0100136b, 0x01001374 ] }; // 3
- key <AE04> { [ 0x0100136c, 0x01001375 ] }; // 4
- key <AE05> { [ 0x0100136d, 0x01001376 ] }; // 5
- key <AE06> { [ 0x0100136e, 0x01001377 ] }; // 6
- key <AE07> { [ 0x0100136f, 0x01001378 ] }; // 7
- key <AE08> { [ 0x01001370, 0x01001379 ] }; // 8
- key <AE09> { [ 0x01001371, 0x0100137a ] }; // 9
- key <AE10> { [ 0x0100137b, 0x0100137c ] }; // 0
- key <AE11> { [ minus, underscore ] }; // -_
- key <AE12> { [ equal, plus ] }; // =+
-
- key <AD01> { [ 0x01001240, 0x01001250 ] }; // q
- key <AD02> { [ 0x010012C8, VoidSymbol ] }; // w
- key <AD03> { [ e, E ] }; // e
- key <AD04> { [ 0x01001228, VoidSymbol ] }; // r
- key <AD05> { [ 0x01001270, 0x01001320 ] }; // t
- key <AD06> { [ 0x010012E8, VoidSymbol ] }; // y
- key <AD07> { [ u, U ] }; // u
- key <AD08> { [ i, I ] }; // i
- key <AD09> { [ o, O ] }; // o
- key <AD10> { [ 0x01001350, 0x01001330 ] }; // p
- key <AD11> { [ 0x01001340, 0x01001338 ] }; // [
- key <AD12> { [ 0x01001328, 0x01001280 ] }; // ]
-
- key <AC01> { [ a, A ] }; // a
- key <AC02> { [ 0x01001230, 0x01001220 ] }; // s
- key <AC03> { [ 0x010012F0, 0x010012F8 ] }; // d
- key <AC04> { [ 0x01001348, VoidSymbol ] }; // f
- key <AC05> { [ 0x01001308, 0x01001318 ] }; // g
- key <AC06> { [ 0x01001200, 0x01001210 ] }; // h
- key <AC07> { [ 0x01001300, VoidSymbol ] }; // j
- key <AC08> { [ 0x010012A8, 0x010012B8 ] }; // k
- key <AC09> { [ 0x01001208, VoidSymbol ] }; // l
-
- key <AC10> { [ 0x01001362, 0x01001361 ] }; // :;
- key <AC11> { [ 0x01001366, 0x01001365 ] }; // '"
-
- key <AB01> { [ 0x010012D8, 0x010012E0 ] }; // z
- key <AB02> { [ 0x010012A0, 0x010012D0 ] }; // x
- key <AB03> { [ 0x01001278, VoidSymbol ] }; // c
- key <AB04> { [ 0x01001238, 0x01001268 ] }; // v
- key <AB05> { [ 0x01001260, VoidSymbol ] }; // b
- key <AB06> { [ 0x01001290, 0x01001298 ] }; // n
- key <AB07> { [ 0x01001218, VoidSymbol ] }; // m
-
- key <AB08> { [ 0x01001363, VoidSymbol ] }; // <
- key <AB09> { [ 0x01001364, VoidSymbol ] }; // >
- key <AB10> { [ 0x01001367, VoidSymbol ] }; // ?
-
- key <BKSL> { [ VoidSymbol, 0x01002010 ] }; // bksl
-
- include "group(olpc)"
-};
+//
+// Ethiopia
+// Designed as a part of OLPC project
+//
+// 2007 Sergey Udaltsov <svu@gnome.org>
+//
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ include "et(olpc)"
+ name[Group1]="Ethiopia";
+};
+
+partial alphanumeric_keys
+xkb_symbols "olpc" {
+
+ name[Group1]="Ethiopia";
+
+ key <AE01> { [ 0x01001369, 0x01001372 ] }; // 1
+ key <AE02> { [ 0x0100136a, 0x01001373 ] }; // 2
+ key <AE03> { [ 0x0100136b, 0x01001374 ] }; // 3
+ key <AE04> { [ 0x0100136c, 0x01001375 ] }; // 4
+ key <AE05> { [ 0x0100136d, 0x01001376 ] }; // 5
+ key <AE06> { [ 0x0100136e, 0x01001377 ] }; // 6
+ key <AE07> { [ 0x0100136f, 0x01001378 ] }; // 7
+ key <AE08> { [ 0x01001370, 0x01001379 ] }; // 8
+ key <AE09> { [ 0x01001371, 0x0100137a ] }; // 9
+ key <AE10> { [ 0x0100137b, 0x0100137c ] }; // 0
+ key <AE11> { [ minus, underscore ] }; // -_
+ key <AE12> { [ equal, plus ] }; // =+
+
+ key <AD01> { [ 0x01001240, 0x01001250 ] }; // q
+ key <AD02> { [ 0x010012C8, VoidSymbol ] }; // w
+ key <AD03> { [ e, E ] }; // e
+ key <AD04> { [ 0x01001228, VoidSymbol ] }; // r
+ key <AD05> { [ 0x01001270, 0x01001320 ] }; // t
+ key <AD06> { [ 0x010012E8, VoidSymbol ] }; // y
+ key <AD07> { [ u, U ] }; // u
+ key <AD08> { [ i, I ] }; // i
+ key <AD09> { [ o, O ] }; // o
+ key <AD10> { [ 0x01001350, 0x01001330 ] }; // p
+ key <AD11> { [ 0x01001340, 0x01001338 ] }; // [
+ key <AD12> { [ 0x01001328, 0x01001280 ] }; // ]
+
+ key <AC01> { [ a, A ] }; // a
+ key <AC02> { [ 0x01001230, 0x01001220 ] }; // s
+ key <AC03> { [ 0x010012F0, 0x010012F8 ] }; // d
+ key <AC04> { [ 0x01001348, VoidSymbol ] }; // f
+ key <AC05> { [ 0x01001308, 0x01001318 ] }; // g
+ key <AC06> { [ 0x01001200, 0x01001210 ] }; // h
+ key <AC07> { [ 0x01001300, VoidSymbol ] }; // j
+ key <AC08> { [ 0x010012A8, 0x010012B8 ] }; // k
+ key <AC09> { [ 0x01001208, VoidSymbol ] }; // l
+
+ key <AC10> { [ 0x01001362, 0x01001361 ] }; // :;
+ key <AC11> { [ 0x01001366, 0x01001365 ] }; // '"
+
+ key <AB01> { [ 0x010012D8, 0x010012E0 ] }; // z
+ key <AB02> { [ 0x010012A0, 0x010012D0 ] }; // x
+ key <AB03> { [ 0x01001278, VoidSymbol ] }; // c
+ key <AB04> { [ 0x01001238, 0x01001268 ] }; // v
+ key <AB05> { [ 0x01001260, VoidSymbol ] }; // b
+ key <AB06> { [ 0x01001290, 0x01001298 ] }; // n
+ key <AB07> { [ 0x01001218, VoidSymbol ] }; // m
+
+ key <AB08> { [ 0x01001363, VoidSymbol ] }; // <
+ key <AB09> { [ 0x01001364, VoidSymbol ] }; // >
+ key <AB10> { [ 0x01001367, VoidSymbol ] }; // ?
+
+ key <BKSL> { [ VoidSymbol, 0x01002010 ] }; // bksl
+
+ include "group(olpc)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/eurosign b/xorg-server/xkeyboard-config/symbols/eurosign
index 61a4057b0..380350174 100644
--- a/xorg-server/xkeyboard-config/symbols/eurosign
+++ b/xorg-server/xkeyboard-config/symbols/eurosign
@@ -1,5 +1,3 @@
-// $XKeyboardConfig$
-
// Most keyboards have the EuroSign engraved on the E key
partial
xkb_symbols "e" {
@@ -23,4 +21,3 @@ partial
xkb_symbols "5" {
key <AE05> { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] };
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/extras/apl b/xorg-server/xkeyboard-config/symbols/extras/apl
index 512277a75..57cdb0824 100644
--- a/xorg-server/xkeyboard-config/symbols/extras/apl
+++ b/xorg-server/xkeyboard-config/symbols/extras/apl
@@ -1,296 +1,294 @@
-// APL Keyboard Layouts
-
-// This file supports:
-// - The Sharp APL for Unix (SAX) layout
-// - The IBM APL2 layout
-// - The Manugistics APL*PLUS II (Version 5.1, 1993) keyboard layout
-
-// Unicode APL table: http://aplwiki.com/UnicodeAplTable
-// ...and another: http://publibfp.boulder.ibm.com/epubs/pdf/h2110611.pdf (appendix A)
-// Generic Unicode stuff: http://www.fileformat.info/info/unicode/category/index.htm
-
-// Tim Nelson (this file's creator) says:
-
-// This file doesn't deal with all the combining stuff -- I'm not an APL programmer,
-// and am not quite sure what's needed here. However, it may be possible to get this
-// working with dead keys and the like. Patches gratefully accepted.
-
-// Some of the shift-key assignments may differ from the APL tradition. If
-// that's not considered acceptable, it should be possible to remap the
-// shift keys. I have striven, however, to ensure that the use of shift keys
-// in these maps is at least self-consistent.
-
-// I'm assuming that this will be used with another keyboard layout (ie. for
-// your language), with a special shift key to use these maps.
-
-partial alphanumeric_keys modifier_keys
-xkb_symbols "common" {
- name[Group1]= "APL";
-
- key <AE01> { [ diaeresis ] };
- key <AE02> { [ U00AF ] }; // ¯ -- Macron
- key <AE03> { [ less ] };
- key <AE04> { [ U2264 ] }; // ≤ -- Less-than Or Equal To
- key <AE05> { [ equal ] };
- key <AE06> { [ U2265 ] }; // ≥ -- Greater-than Or Equal To
- key <AE07> { [ greater ] };
- key <AE08> { [ U2260 ] }; // ≠ -- Not Equal To
- key <AE09> { [ U2228 ] }; // ∨ -- Logical Or
- key <AE10> { [ U2227 ] }; // ∧ -- Logical And
-
- // Q
- key <AD01> { [ question ] };
- // W
- key <AD02> { [ U2375 ] }; // ⍵ -- APL Functional Symbol Omega
- // E
- key <AD03> { [ U220A ] }; // ∊ -- Small Element Of
- // R
- key <AD04> { [ U2374 ] }; // ⍴ -- APL Functional Symbol Rho
- // T
- key <AD05> { [ asciitilde ] };
- // Y
- key <AD06> { [ U2191 ] }; // ↑ -- Upwards Arrow
- // U
- key <AD07> { [ U2193 ] }; // ↓ -- Downwards Arrow
- // I
- key <AD08> { [ U2373 ] }; // ⍳ -- APL Functional Symbol Iota
- // O
- key <AD09> { [ U25CB ] }; // ○ -- White Circle
- // P
- key <AD10> { [ U22C6 ] }; // ⋆ -- Should this be a plain asterisk, or the star operator???
- // [
- key <AD11> { [ U2190 ] }; // ← -- Leftwards Arrow
-
- // A
- key <AC01> { [ U237A ] }; // ⍺ -- APL Functional Symbol Alpha
- // S
- key <AC02> { [ U2308 ] }; // ⌈ -- Left Ceiling
- // D
- key <AC03> { [ U230A ] }; // ⌊ -- Left Floor
- // F
- key <AC04> { [ underscore ] };
- // G
- key <AC05> { [ U2207 ] }; // ∇ -- Nabla
- // H
- key <AC06> { [ U2206 ] }; // ∆ -- Increment
- // J
- key <AC07> { [ U2218 ] }; // ∘ -- Ring Operator
- // K
- key <AC08> { [ apostrophe ] };
- // L
- key <AC09> { [ U2395 ] }; // ⎕ -- APL Functional Symbol Quad
-
- // Z
- key <AB01> { [ U2282 ] }; // ⊂ -- Subset Of
- // X
- key <AB02> { [ U2283 ] }; // ⊃ -- Superset Of
- // C
- key <AB03> { [ U2229 ] }; // ∩ -- Intersection
- // V
- key <AB04> { [ U222A ] }; // ∪ -- Union
- // B
- key <AB05> { [ U22A5 ] }; // ⊥ -- Up Tack
- // N
- key <AB06> { [ U22A4 ] }; // ⊤ -- Down Tack
- // M
- key <AB07> { [ U007C ] }; // | -- Vertical Line
-};
-
-// Keys common to a number of keyboards that allow normal language usage alongside APL
-partial alphanumeric_keys modifier_keys
-xkb_symbols "unified" {
- name[Group1]= "APL Keyboard Symbols: Unified Layout";
-
- include "apl(common)"
-
- // `
- key <TLDE> { [ U22C4 ] }; // ⋄ -- Diamond Operator
- key <AE09> { [ NoSymbol, U2371 ] }; // ⍱ -- APL Functional Symbol Down Caret Tilde
- key <AE10> { [ NoSymbol, U2372 ] }; // ⍲ -- APL Functional Symbol Up Caret Tilde
- // -
- key <AE11> { [ U00D7 ] }; // × -- Multiplication Sign
- // =
- key <AE12> { [ U00F7, U2339 ] }; // ÷ ⌹ -- Division Sign / APL Functional Symbol Quad Divide
-
- // ]
- key <AD12> { [ U2192 ] }; // → -- Rightwards Arrow
-};
-
-// Layout: http://www.wickensonline.co.uk/apl-unicomp.html
-default
-partial alphanumeric_keys modifier_keys
-xkb_symbols "sax" {
- name[Group1]= "APL Keyboard Symbols: Sharp APL for Unix";
-
- include "apl(unified)"
-
- key <AE01> { [ NoSymbol, U00A1 ] }; // ¡ -- Inverted Exclamation Mark
- key <AE04> { [ NoSymbol, cent ] };
- key <AE08> { [ NoSymbol, U2342 ] }; // ⍂ -- APL Functional Symbol Quad Backslash
- // -
- key <AE11> { [ NoSymbol, U2261 ] }; // ≡ -- Identical To
-
- // Q
- key <AD01> { [ NoSymbol, U00BF ] }; // ¿ -- Inverted Question Mark
- // W
- key <AD02> { [ NoSymbol, U233D ] }; // ⌽ -- APL Functional Symbol Circle Stile
- // E
- key <AD03> { [ NoSymbol, U2377 ] }; // ⍷ -- APL Functional Symbol Epsilon Underbar
- // T
- key <AD05> { [ NoSymbol, U2349 ] }; // ⍉ -- APL Functional Symbol Circle Backslash
- // I
- key <AD08> { [ NoSymbol, U2378 ] }; // ⍸ -- APL Functional Symbol Iota Underbar
- // O
- key <AD09> { [ NoSymbol, U2365 ] }; // ⍥ -- APL Functional Symbol Circle Diaeresis
- // P
- key <AD10> { [ NoSymbol, U235F ] }; // ⍟ -- APL Functional Symbol Circle Star
-
- // A
- key <AC01> { [ NoSymbol, U2296 ] }; // ⊖ -- Circled Minus
- // F
- key <AC04> { [ NoSymbol, U236B ] }; // ⍫ -- APL Functional Symbol Del Tilde
- // G
- key <AC05> { [ NoSymbol, U2352 ] }; // ∇ ⍒ -- APL Functional Symbol Del Stile
- // H
- key <AC06> { [ NoSymbol, U234B ] }; // ∆ ⍋ -- APL Functional Symbol Delta Stile
- // J
- key <AC07> { [ NoSymbol, U2364 ] }; // ⍤ -- APL Functional Symbol Jot Diaeresis
- // K
- key <AC08> { [ NoSymbol, U233B ] }; // ⌻
- // L
- key <AC09> { [ NoSymbol, U235E ] }; // ⍞ -- APL Functional Symbol Quote Quad
- // ;
- key <AC10> { [ U22A2 ] }; // ⊢ -- Right Tack
- // '
- key <AC11> { [ U22A3 ] }; // ⊣ -- Left Tack
-
- // C
- key <AB03> { [ NoSymbol, U235D ] }; // ⍝ -- APL Functional Symbol Up Shoe Jot
- // B
- key <AB05> { [ NoSymbol, U234E ] }; // ⍎ -- APL Functional Symbol Down Tack Jot (Unicode got the name wrong; it should have been "Up Tack")
- // N
- key <AB06> { [ NoSymbol, U2355 ] }; // ⍕ -- APL Functional Symbol Up Tack Jot (Unicode got the name wrong; it should have been "Down Tack")
- // M
- key <AB07> { [ NoSymbol, U2336 ] }; // ⌶ -- APL Functional Symbol I-Beam
- // ,
- key <AB08> { [ U235E, U236A ] }; // ⍞ ⍪ -- APL Functional Symbol Quote Quad / APL Functional Symbol Comma Bar
- // .
- key <AB09> { [ U234E, U2359 ] }; // ⍎ ⍙ -- [See B key] / APL Functional Symbol Delta Underbar
- // /
- key <AB10> { [ U2355, U233F ] }; // ⍕ ⌿ -- [See N key] / APL Functional Symbol Slash Bar
-
- key <BKSL> { [ U235D, U2340 ] }; // ⍝ ⍀ -- APL Functional Symbol Up Shoe Jot / APL Functional Symbol Backslash Bar
-};
-
-// Layout: http://www.wickensonline.co.uk/apl-unicomp.html
-partial alphanumeric_keys modifier_keys
-xkb_symbols "apl2" {
- name[Group1]= "APL Keyboard Symbols: IBM APL2";
-
- include "apl(common)"
-
- // The first column is NoSymbol because it inherits. The second is NoSymbol because those keys don't do anything
-
- // `
- key <TLDE> { [ NoSymbol, U233B, U2342 ] }; // ⌻ ⍂ --
- key <AE01> { [ NoSymbol, NoSymbol, U2336 ] }; // ⌶ -- APL Functional Symbol I-Beam
- key <AE02> { [ NoSymbol, NoSymbol, U236B ] }; // ⍫ -- APL Functional Symbol Del Tilde
- key <AE03> { [ NoSymbol, NoSymbol, U2353 ] }; // ⍒ -- APL Functional Symbol Del Stile
- key <AE04> { [ NoSymbol, NoSymbol, U234B ] }; // ⍋ -- APL Functional Symbol Delta Stile
- key <AE05> { [ NoSymbol, NoSymbol, U233D ] }; // ⌽ -- APL Functional Symbol Circle Stile
- key <AE06> { [ NoSymbol, NoSymbol, U2349 ] }; // ⍉ -- APL Functional Symbol Circle Backslash
- key <AE07> { [ NoSymbol, NoSymbol, U2296 ] }; // ⊖ -- Circled Minus
- key <AE08> { [ NoSymbol, NoSymbol, U235F ] }; // ⍟ -- APL Functional Symbol Circle Star
- key <AE09> { [ NoSymbol, NoSymbol, U2371 ] }; // ⍱ -- APL Functional Symbol Down Caret Tilde
- key <AE10> { [ NoSymbol, NoSymbol, U2372 ] }; // ⍲ -- APL Functional Symbol Up Caret Tilde
- // -
- key <AE11> { [ plus, minus, exclam ] };
- // =
- key <AE12> { [ U00D7, U00F7, U2339 ] }; // × ÷ ⌹ -- Multiplication Sign / Division Sign / APL Functional Symbol Quad Divide
-
- // [
- key <AD11> { [ NoSymbol, U2192, U235E ] }; // (←) → ⍞ -- Rightwards Arrow / APL Functional Symbol Quote Quad
- // ]
- key <AD12> { [ U2337, U2378, U2359 ] }; // ⌷ ⍸ ⍙ -- APL Functional Symbol Squish Quad / APL Functional Symbol Iota Underbar / APL Functional Symbol Delta Underbar
-
- // ;
- key <AC10> { [ bracketleft, parenleft, U234E ] }; // ⍎ -- [See B key in SAX layout]
- // '
- key <AC11> { [ bracketright, parenright, U2355 ] }; // ⍕ -- [See N key in SAX layout]
-
- // ,
- key <AB08> { [ comma, semicolon, U235D ] }; // ⍝ -- APL Functional Symbol Up Shoe Jot
- // .
- key <AB09> { [ period, colon, U2340 ] }; // ⍀ -- APL Functional Symbol Backslash Bar
- // /
- key <AB10> { [ slash, backslash, U233F ] }; // ⌿ -- APL Functional Symbol Slash Bar
-
- key <BKSL> { [ U2261, U2377, U2364 ] }; // ≡ ⍷ ⍤ -- Identical To / APL Functional Symbol Epsilon Underbar / APL Functional Symbol Jot Diaeresis
-};
-
-partial alphanumeric_keys modifier_keys
-xkb_symbols "aplplusII" {
- name[Group1]= "APL Keyboard Symbols: Manugistics APL*PLUS II";
-
- include "apl(apl2)"
-
- // `
- key <TLDE> { [ dollar, U22C4, U236A ] }; // ⋄ ⍪ -- Diamond Operator / APL Functional Symbol Comma Bar
- key <AE01> { [ NoSymbol, NoSymbol, U2261 ] }; // ≡ -- Identical To
-
- // [
- key <AD11> { [ U2190, NoSymbol, U235E ] }; // ← ⍞ -- Leftwards Arrow / APL Functional Symbol Quote Quad
- // ]
- key <AD12> { [ U2192, NoSymbol, U236C ] }; // → ⍬ -- Rightwards Arrow / APL Functional Symbol Zilde
-
- // ;
- key <AC10> { [ bracketleft, parenleft, U234E ] }; // ⍎ -- [See B key in SAX layout]
- // '
- key <AC11> { [ bracketright, parenright, U2355 ] }; // ⍕ -- [See N key in SAX layout]
-
- key <BKSL> { [ U22A3, U22A2, U2359 ] }; // ⊣ ⊢ ⍙ -- Left Tack / Right Tack / APL Functional Symbol Delta Underbar
-};
-
-
-// MicroAPL layout: http://aplwiki.com/APLXKeyboardLayouts
-// I didn't do the old-style MicroAPL layout; patches gratefully accepted
-partial alphanumeric_keys modifier_keys
-xkb_symbols "aplx" {
- name[Group1]= "APL Keyboard Symbols: APLX Unified APL Layout";
-
- include "apl(unified)"
-
- // `
- key <TLDE> { [ NoSymbol, U235E ] }; // ⍞ -- APL Functional Symbol Quote Quad
- key <AE01> { [ NoSymbol, U2336 ] }; // ⌶ -- APL Functional Symbol I-Beam
- key <AE02> { [ NoSymbol, U236B ] }; // ⍫ -- APL Functional Symbol Del Tilde
- key <AE03> { [ NoSymbol, U2353 ] }; // ⍒ -- APL Functional Symbol Del Stile
- key <AE04> { [ NoSymbol, U234B ] }; // ⍋ -- APL Functional Symbol Delta Stile
- key <AE05> { [ NoSymbol, U233D ] }; // ⌽ -- APL Functional Symbol Circle Stile
- key <AE06> { [ NoSymbol, U2349 ] }; // ⍉ -- APL Functional Symbol Circle Backslash
- key <AE07> { [ NoSymbol, U2296 ] }; // ⊖ -- Circled Minus
- key <AE08> { [ NoSymbol, U235F ] }; // ⍟ -- APL Functional Symbol Circle Star
- // -
- key <AE11> { [ NoSymbol, exclam ] };
-
- // [
- key <AD11> { [ NoSymbol, U2347 ] }; // ⍇ -- Box With Left Arrow
- // ]
- key <AD12> { [ NoSymbol, U2348 ] }; // ⍈ -- Box With Right Arrow
-
- // ;
- key <AC10> { [ U234E, U2261 ] }; // ⍎ ≡ -- [See B key in SAX layout] / Identical To
- // '
- key <AC11> { [ U2355, U2262 ] }; // ⍕ ≢ -- [See N key in SAX layout] / Not Identical To
-
- // ,
- key <AB08> { [ U235D, U236A ] }; // ⍝ ⍪ -- APL Functional Symbol Up Shoe Jot / APL Functional Symbol Comma Bar
- // .
- key <AB09> { [ U2340, U2364 ] }; // ⍀ ⍤ -- APL Functional Symbol Backslash Bar / APL Functional Symbol Jot Diaeresis
- // /
- key <AB10> { [ U233F ] }; // ⌿ -- APL Functional Symbol Slash Bar
-
- key <BKSL> { [ U22A3, U22A3 ] }; // ⊣ ⊢ -- Left Tack / Right Tack
-};
-
-
+// APL Keyboard Layouts
+
+// This file supports:
+// - The Sharp APL for Unix (SAX) layout
+// - The IBM APL2 layout
+// - The Manugistics APL*PLUS II (Version 5.1, 1993) keyboard layout
+
+// Unicode APL table: http://aplwiki.com/UnicodeAplTable
+// ...and another: http://publibfp.boulder.ibm.com/epubs/pdf/h2110611.pdf (appendix A)
+// Generic Unicode stuff: http://www.fileformat.info/info/unicode/category/index.htm
+
+// Tim Nelson (this file's creator) says:
+
+// This file doesn't deal with all the combining stuff -- I'm not an APL programmer,
+// and am not quite sure what's needed here. However, it may be possible to get this
+// working with dead keys and the like. Patches gratefully accepted.
+
+// Some of the shift-key assignments may differ from the APL tradition. If
+// that's not considered acceptable, it should be possible to remap the
+// shift keys. I have striven, however, to ensure that the use of shift keys
+// in these maps is at least self-consistent.
+
+// I'm assuming that this will be used with another keyboard layout (ie. for
+// your language), with a special shift key to use these maps.
+
+partial alphanumeric_keys modifier_keys
+xkb_symbols "common" {
+ name[Group1]= "APL";
+
+ key <AE01> { [ diaeresis ] };
+ key <AE02> { [ U00AF ] }; // ¯ -- Macron
+ key <AE03> { [ less ] };
+ key <AE04> { [ U2264 ] }; // ≤ -- Less-than Or Equal To
+ key <AE05> { [ equal ] };
+ key <AE06> { [ U2265 ] }; // ≥ -- Greater-than Or Equal To
+ key <AE07> { [ greater ] };
+ key <AE08> { [ U2260 ] }; // ≠ -- Not Equal To
+ key <AE09> { [ U2228 ] }; // ∨ -- Logical Or
+ key <AE10> { [ U2227 ] }; // ∧ -- Logical And
+
+ // Q
+ key <AD01> { [ question ] };
+ // W
+ key <AD02> { [ U2375 ] }; // ⍵ -- APL Functional Symbol Omega
+ // E
+ key <AD03> { [ U220A ] }; // ∊ -- Small Element Of
+ // R
+ key <AD04> { [ U2374 ] }; // ⍴ -- APL Functional Symbol Rho
+ // T
+ key <AD05> { [ asciitilde ] };
+ // Y
+ key <AD06> { [ U2191 ] }; // ↑ -- Upwards Arrow
+ // U
+ key <AD07> { [ U2193 ] }; // ↓ -- Downwards Arrow
+ // I
+ key <AD08> { [ U2373 ] }; // ⍳ -- APL Functional Symbol Iota
+ // O
+ key <AD09> { [ U25CB ] }; // ○ -- White Circle
+ // P
+ key <AD10> { [ U22C6 ] }; // ⋆ -- Should this be a plain asterisk, or the star operator???
+ // [
+ key <AD11> { [ U2190 ] }; // ← -- Leftwards Arrow
+
+ // A
+ key <AC01> { [ U237A ] }; // ⍺ -- APL Functional Symbol Alpha
+ // S
+ key <AC02> { [ U2308 ] }; // ⌈ -- Left Ceiling
+ // D
+ key <AC03> { [ U230A ] }; // ⌊ -- Left Floor
+ // F
+ key <AC04> { [ underscore ] };
+ // G
+ key <AC05> { [ U2207 ] }; // ∇ -- Nabla
+ // H
+ key <AC06> { [ U2206 ] }; // ∆ -- Increment
+ // J
+ key <AC07> { [ U2218 ] }; // ∘ -- Ring Operator
+ // K
+ key <AC08> { [ apostrophe ] };
+ // L
+ key <AC09> { [ U2395 ] }; // ⎕ -- APL Functional Symbol Quad
+
+ // Z
+ key <AB01> { [ U2282 ] }; // ⊂ -- Subset Of
+ // X
+ key <AB02> { [ U2283 ] }; // ⊃ -- Superset Of
+ // C
+ key <AB03> { [ U2229 ] }; // ∩ -- Intersection
+ // V
+ key <AB04> { [ U222A ] }; // ∪ -- Union
+ // B
+ key <AB05> { [ U22A5 ] }; // ⊥ -- Up Tack
+ // N
+ key <AB06> { [ U22A4 ] }; // ⊤ -- Down Tack
+ // M
+ key <AB07> { [ U007C ] }; // | -- Vertical Line
+};
+
+// Keys common to a number of keyboards that allow normal language usage alongside APL
+partial alphanumeric_keys modifier_keys
+xkb_symbols "unified" {
+ name[Group1]= "APL Keyboard Symbols: Unified Layout";
+
+ include "apl(common)"
+
+ // `
+ key <TLDE> { [ U22C4 ] }; // ⋄ -- Diamond Operator
+ key <AE09> { [ NoSymbol, U2371 ] }; // ⍱ -- APL Functional Symbol Down Caret Tilde
+ key <AE10> { [ NoSymbol, U2372 ] }; // ⍲ -- APL Functional Symbol Up Caret Tilde
+ // -
+ key <AE11> { [ U00D7 ] }; // × -- Multiplication Sign
+ // =
+ key <AE12> { [ U00F7, U2339 ] }; // ÷ ⌹ -- Division Sign / APL Functional Symbol Quad Divide
+
+ // ]
+ key <AD12> { [ U2192 ] }; // → -- Rightwards Arrow
+};
+
+// Layout: http://www.wickensonline.co.uk/apl-unicomp.html
+default
+partial alphanumeric_keys modifier_keys
+xkb_symbols "sax" {
+ name[Group1]= "APL Keyboard Symbols: Sharp APL for Unix";
+
+ include "apl(unified)"
+
+ key <AE01> { [ NoSymbol, U00A1 ] }; // ¡ -- Inverted Exclamation Mark
+ key <AE04> { [ NoSymbol, cent ] };
+ key <AE08> { [ NoSymbol, U2342 ] }; // ⍂ -- APL Functional Symbol Quad Backslash
+ // -
+ key <AE11> { [ NoSymbol, U2261 ] }; // ≡ -- Identical To
+
+ // Q
+ key <AD01> { [ NoSymbol, U00BF ] }; // ¿ -- Inverted Question Mark
+ // W
+ key <AD02> { [ NoSymbol, U233D ] }; // ⌽ -- APL Functional Symbol Circle Stile
+ // E
+ key <AD03> { [ NoSymbol, U2377 ] }; // ⍷ -- APL Functional Symbol Epsilon Underbar
+ // T
+ key <AD05> { [ NoSymbol, U2349 ] }; // ⍉ -- APL Functional Symbol Circle Backslash
+ // I
+ key <AD08> { [ NoSymbol, U2378 ] }; // ⍸ -- APL Functional Symbol Iota Underbar
+ // O
+ key <AD09> { [ NoSymbol, U2365 ] }; // ⍥ -- APL Functional Symbol Circle Diaeresis
+ // P
+ key <AD10> { [ NoSymbol, U235F ] }; // ⍟ -- APL Functional Symbol Circle Star
+
+ // A
+ key <AC01> { [ NoSymbol, U2296 ] }; // ⊖ -- Circled Minus
+ // F
+ key <AC04> { [ NoSymbol, U236B ] }; // ⍫ -- APL Functional Symbol Del Tilde
+ // G
+ key <AC05> { [ NoSymbol, U2352 ] }; // ∇ ⍒ -- APL Functional Symbol Del Stile
+ // H
+ key <AC06> { [ NoSymbol, U234B ] }; // ∆ ⍋ -- APL Functional Symbol Delta Stile
+ // J
+ key <AC07> { [ NoSymbol, U2364 ] }; // ⍤ -- APL Functional Symbol Jot Diaeresis
+ // K
+ key <AC08> { [ NoSymbol, U233B ] }; // ⌻
+ // L
+ key <AC09> { [ NoSymbol, U235E ] }; // ⍞ -- APL Functional Symbol Quote Quad
+ // ;
+ key <AC10> { [ U22A2 ] }; // ⊢ -- Right Tack
+ // '
+ key <AC11> { [ U22A3 ] }; // ⊣ -- Left Tack
+
+ // C
+ key <AB03> { [ NoSymbol, U235D ] }; // ⍝ -- APL Functional Symbol Up Shoe Jot
+ // B
+ key <AB05> { [ NoSymbol, U234E ] }; // ⍎ -- APL Functional Symbol Down Tack Jot (Unicode got the name wrong; it should have been "Up Tack")
+ // N
+ key <AB06> { [ NoSymbol, U2355 ] }; // ⍕ -- APL Functional Symbol Up Tack Jot (Unicode got the name wrong; it should have been "Down Tack")
+ // M
+ key <AB07> { [ NoSymbol, U2336 ] }; // ⌶ -- APL Functional Symbol I-Beam
+ // ,
+ key <AB08> { [ U235E, U236A ] }; // ⍞ ⍪ -- APL Functional Symbol Quote Quad / APL Functional Symbol Comma Bar
+ // .
+ key <AB09> { [ U234E, U2359 ] }; // ⍎ ⍙ -- [See B key] / APL Functional Symbol Delta Underbar
+ // /
+ key <AB10> { [ U2355, U233F ] }; // ⍕ ⌿ -- [See N key] / APL Functional Symbol Slash Bar
+
+ key <BKSL> { [ U235D, U2340 ] }; // ⍝ ⍀ -- APL Functional Symbol Up Shoe Jot / APL Functional Symbol Backslash Bar
+};
+
+// Layout: http://www.wickensonline.co.uk/apl-unicomp.html
+partial alphanumeric_keys modifier_keys
+xkb_symbols "apl2" {
+ name[Group1]= "APL Keyboard Symbols: IBM APL2";
+
+ include "apl(common)"
+
+ // The first column is NoSymbol because it inherits. The second is NoSymbol because those keys don't do anything
+
+ // `
+ key <TLDE> { [ NoSymbol, U233B, U2342 ] }; // ⌻ ⍂ --
+ key <AE01> { [ NoSymbol, NoSymbol, U2336 ] }; // ⌶ -- APL Functional Symbol I-Beam
+ key <AE02> { [ NoSymbol, NoSymbol, U236B ] }; // ⍫ -- APL Functional Symbol Del Tilde
+ key <AE03> { [ NoSymbol, NoSymbol, U2353 ] }; // ⍒ -- APL Functional Symbol Del Stile
+ key <AE04> { [ NoSymbol, NoSymbol, U234B ] }; // ⍋ -- APL Functional Symbol Delta Stile
+ key <AE05> { [ NoSymbol, NoSymbol, U233D ] }; // ⌽ -- APL Functional Symbol Circle Stile
+ key <AE06> { [ NoSymbol, NoSymbol, U2349 ] }; // ⍉ -- APL Functional Symbol Circle Backslash
+ key <AE07> { [ NoSymbol, NoSymbol, U2296 ] }; // ⊖ -- Circled Minus
+ key <AE08> { [ NoSymbol, NoSymbol, U235F ] }; // ⍟ -- APL Functional Symbol Circle Star
+ key <AE09> { [ NoSymbol, NoSymbol, U2371 ] }; // ⍱ -- APL Functional Symbol Down Caret Tilde
+ key <AE10> { [ NoSymbol, NoSymbol, U2372 ] }; // ⍲ -- APL Functional Symbol Up Caret Tilde
+ // -
+ key <AE11> { [ plus, minus, exclam ] };
+ // =
+ key <AE12> { [ U00D7, U00F7, U2339 ] }; // × ÷ ⌹ -- Multiplication Sign / Division Sign / APL Functional Symbol Quad Divide
+
+ // [
+ key <AD11> { [ NoSymbol, U2192, U235E ] }; // (←) → ⍞ -- Rightwards Arrow / APL Functional Symbol Quote Quad
+ // ]
+ key <AD12> { [ U2337, U2378, U2359 ] }; // ⌷ ⍸ ⍙ -- APL Functional Symbol Squish Quad / APL Functional Symbol Iota Underbar / APL Functional Symbol Delta Underbar
+
+ // ;
+ key <AC10> { [ bracketleft, parenleft, U234E ] }; // ⍎ -- [See B key in SAX layout]
+ // '
+ key <AC11> { [ bracketright, parenright, U2355 ] }; // ⍕ -- [See N key in SAX layout]
+
+ // ,
+ key <AB08> { [ comma, semicolon, U235D ] }; // ⍝ -- APL Functional Symbol Up Shoe Jot
+ // .
+ key <AB09> { [ period, colon, U2340 ] }; // ⍀ -- APL Functional Symbol Backslash Bar
+ // /
+ key <AB10> { [ slash, backslash, U233F ] }; // ⌿ -- APL Functional Symbol Slash Bar
+
+ key <BKSL> { [ U2261, U2377, U2364 ] }; // ≡ ⍷ ⍤ -- Identical To / APL Functional Symbol Epsilon Underbar / APL Functional Symbol Jot Diaeresis
+};
+
+partial alphanumeric_keys modifier_keys
+xkb_symbols "aplplusII" {
+ name[Group1]= "APL Keyboard Symbols: Manugistics APL*PLUS II";
+
+ include "apl(apl2)"
+
+ // `
+ key <TLDE> { [ dollar, U22C4, U236A ] }; // ⋄ ⍪ -- Diamond Operator / APL Functional Symbol Comma Bar
+ key <AE01> { [ NoSymbol, NoSymbol, U2261 ] }; // ≡ -- Identical To
+
+ // [
+ key <AD11> { [ U2190, NoSymbol, U235E ] }; // ← ⍞ -- Leftwards Arrow / APL Functional Symbol Quote Quad
+ // ]
+ key <AD12> { [ U2192, NoSymbol, U236C ] }; // → ⍬ -- Rightwards Arrow / APL Functional Symbol Zilde
+
+ // ;
+ key <AC10> { [ bracketleft, parenleft, U234E ] }; // ⍎ -- [See B key in SAX layout]
+ // '
+ key <AC11> { [ bracketright, parenright, U2355 ] }; // ⍕ -- [See N key in SAX layout]
+
+ key <BKSL> { [ U22A3, U22A2, U2359 ] }; // ⊣ ⊢ ⍙ -- Left Tack / Right Tack / APL Functional Symbol Delta Underbar
+};
+
+
+// MicroAPL layout: http://aplwiki.com/APLXKeyboardLayouts
+// I didn't do the old-style MicroAPL layout; patches gratefully accepted
+partial alphanumeric_keys modifier_keys
+xkb_symbols "aplx" {
+ name[Group1]= "APL Keyboard Symbols: APLX Unified APL Layout";
+
+ include "apl(unified)"
+
+ // `
+ key <TLDE> { [ NoSymbol, U235E ] }; // ⍞ -- APL Functional Symbol Quote Quad
+ key <AE01> { [ NoSymbol, U2336 ] }; // ⌶ -- APL Functional Symbol I-Beam
+ key <AE02> { [ NoSymbol, U236B ] }; // ⍫ -- APL Functional Symbol Del Tilde
+ key <AE03> { [ NoSymbol, U2353 ] }; // ⍒ -- APL Functional Symbol Del Stile
+ key <AE04> { [ NoSymbol, U234B ] }; // ⍋ -- APL Functional Symbol Delta Stile
+ key <AE05> { [ NoSymbol, U233D ] }; // ⌽ -- APL Functional Symbol Circle Stile
+ key <AE06> { [ NoSymbol, U2349 ] }; // ⍉ -- APL Functional Symbol Circle Backslash
+ key <AE07> { [ NoSymbol, U2296 ] }; // ⊖ -- Circled Minus
+ key <AE08> { [ NoSymbol, U235F ] }; // ⍟ -- APL Functional Symbol Circle Star
+ // -
+ key <AE11> { [ NoSymbol, exclam ] };
+
+ // [
+ key <AD11> { [ NoSymbol, U2347 ] }; // ⍇ -- Box With Left Arrow
+ // ]
+ key <AD12> { [ NoSymbol, U2348 ] }; // ⍈ -- Box With Right Arrow
+
+ // ;
+ key <AC10> { [ U234E, U2261 ] }; // ⍎ ≡ -- [See B key in SAX layout] / Identical To
+ // '
+ key <AC11> { [ U2355, U2262 ] }; // ⍕ ≢ -- [See N key in SAX layout] / Not Identical To
+
+ // ,
+ key <AB08> { [ U235D, U236A ] }; // ⍝ ⍪ -- APL Functional Symbol Up Shoe Jot / APL Functional Symbol Comma Bar
+ // .
+ key <AB09> { [ U2340, U2364 ] }; // ⍀ ⍤ -- APL Functional Symbol Backslash Bar / APL Functional Symbol Jot Diaeresis
+ // /
+ key <AB10> { [ U233F ] }; // ⌿ -- APL Functional Symbol Slash Bar
+
+ key <BKSL> { [ U22A3, U22A3 ] }; // ⊣ ⊢ -- Left Tack / Right Tack
+};
diff --git a/xorg-server/xkeyboard-config/symbols/extras/ru b/xorg-server/xkeyboard-config/symbols/extras/ru
index 65ea58653..b872be3d8 100644
--- a/xorg-server/xkeyboard-config/symbols/extras/ru
+++ b/xorg-server/xkeyboard-config/symbols/extras/ru
@@ -56,4 +56,3 @@ xkb_symbols "chu"
key <AB09> { [ Cyrillic_yu, Cyrillic_YU, U2DFB ] };
key <AB10> { [ period, comma, semicolon, exclam ] };
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/extras/us b/xorg-server/xkeyboard-config/symbols/extras/us
index b58932c6a..45d9954cf 100644
--- a/xorg-server/xkeyboard-config/symbols/extras/us
+++ b/xorg-server/xkeyboard-config/symbols/extras/us
@@ -1,147 +1,146 @@
-// XCompose is out! Unicode combining is in! For those of us who live
-// on the edge: A keymap using Unicode combining characters instead of
-// deadkeys. This variation does not deviate from the lame MS-style
-// US-intl layout; but it uses AltGr for combining, like altgr-intl.
-//
-// This might break your font layout layout systems (because they
-// suck), caveat emptor. Also, most of today's software will count
-// individual combining marks for selection, deletion, character
-// counting &c., and won't be smart enough to do canonical equivalence
-// when searching, &c.
-//
-// With Unicode combining you use "handwriting order", not
-// "typewriting order" as with deadkeys. That is, you first type the
-// base character, then the diacritics/accents/modifiers. This has
-// the advantage of avoiding hidden states --- each keypress changes
-// something on screen.
-//
-// TODO: as of now, this duplicates all us(intl) functionality with
-// combining. With care, perhaps we could add more combining marks
-// not present in intl, and support all major languages.
-partial alphanumeric_keys
-xkb_symbols "intl-unicode" {
-
- name[Group1]= "USA - International (AltGr Unicode combining)";
-
- include "us(intl)"
- include "level3(ralt_switch)"
-
- // grave, tilde
- key <TLDE> { [grave, asciitilde, U0300, U0303 ] };
- // double acute
- key <AE02> { [ 2, at, twosuperior, U030B ] };
- // macron
- key <AE03> { [ 3, numbersign, threesuperior, U0304 ] };
- // circumflex
- key <AE06> { [ 6, asciicircum, onequarter, U0302 ] };
- // horn
- key <AE07> { [ 7, ampersand, onehalf, U031B ] };
- // ogonek
- key <AE08> { [ 8, asterisk, threequarters, U0328 ] };
- // breve
- key <AE09> { [ 9, parenleft, leftsinglequotemark, U0306 ] };
- // abovering
- key <AE10> { [ 0, parenright, rightsinglequotemark, U030A ] };
-
- // belowdot
- key <AE11> { [ minus, underscore, yen, U0323 ] };
- // acute, diaeresis
- key <AC11> { [apostrophe, quotedbl, U0301, U0308 ] };
- // abovedot, caron
- key <AB09> { [ period, greater, U0307, U030C ] };
- // hook
- key <AB10> { [ slash, question, questiondown, 0309 ] };
-
- // alt-intl compatibility
- // cedilla, caron
- key <AB08> { [ comma, less, U0327, U030C ] };
- // ogonek, diaeresis
- key <AC10> { [ semicolon, colon, U0328, U0308 ] };
- // doubleacute, horn
- key <AE12> { [ equal, plus, U030B, U031B ] };
-
- // we don't do combining latin letters and combining enclosures
- // because support for those is very rare.
-};
-
-// XCompose is out! Unicode combining is in! For those of us who live
-// on the edge: A keymap using Unicode combining characters instead of
-// deadkeys. This variation does break compatibility with us-intl,
-// whenever I thought it would be more mnemonic or Unicodeish.
-partial alphanumeric_keys
-xkb_symbols "alt-intl-unicode" {
-
- name[Group1]= "USA - International (AltGr Unicode combining, alternative)";
-
- include "extras/us(intl-unicode)"
- include "level3(ralt_switch)"
-
- // easier macron; em-dash.
- // em-dash is available via compose, but I added here since it's such
- // an important typographic character.
- key <AE11> { [ minus, underscore, U0304, U2014 ] };
-
- // belowdot, abovedot (caron at coma/less key, per above)
- key <AB09> { [ period, greater, U0323, U0307 ] };
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "ats" {
-
- include "us"
-
- name[Group1]= "USA - Atsina";
-
- //Using Dead key to get COMBINING COMMA ABOVE for ejectives on
- //q, l, t, s, m, g, k, p, w, y, r
- //XCompose key is used for the other accute and grave.
-
- key <AD03> { [ e, E, eacute, Eacute ] };
- key <AD07> { [ u, U, uacute, Uacute ] };
- key <AD08> { [ i, I, iacute, Iacute ] };
- key <AD09> { [ o, O, oacute, Oacute ] };
- key <AD11> { [ bracketleft, braceleft, U03B8 ] };
- key <AD12> { [ bracketright, braceright, U010D, U010C ] };
- //U+010C (uppercase Č) and U+010D (lowercase č).
-
- key <AC01> { [ a, A, aacute, Aacute ] };
-
-
- //Small letter Open use compose to key get acute accent
- key <AB03> { [ c, C, U0254, U0186 ] };
- key <AB08> { [ comma, less, U0313 ] };
- key <AB10> { [ slash, question, U0294 ] };
-
- include "level3(ralt_switch)"
- include "compose(rctrl)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "crd" {
-
- include "us"
-
- name[Group1]= "USA - Couer D'alene Salish";
-
- // Alphanumeric section
- key <AD02> { [ w, W, U02B7, U02B7 ] };
- key <AE07> { [ 7, ampersand, U0294 ] };
- key <AD01> { [ q, Q, U221A ] };
- key <AB04> { [ v, V, U0259 ] };
- key <BKSL> { [ backslash, bar, U026B ] };
- key <AD03> { [ e, E, U025B ] };
- key <AD08> { [ i, I, U026A ] };
- key <AC07> { [ j, J, U01F0 ] };
- key <AE06> { [ 6, asciicircum, U0295 ] };
- key <AC02> { [ s, S, U0161 ] };
- key <AB03> { [ c, C, U010D ] };
- key <AD09> { [ o, O, U0254 ] };
- key <AB09> { [ period, greater, U0323 ] };
-
- include "level3(ralt_switch)"
- include "compose(rctrl)"
-
- // End alphanumeric section
-};
-
+// XCompose is out! Unicode combining is in! For those of us who live
+// on the edge: A keymap using Unicode combining characters instead of
+// deadkeys. This variation does not deviate from the lame MS-style
+// US-intl layout; but it uses AltGr for combining, like altgr-intl.
+//
+// This might break your font layout layout systems (because they
+// suck), caveat emptor. Also, most of today's software will count
+// individual combining marks for selection, deletion, character
+// counting &c., and won't be smart enough to do canonical equivalence
+// when searching, &c.
+//
+// With Unicode combining you use "handwriting order", not
+// "typewriting order" as with deadkeys. That is, you first type the
+// base character, then the diacritics/accents/modifiers. This has
+// the advantage of avoiding hidden states --- each keypress changes
+// something on screen.
+//
+// TODO: as of now, this duplicates all us(intl) functionality with
+// combining. With care, perhaps we could add more combining marks
+// not present in intl, and support all major languages.
+partial alphanumeric_keys
+xkb_symbols "intl-unicode" {
+
+ name[Group1]= "USA - International (AltGr Unicode combining)";
+
+ include "us(intl)"
+ include "level3(ralt_switch)"
+
+ // grave, tilde
+ key <TLDE> { [grave, asciitilde, U0300, U0303 ] };
+ // double acute
+ key <AE02> { [ 2, at, twosuperior, U030B ] };
+ // macron
+ key <AE03> { [ 3, numbersign, threesuperior, U0304 ] };
+ // circumflex
+ key <AE06> { [ 6, asciicircum, onequarter, U0302 ] };
+ // horn
+ key <AE07> { [ 7, ampersand, onehalf, U031B ] };
+ // ogonek
+ key <AE08> { [ 8, asterisk, threequarters, U0328 ] };
+ // breve
+ key <AE09> { [ 9, parenleft, leftsinglequotemark, U0306 ] };
+ // abovering
+ key <AE10> { [ 0, parenright, rightsinglequotemark, U030A ] };
+
+ // belowdot
+ key <AE11> { [ minus, underscore, yen, U0323 ] };
+ // acute, diaeresis
+ key <AC11> { [apostrophe, quotedbl, U0301, U0308 ] };
+ // abovedot, caron
+ key <AB09> { [ period, greater, U0307, U030C ] };
+ // hook
+ key <AB10> { [ slash, question, questiondown, 0309 ] };
+
+ // alt-intl compatibility
+ // cedilla, caron
+ key <AB08> { [ comma, less, U0327, U030C ] };
+ // ogonek, diaeresis
+ key <AC10> { [ semicolon, colon, U0328, U0308 ] };
+ // doubleacute, horn
+ key <AE12> { [ equal, plus, U030B, U031B ] };
+
+ // we don't do combining latin letters and combining enclosures
+ // because support for those is very rare.
+};
+
+// XCompose is out! Unicode combining is in! For those of us who live
+// on the edge: A keymap using Unicode combining characters instead of
+// deadkeys. This variation does break compatibility with us-intl,
+// whenever I thought it would be more mnemonic or Unicodeish.
+partial alphanumeric_keys
+xkb_symbols "alt-intl-unicode" {
+
+ name[Group1]= "USA - International (AltGr Unicode combining, alternative)";
+
+ include "extras/us(intl-unicode)"
+ include "level3(ralt_switch)"
+
+ // easier macron; em-dash.
+ // em-dash is available via compose, but I added here since it's such
+ // an important typographic character.
+ key <AE11> { [ minus, underscore, U0304, U2014 ] };
+
+ // belowdot, abovedot (caron at coma/less key, per above)
+ key <AB09> { [ period, greater, U0323, U0307 ] };
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "ats" {
+
+ include "us"
+
+ name[Group1]= "USA - Atsina";
+
+ //Using Dead key to get COMBINING COMMA ABOVE for ejectives on
+ //q, l, t, s, m, g, k, p, w, y, r
+ //XCompose key is used for the other accute and grave.
+
+ key <AD03> { [ e, E, eacute, Eacute ] };
+ key <AD07> { [ u, U, uacute, Uacute ] };
+ key <AD08> { [ i, I, iacute, Iacute ] };
+ key <AD09> { [ o, O, oacute, Oacute ] };
+ key <AD11> { [ bracketleft, braceleft, U03B8 ] };
+ key <AD12> { [ bracketright, braceright, U010D, U010C ] };
+ //U+010C (uppercase Č) and U+010D (lowercase č).
+
+ key <AC01> { [ a, A, aacute, Aacute ] };
+
+
+ //Small letter Open use compose to key get acute accent
+ key <AB03> { [ c, C, U0254, U0186 ] };
+ key <AB08> { [ comma, less, U0313 ] };
+ key <AB10> { [ slash, question, U0294 ] };
+
+ include "level3(ralt_switch)"
+ include "compose(rctrl)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "crd" {
+
+ include "us"
+
+ name[Group1]= "USA - Couer D'alene Salish";
+
+ // Alphanumeric section
+ key <AD02> { [ w, W, U02B7, U02B7 ] };
+ key <AE07> { [ 7, ampersand, U0294 ] };
+ key <AD01> { [ q, Q, U221A ] };
+ key <AB04> { [ v, V, U0259 ] };
+ key <BKSL> { [ backslash, bar, U026B ] };
+ key <AD03> { [ e, E, U025B ] };
+ key <AD08> { [ i, I, U026A ] };
+ key <AC07> { [ j, J, U01F0 ] };
+ key <AE06> { [ 6, asciicircum, U0295 ] };
+ key <AC02> { [ s, S, U0161 ] };
+ key <AB03> { [ c, C, U010D ] };
+ key <AD09> { [ o, O, U0254 ] };
+ key <AB09> { [ period, greater, U0323 ] };
+
+ include "level3(ralt_switch)"
+ include "compose(rctrl)"
+
+ // End alphanumeric section
+};
diff --git a/xorg-server/xkeyboard-config/symbols/fi b/xorg-server/xkeyboard-config/symbols/fi
index 9d0f6247e..35c9da7a4 100644
--- a/xorg-server/xkeyboard-config/symbols/fi
+++ b/xorg-server/xkeyboard-config/symbols/fi
@@ -1,208 +1,206 @@
-//
-// $XKeyboardConfig$
-//
-// X keyboard maps for Finland
-//
-// SFS 5966 / Kotoistus keymap created by Troy Korjuslommi
-// Classic keymap based on traditional by Marko Myllynen
-// Eliminate deadkeys alternative sent by Linus Torvalds
-//
-
-//
-// Missing from X11/keysymdef.h as of 2010-05-13
-//
-// U2030 # PER MILLE SIGN
-// U0292 # LATIN SMALL LETTER EZH
-// U01B7 # LATIN CAPITAL LETTER EZH
-//
-
-partial alphanumeric_keys default
-xkb_symbols "kotoistus" {
-
- // Official keymap for Finland based on SFS 5966 standard
- //
- // This keymap implements all the functionality of Annex 1
- // of the standard and additionally defines the following to
- // allow entering these characters with keyboars without LSGT.
- //
- // AE08+4, U+003C : LESS-THAN SIGN (less)
- // AE09+4, U+003E : GREATER-THAN SIGN (greater)
- // AD08+4, U+007C : VERTICAL LINE (bar)
- //
- // Annex 3 of the standard is implemented in fi_FI.UTF-8/Compose
-
- name[Group1]="Finland";
-
- key <TLDE> { [ section, onehalf, dead_stroke, NoSymbol ] };
- key <AE01> { [ 1, exclam, NoSymbol, exclamdown ] };
- key <AE02> { [ 2, quotedbl, at, rightdoublequotemark ] };
- key <AE03> { [ 3, numbersign, sterling, guillemotright ] };
- key <AE04> { [ 4, currency, dollar, guillemotleft ] };
- key <AE05> { [ 5, percent, U2030, leftdoublequotemark ] };
- key <AE06> { [ 6, ampersand, singlelowquotemark, doublelowquotemark ] };
- key <AE07> { [ 7, slash, braceleft, NoSymbol ] };
- key <AE08> { [ 8, parenleft, bracketleft, less ] };
- key <AE09> { [ 9, parenright, bracketright, greater ] };
- key <AE10> { [ 0, equal, braceright, degree ] };
- key <AE11> { [ plus, question, backslash, questiondown ] };
- key <AE12> { [ dead_acute, dead_grave, dead_cedilla, dead_ogonek ] };
-
- key <AD01> { [ q, Q, q, Q ] };
- key <AD02> { [ w, W, w, W ] };
- key <AD03> { [ e, E, EuroSign, NoSymbol ] };
- key <AD04> { [ r, R, r, R ] };
- key <AD05> { [ t, T, thorn, THORN ] };
- key <AD06> { [ y, Y, y, Y ] };
- key <AD07> { [ u, U, u, U ] };
- key <AD08> { [ i, I, idotless, bar ] };
- key <AD09> { [ o, O, oe, OE ] };
- key <AD10> { [ p, P, dead_horn, dead_hook ] };
- key <AD11> { [ aring, Aring, dead_doubleacute, dead_abovering ] };
- key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde, dead_macron ] };
-
- key <AC01> { [ a, A, schwa, SCHWA ] };
- key <AC02> { [ s, S, ssharp, NoSymbol ] };
- key <AC03> { [ d, D, eth, ETH ] };
- key <AC04> { [ f, F, f, F ] };
- key <AC05> { [ g, G, g, G ] };
- key <AC06> { [ h, H, h, H ] };
- key <AC07> { [ j, J, j, J ] };
- key <AC08> { [ k, K, kra, NoSymbol ] };
- key <AC09> { [ l, L, dead_stroke, NoSymbol ] };
- key <AC10> { [ odiaeresis, Odiaeresis, oslash, Oslash ] };
- key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] };
- key <BKSL> { [ apostrophe, asterisk, dead_caron, dead_breve ] };
-
- key <LSGT> { [ less, greater, bar, NoSymbol ] };
- key <AB01> { [ z, Z, U0292, U01B7 ] };
- key <AB02> { [ x, X, multiply, periodcentered ] };
- key <AB03> { [ c, C, c, C ] };
- key <AB04> { [ v, V, v, V ] };
- key <AB05> { [ b, B, b, B ] };
- key <AB06> { [ n, N, eng, ENG ] };
- key <AB07> { [ m, M, mu, emdash ] };
- key <AB08> { [ comma, semicolon, rightsinglequotemark, leftsinglequotemark ] };
- key <AB09> { [ period, colon, dead_belowdot, dead_abovedot ] };
- key <AB10> { [ minus, underscore, endash, dead_belowcomma ] };
-
- include "nbsp(level4)"
- include "nbsp(level3)"
- include "kpdl(comma)"
- include "level3(ralt_switch)"
- include "compose(rwin)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "classic" {
-
- include "fi(fi)"
-
- name[Group1]="Finland - Classic";
-};
-
-partial alphanumeric_keys hidden
-xkb_symbols "fi" {
-
- // Classic Finnish keyboard layout with dead keys support
- // and all ISO-8859-1 and ISO-8859-15 characters available
-
- key <TLDE> { [ section, onehalf, onequarter, threequarters ] };
- key <AE01> { [ 1, exclam, exclamdown, onesuperior ] };
- key <AE02> { [ 2, quotedbl, at, twosuperior ] };
- key <AE03> { [ 3, numbersign, sterling, threesuperior ] };
- key <AE04> { [ 4, currency, dollar, cent ] };
- key <AE05> { [ 5, percent, EuroSign, masculine ] };
- key <AE06> { [ 6, ampersand, yen, ordfeminine ] };
- key <AE07> { [ 7, slash, braceleft, plusminus ] };
- key <AE08> { [ 8, parenleft, bracketleft, guillemotleft ] };
- key <AE09> { [ 9, parenright, bracketright, guillemotright ] };
- key <AE10> { [ 0, equal, braceright, degree ] };
- key <AE11> { [ plus, question, backslash, questiondown ] };
- key <AE12> { [ dead_acute, dead_grave, dead_cedilla, dead_ogonek ] };
-
- key <AD01> { [ q, Q, q, Q ] };
- key <AD02> { [ w, W, w, W ] };
- key <AD03> { [ e, E, EuroSign, cent ] };
- key <AD04> { [ r, R, registered, NoSymbol ] };
- key <AD05> { [ t, T, thorn, THORN ] };
- key <AD06> { [ y, Y, y, Y ] };
- key <AD07> { [ u, U, u, U ] };
- key <AD08> { [ i, I, idotless, bar ] };
- key <AD09> { [ o, O, o, O ] };
- key <AD10> { [ p, P, paragraph, NoSymbol ] };
- key <AD11> { [ aring, Aring, oe, OE ] };
- key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde, dead_caron ] };
-
- key <AC01> { [ a, A, schwa, SCHWA ] };
- key <AC02> { [ s, S, scaron, Scaron ] };
- key <AC03> { [ d, D, eth, ETH ] };
- key <AC04> { [ f, F, f, F ] };
- key <AC05> { [ g, G, eng, ENG ] };
- key <AC06> { [ h, H, h, H ] };
- key <AC07> { [ j, J, j, J ] };
- key <AC08> { [ k, K, kra, NoSymbol ] };
- key <AC09> { [ l, L, dead_stroke, NoSymbol ] };
- key <AC10> { [ odiaeresis, Odiaeresis, oslash, Oslash ] };
- key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] };
- key <BKSL> { [ apostrophe, asterisk, dead_caron, dead_breve ] };
-
- key <LSGT> { [ less, greater, bar, brokenbar ] };
- key <AB01> { [ z, Z, zcaron, Zcaron ] };
- key <AB02> { [ x, X, multiply, division ] };
- key <AB03> { [ c, C, copyright, cent ] };
- key <AB04> { [ v, V, v, V ] };
- key <AB05> { [ b, B, ssharp, NoSymbol ] };
- key <AB06> { [ n, N, ntilde, Ntilde ] };
- key <AB07> { [ m, M, mu, NoSymbol ] };
- key <AB08> { [ comma, semicolon, dead_cedilla, dead_ogonek ] };
- key <AB09> { [ period, colon, periodcentered, notsign ] };
- key <AB10> { [ minus, underscore, hyphen, dead_macron ] };
-
- include "nbsp(level4)"
- include "kpdl(comma)"
- include "level3(ralt_switch)"
- include "compose(rwin)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
-
- // Classic Finnish keyboard layout without dead keys
-
- include "fi(fi)"
-
- name[Group1]="Finland - Classic, eliminate dead keys";
-
- key <AE12> { [ acute, grave, cedilla, ogonek ] };
- key <AD12> { [ diaeresis, asciicircum, asciitilde, caron ] };
- key <AC09> { [ l, L, l, L ] };
- key <BKSL> { [ apostrophe, asterisk, caron, breve ] };
- key <AB08> { [ comma, semicolon, cedilla, ogonek ] };
- key <AB10> { [ minus, underscore, hyphen, macron ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "smi" {
-
- // Describes the differences between a Norwegian Northern Sami
- // (keyboard with dead key support) and a Swedish/Finnish Sami
- // keyboard according to the specs at:
- // http://www.hum.uit.no/a/trond/se-lat9-sefi-keys.html
-
- include "no(smi)"
-
- name[Group1]="Finland - Northern Saami";
-
- key <AC10> { [ odiaeresis, Odiaeresis, oslash, Oslash ] };
- key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "mac" {
-
- // Macintosh keyboard for Finland based on Swedish(Macintosh) keyboard
-
- include "se(mac)"
-
- name[Group1]="Finland - Macintosh";
-};
+//
+// X keyboard maps for Finland
+//
+// SFS 5966 / Kotoistus keymap created by Troy Korjuslommi
+// Classic keymap based on traditional by Marko Myllynen
+// Eliminate deadkeys alternative sent by Linus Torvalds
+//
+
+//
+// Missing from X11/keysymdef.h as of 2010-05-13
+//
+// U2030 # PER MILLE SIGN
+// U0292 # LATIN SMALL LETTER EZH
+// U01B7 # LATIN CAPITAL LETTER EZH
+//
+
+partial alphanumeric_keys default
+xkb_symbols "kotoistus" {
+
+ // Official keymap for Finland based on SFS 5966 standard
+ //
+ // This keymap implements all the functionality of Annex 1
+ // of the standard and additionally defines the following to
+ // allow entering these characters with keyboars without LSGT.
+ //
+ // AE08+4, U+003C : LESS-THAN SIGN (less)
+ // AE09+4, U+003E : GREATER-THAN SIGN (greater)
+ // AD08+4, U+007C : VERTICAL LINE (bar)
+ //
+ // Annex 3 of the standard is implemented in fi_FI.UTF-8/Compose
+
+ name[Group1]="Finland";
+
+ key <TLDE> { [ section, onehalf, dead_stroke, NoSymbol ] };
+ key <AE01> { [ 1, exclam, NoSymbol, exclamdown ] };
+ key <AE02> { [ 2, quotedbl, at, rightdoublequotemark ] };
+ key <AE03> { [ 3, numbersign, sterling, guillemotright ] };
+ key <AE04> { [ 4, currency, dollar, guillemotleft ] };
+ key <AE05> { [ 5, percent, U2030, leftdoublequotemark ] };
+ key <AE06> { [ 6, ampersand, singlelowquotemark, doublelowquotemark ] };
+ key <AE07> { [ 7, slash, braceleft, NoSymbol ] };
+ key <AE08> { [ 8, parenleft, bracketleft, less ] };
+ key <AE09> { [ 9, parenright, bracketright, greater ] };
+ key <AE10> { [ 0, equal, braceright, degree ] };
+ key <AE11> { [ plus, question, backslash, questiondown ] };
+ key <AE12> { [ dead_acute, dead_grave, dead_cedilla, dead_ogonek ] };
+
+ key <AD01> { [ q, Q, q, Q ] };
+ key <AD02> { [ w, W, w, W ] };
+ key <AD03> { [ e, E, EuroSign, NoSymbol ] };
+ key <AD04> { [ r, R, r, R ] };
+ key <AD05> { [ t, T, thorn, THORN ] };
+ key <AD06> { [ y, Y, y, Y ] };
+ key <AD07> { [ u, U, u, U ] };
+ key <AD08> { [ i, I, idotless, bar ] };
+ key <AD09> { [ o, O, oe, OE ] };
+ key <AD10> { [ p, P, dead_horn, dead_hook ] };
+ key <AD11> { [ aring, Aring, dead_doubleacute, dead_abovering ] };
+ key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde, dead_macron ] };
+
+ key <AC01> { [ a, A, schwa, SCHWA ] };
+ key <AC02> { [ s, S, ssharp, NoSymbol ] };
+ key <AC03> { [ d, D, eth, ETH ] };
+ key <AC04> { [ f, F, f, F ] };
+ key <AC05> { [ g, G, g, G ] };
+ key <AC06> { [ h, H, h, H ] };
+ key <AC07> { [ j, J, j, J ] };
+ key <AC08> { [ k, K, kra, NoSymbol ] };
+ key <AC09> { [ l, L, dead_stroke, NoSymbol ] };
+ key <AC10> { [ odiaeresis, Odiaeresis, oslash, Oslash ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] };
+ key <BKSL> { [ apostrophe, asterisk, dead_caron, dead_breve ] };
+
+ key <LSGT> { [ less, greater, bar, NoSymbol ] };
+ key <AB01> { [ z, Z, U0292, U01B7 ] };
+ key <AB02> { [ x, X, multiply, periodcentered ] };
+ key <AB03> { [ c, C, c, C ] };
+ key <AB04> { [ v, V, v, V ] };
+ key <AB05> { [ b, B, b, B ] };
+ key <AB06> { [ n, N, eng, ENG ] };
+ key <AB07> { [ m, M, mu, emdash ] };
+ key <AB08> { [ comma, semicolon, rightsinglequotemark, leftsinglequotemark ] };
+ key <AB09> { [ period, colon, dead_belowdot, dead_abovedot ] };
+ key <AB10> { [ minus, underscore, endash, dead_belowcomma ] };
+
+ include "nbsp(level4)"
+ include "nbsp(level3)"
+ include "kpdl(comma)"
+ include "level3(ralt_switch)"
+ include "compose(rwin)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "classic" {
+
+ include "fi(fi)"
+
+ name[Group1]="Finland - Classic";
+};
+
+partial alphanumeric_keys hidden
+xkb_symbols "fi" {
+
+ // Classic Finnish keyboard layout with dead keys support
+ // and all ISO-8859-1 and ISO-8859-15 characters available
+
+ key <TLDE> { [ section, onehalf, onequarter, threequarters ] };
+ key <AE01> { [ 1, exclam, exclamdown, onesuperior ] };
+ key <AE02> { [ 2, quotedbl, at, twosuperior ] };
+ key <AE03> { [ 3, numbersign, sterling, threesuperior ] };
+ key <AE04> { [ 4, currency, dollar, cent ] };
+ key <AE05> { [ 5, percent, EuroSign, masculine ] };
+ key <AE06> { [ 6, ampersand, yen, ordfeminine ] };
+ key <AE07> { [ 7, slash, braceleft, plusminus ] };
+ key <AE08> { [ 8, parenleft, bracketleft, guillemotleft ] };
+ key <AE09> { [ 9, parenright, bracketright, guillemotright ] };
+ key <AE10> { [ 0, equal, braceright, degree ] };
+ key <AE11> { [ plus, question, backslash, questiondown ] };
+ key <AE12> { [ dead_acute, dead_grave, dead_cedilla, dead_ogonek ] };
+
+ key <AD01> { [ q, Q, q, Q ] };
+ key <AD02> { [ w, W, w, W ] };
+ key <AD03> { [ e, E, EuroSign, cent ] };
+ key <AD04> { [ r, R, registered, NoSymbol ] };
+ key <AD05> { [ t, T, thorn, THORN ] };
+ key <AD06> { [ y, Y, y, Y ] };
+ key <AD07> { [ u, U, u, U ] };
+ key <AD08> { [ i, I, idotless, bar ] };
+ key <AD09> { [ o, O, o, O ] };
+ key <AD10> { [ p, P, paragraph, NoSymbol ] };
+ key <AD11> { [ aring, Aring, oe, OE ] };
+ key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde, dead_caron ] };
+
+ key <AC01> { [ a, A, schwa, SCHWA ] };
+ key <AC02> { [ s, S, scaron, Scaron ] };
+ key <AC03> { [ d, D, eth, ETH ] };
+ key <AC04> { [ f, F, f, F ] };
+ key <AC05> { [ g, G, eng, ENG ] };
+ key <AC06> { [ h, H, h, H ] };
+ key <AC07> { [ j, J, j, J ] };
+ key <AC08> { [ k, K, kra, NoSymbol ] };
+ key <AC09> { [ l, L, dead_stroke, NoSymbol ] };
+ key <AC10> { [ odiaeresis, Odiaeresis, oslash, Oslash ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] };
+ key <BKSL> { [ apostrophe, asterisk, dead_caron, dead_breve ] };
+
+ key <LSGT> { [ less, greater, bar, brokenbar ] };
+ key <AB01> { [ z, Z, zcaron, Zcaron ] };
+ key <AB02> { [ x, X, multiply, division ] };
+ key <AB03> { [ c, C, copyright, cent ] };
+ key <AB04> { [ v, V, v, V ] };
+ key <AB05> { [ b, B, ssharp, NoSymbol ] };
+ key <AB06> { [ n, N, ntilde, Ntilde ] };
+ key <AB07> { [ m, M, mu, NoSymbol ] };
+ key <AB08> { [ comma, semicolon, dead_cedilla, dead_ogonek ] };
+ key <AB09> { [ period, colon, periodcentered, notsign ] };
+ key <AB10> { [ minus, underscore, hyphen, dead_macron ] };
+
+ include "nbsp(level4)"
+ include "kpdl(comma)"
+ include "level3(ralt_switch)"
+ include "compose(rwin)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+
+ // Classic Finnish keyboard layout without dead keys
+
+ include "fi(fi)"
+
+ name[Group1]="Finland - Classic, eliminate dead keys";
+
+ key <AE12> { [ acute, grave, cedilla, ogonek ] };
+ key <AD12> { [ diaeresis, asciicircum, asciitilde, caron ] };
+ key <AC09> { [ l, L, l, L ] };
+ key <BKSL> { [ apostrophe, asterisk, caron, breve ] };
+ key <AB08> { [ comma, semicolon, cedilla, ogonek ] };
+ key <AB10> { [ minus, underscore, hyphen, macron ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "smi" {
+
+ // Describes the differences between a Norwegian Northern Sami
+ // (keyboard with dead key support) and a Swedish/Finnish Sami
+ // keyboard according to the specs at:
+ // http://www.hum.uit.no/a/trond/se-lat9-sefi-keys.html
+
+ include "no(smi)"
+
+ name[Group1]="Finland - Northern Saami";
+
+ key <AC10> { [ odiaeresis, Odiaeresis, oslash, Oslash ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "mac" {
+
+ // Macintosh keyboard for Finland based on Swedish(Macintosh) keyboard
+
+ include "se(mac)"
+
+ name[Group1]="Finland - Macintosh";
+};
diff --git a/xorg-server/xkeyboard-config/symbols/fo b/xorg-server/xkeyboard-config/symbols/fo
index 5ac205560..b57c917af 100644
--- a/xorg-server/xkeyboard-config/symbols/fo
+++ b/xorg-server/xkeyboard-config/symbols/fo
@@ -1,50 +1,48 @@
-// $XKeyboardConfig$
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- include "latin(type2)"
-
- name[Group1]= "Faroe Islands";
-
- key <TLDE> { [ onehalf, section, threequarters, paragraph ] };
- key <LSGT> { [ less, greater, backslash, notsign ] };
- key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
-
- key <AE05> { [ 5, percent, NoSymbol, cent ] };
- key <AE06> { [ 6, ampersand, yen, NoSymbol ] };
- key <AE11> { [ plus, question, plusminus, questiondown ] };
- key <AE12> { [dead_acute, dead_grave, bar, brokenbar ] };
-
- key <AB03> { [ c, C, copyright, NoSymbol ] };
- key <AB10> { [ minus, underscore, hyphen, macron ] };
-
- key <AC03> { [ d, D, eth, ETH ] };
- key <AC10> { [ ae, AE ] };
- key <AC11> { [ oslash, Ooblique ] };
-
- key <AD08> { [ i, I ] };
- key <AD11> { [ aring, Aring, dead_diaeresis, dead_circumflex ] };
- key <AD12> { [ eth, ETH, dead_tilde, dead_caron ] };
-
- key <BKSL> { [apostrophe, asterisk, dead_doubleacute, multiply ] };
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
-
- include "fo(basic)"
-
- name[Group1]= "Faroe Islands - Eliminate dead keys";
-
- key <AE12> { [ acute, grave, bar, ogonek ] };
- key <AD11> { [ aring, Aring, diaeresis, degree ] };
- key <AD12> { [ diaeresis, asciicircum, asciitilde, macron ] };
- key <AC10> { [ ae, AE, acute, doubleacute ] };
- key <AC11> { [ oslash, Ooblique, asciicircum, caron ] };
- key <BKSL> { [apostrophe, asterisk, doubleacute, multiply ] };
- key <AB08> { [ comma, semicolon, cedilla, ogonek ] };
- key <AB09> { [ period, colon, periodcentered, abovedot ] };
-};
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ include "latin(type2)"
+
+ name[Group1]= "Faroe Islands";
+
+ key <TLDE> { [ onehalf, section, threequarters, paragraph ] };
+ key <LSGT> { [ less, greater, backslash, notsign ] };
+ key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
+
+ key <AE05> { [ 5, percent, NoSymbol, cent ] };
+ key <AE06> { [ 6, ampersand, yen, NoSymbol ] };
+ key <AE11> { [ plus, question, plusminus, questiondown ] };
+ key <AE12> { [dead_acute, dead_grave, bar, brokenbar ] };
+
+ key <AB03> { [ c, C, copyright, NoSymbol ] };
+ key <AB10> { [ minus, underscore, hyphen, macron ] };
+
+ key <AC03> { [ d, D, eth, ETH ] };
+ key <AC10> { [ ae, AE ] };
+ key <AC11> { [ oslash, Ooblique ] };
+
+ key <AD08> { [ i, I ] };
+ key <AD11> { [ aring, Aring, dead_diaeresis, dead_circumflex ] };
+ key <AD12> { [ eth, ETH, dead_tilde, dead_caron ] };
+
+ key <BKSL> { [apostrophe, asterisk, dead_doubleacute, multiply ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+
+ include "fo(basic)"
+
+ name[Group1]= "Faroe Islands - Eliminate dead keys";
+
+ key <AE12> { [ acute, grave, bar, ogonek ] };
+ key <AD11> { [ aring, Aring, diaeresis, degree ] };
+ key <AD12> { [ diaeresis, asciicircum, asciitilde, macron ] };
+ key <AC10> { [ ae, AE, acute, doubleacute ] };
+ key <AC11> { [ oslash, Ooblique, asciicircum, caron ] };
+ key <BKSL> { [apostrophe, asterisk, doubleacute, multiply ] };
+ key <AB08> { [ comma, semicolon, cedilla, ogonek ] };
+ key <AB09> { [ period, colon, periodcentered, abovedot ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/fr b/xorg-server/xkeyboard-config/symbols/fr
index 37038bee4..c804eb09e 100644
--- a/xorg-server/xkeyboard-config/symbols/fr
+++ b/xorg-server/xkeyboard-config/symbols/fr
@@ -1,8 +1,4 @@
-// $XKeyboardConfig$
-
// based on a keyboard map from an 'xkb/symbols/fr' file
-//
-// $XFree86: xc/programs/xkbcomp/symbols/fr,v 1.2 2002/11/22 04:03:28 dawes Exp $
partial default alphanumeric_keys
xkb_symbols "basic" {
@@ -282,8 +278,6 @@ xkb_symbols "oss_nodeadkeys" {
// Nicolas Mailhot <Nicolas.Mailhot @ laposte.net>
// (XFree86 submission)
//
-// $XFree86: xc/programs/xkbcomp/symbols/fr-latin9,v 1.1 2002/12/20 02:07:11 dawes Exp $
-//
// This layout has long been distributed and refined outside official channels.
// To this day it remains more feature-rich and popular than the 'fr' layout.
//
@@ -1025,4 +1019,3 @@ xkb_symbols "geo" {
key <AB10> { [ 0x010010ed, noSymbol ] };
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/jp b/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/jp
index 2f49dea76..0eb277712 100644
--- a/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/jp
+++ b/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/jp
@@ -1,88 +1,87 @@
-// $Xorg: jp,v 1.4 2001/02/09 02:05:52 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-// Japanese layout for a Fujitsu 140 key keyboard
-
-xkb_symbols {
- override "fujitsu_vndr/us"
- augment key <AE01> { [], [ kana_NU ] };
- key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
- key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
- key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
- augment key <AE05> { [], [ kana_E, kana_e ] };
- key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
- key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ] };
- key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ] };
- key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ] };
- replace key <AE10> { [ 0 ], [ kana_WA, kana_WO ] };
- key <AE11> { [ minus, equal ], [ kana_HO ] };
- key <AE12> { [ asciicircum, asciitilde ], [ kana_HE ] };
- key <BKSL> { [ backslash, bar ], [ prolongedsound] };
- augment key <AD01> { [], [ kana_TA ] };
- augment key <AD02> { [], [ kana_TE ] };
- augment key <AD03> { [], [ kana_I, kana_i ] };
- augment key <AD04> { [], [ kana_SU ] };
- augment key <AD05> { [], [ kana_KA ] };
- augment key <AD06> { [], [ kana_N ] };
- augment key <AD07> { [], [ kana_NA ] };
- augment key <AD08> { [], [ kana_NI ] };
- augment key <AD09> { [], [ kana_RA ] };
- augment key <AD10> { [], [ kana_SE ] };
- key <AD11> { [ at, grave ], [ voicedsound ] };
- key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
- augment key <AC01> { [], [ kana_CHI ] };
- augment key <AC02> { [], [ kana_TO ] };
- augment key <AC03> { [], [ kana_SHI ] };
- augment key <AC04> { [], [ kana_HA ] };
- augment key <AC05> { [], [ kana_KI ] };
- augment key <AC06> { [], [ kana_KU ] };
- augment key <AC07> { [], [ kana_MA ] };
- augment key <AC08> { [], [ kana_NO ] };
- augment key <AC09> { [], [ kana_RI ] };
- key <AC10> { [ semicolon, plus ], [ kana_RE ] };
- key <AC11> { [ colon, asterisk ], [ kana_KE ] };
- key <TLDE> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
- augment key <AB01> { [], [ kana_TSU, kana_tsu ] };
- augment key <AB02> { [], [ kana_SA ] };
- augment key <AB03> { [], [ kana_SO ] };
- augment key <AB04> { [], [ kana_HI ] };
- augment key <AB05> { [], [ kana_KO ] };
- augment key <AB06> { [], [ kana_MI ] };
- augment key <AB07> { [], [ kana_MO ] };
- augment key <AB08> { [], [ kana_NE, kana_comma ] };
- augment key <AB09> { [], [ kana_RU, kana_fullstop ] };
- augment key <AB10> { [], [ kana_ME, kana_conjunctive ] };
- key <AB11> { [ underscore ], [ kana_RO ] };
- key <UNK0> { [ Select ] };
- key <UNK1> { [ Massyo ] };
- key <UNK2> { [ Touroku ] };
- key <UNK3> { [ Zenkaku_Hankaku ] };
- key <UNK4> { [ Eisu_Shift ] };
- key <UNK5> { [ Mode_switch ] };
- key <UNK6> { [ Cancel ] };
- key <UNK7> { [ Muhenkan ] };
- key <UNK8> { [ Henkan ] };
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+// Japanese layout for a Fujitsu 140 key keyboard
+
+xkb_symbols {
+ override "fujitsu_vndr/us"
+ augment key <AE01> { [], [ kana_NU ] };
+ key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
+ key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
+ key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
+ augment key <AE05> { [], [ kana_E, kana_e ] };
+ key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
+ key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ] };
+ key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ] };
+ key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ] };
+ replace key <AE10> { [ 0 ], [ kana_WA, kana_WO ] };
+ key <AE11> { [ minus, equal ], [ kana_HO ] };
+ key <AE12> { [ asciicircum, asciitilde ], [ kana_HE ] };
+ key <BKSL> { [ backslash, bar ], [ prolongedsound] };
+ augment key <AD01> { [], [ kana_TA ] };
+ augment key <AD02> { [], [ kana_TE ] };
+ augment key <AD03> { [], [ kana_I, kana_i ] };
+ augment key <AD04> { [], [ kana_SU ] };
+ augment key <AD05> { [], [ kana_KA ] };
+ augment key <AD06> { [], [ kana_N ] };
+ augment key <AD07> { [], [ kana_NA ] };
+ augment key <AD08> { [], [ kana_NI ] };
+ augment key <AD09> { [], [ kana_RA ] };
+ augment key <AD10> { [], [ kana_SE ] };
+ key <AD11> { [ at, grave ], [ voicedsound ] };
+ key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
+ augment key <AC01> { [], [ kana_CHI ] };
+ augment key <AC02> { [], [ kana_TO ] };
+ augment key <AC03> { [], [ kana_SHI ] };
+ augment key <AC04> { [], [ kana_HA ] };
+ augment key <AC05> { [], [ kana_KI ] };
+ augment key <AC06> { [], [ kana_KU ] };
+ augment key <AC07> { [], [ kana_MA ] };
+ augment key <AC08> { [], [ kana_NO ] };
+ augment key <AC09> { [], [ kana_RI ] };
+ key <AC10> { [ semicolon, plus ], [ kana_RE ] };
+ key <AC11> { [ colon, asterisk ], [ kana_KE ] };
+ key <TLDE> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
+ augment key <AB01> { [], [ kana_TSU, kana_tsu ] };
+ augment key <AB02> { [], [ kana_SA ] };
+ augment key <AB03> { [], [ kana_SO ] };
+ augment key <AB04> { [], [ kana_HI ] };
+ augment key <AB05> { [], [ kana_KO ] };
+ augment key <AB06> { [], [ kana_MI ] };
+ augment key <AB07> { [], [ kana_MO ] };
+ augment key <AB08> { [], [ kana_NE, kana_comma ] };
+ augment key <AB09> { [], [ kana_RU, kana_fullstop ] };
+ augment key <AB10> { [], [ kana_ME, kana_conjunctive ] };
+ key <AB11> { [ underscore ], [ kana_RO ] };
+ key <UNK0> { [ Select ] };
+ key <UNK1> { [ Massyo ] };
+ key <UNK2> { [ Touroku ] };
+ key <UNK3> { [ Zenkaku_Hankaku ] };
+ key <UNK4> { [ Eisu_Shift ] };
+ key <UNK5> { [ Mode_switch ] };
+ key <UNK6> { [ Cancel ] };
+ key <UNK7> { [ Muhenkan ] };
+ key <UNK8> { [ Henkan ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/us b/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/us
index e81be028d..73dde7612 100644
--- a/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/us
+++ b/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/us
@@ -1,145 +1,143 @@
-// $Xorg: us,v 1.4 2001/02/09 02:05:53 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-// US/ASCII layout for a Fujitsu 138 key keyboard
-xkb_symbols {
- include "us(basic)"
-
- // A few alphanumeric keys are different
- key <TLDE> { [ grave, asciitilde ] };
- key <BKSP> { [ BackSpace ] };
- key <BKSL> { [ backslash, bar ] };
- key <AB11> { [ ] };
-
- key <RTSH> { [ Shift_R ] };
-
- key <LALT> { [ Alt_L ] };
- key <RALT> { [ Alt_R ] };
- key <LMTA> { [ Meta_L ] };
- key <RMTA> { [ Meta_R ] };
- key <LNFD> { [ Linefeed ] };
- key <COMP> { [ Multi_key ] };
- // End alphanumeric section
-
- // Begin "Function" section
- key <BREA> { [ Break ] };
- key <PRSC> { [ Print ] };
- key <KNJI> { [ Kanji ] };
- key <PAUS> { [ Pause ] };
-
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ F11 ] };
- key <FK12> { [ F12 ] };
- key <FK13> { [ F13 ] };
- key <FK14> { [ F14 ] };
- key <FK15> { [ F15 ] };
- key <FK16> { [ F16 ] };
- key <FK17> { [ F17 ] };
- key <FK18> { [ F18 ] };
- key <FK19> { [ F19 ] };
- key <FK20> { [ F20 ] };
- key <FK21> { [ F21 ] };
- key <FK22> { [ F22 ] };
- key <FK23> { [ F23 ] };
- key <FK24> { [ F24 ] };
- key <FK25> { [ F25 ] };
- key <FK26> { [ F26 ] };
- key <FK27> { [ F27 ] };
- key <FK28> { [ F28 ] };
- key <FK29> { [ F29 ] };
- key <FK30> { [ F30 ] };
- key <FK31> { [ F31 ] };
- key <FK32> { [ F32 ] };
- // End "Function" section
-
- // Begin "Editing" section
- key <UNDO> { [ Undo ] };
- key <COPY> { [ F33 ] };
- key <PAST> { [ F34 ] };
- key <CUT> { [ F35 ] };
- key <HELP> { [ Help ] };
- // End "Editing" section
-
- // Begin "Cursor" section
- key <UNK0> { [ ] };
- key <UNK1> { [ ] };
- key <UNK2> { [ ] };
- key <PGUP> { [ Prior ] };
- key <HOME> { [ Home ] };
- key <PGDN> { [ Next ] };
- key <UNK3> { [ ] };
- key <DEL> { [ Delete ] };
- key <INS> { [ Insert ] };
- key <LEFT> { [ Left ] };
- key <RGHT> { [ Right ] };
- key <UP> { [ Up ] };
- key <DOWN> { [ Down ] };
- key <EXEC> { [ Execute ] };
- // End "Cursor" section
-
- // Begin "Keypad" section
- key <KPMU> { [ KP_Multiply ] };
- key <KPDV> { [ KP_Divide ] };
- key <KPAD> { [ KP_Add ] };
- key <KPSU> { [ KP_Subtract ] };
-
- key <KP7> { [ KP_7 ] };
- key <KP8> { [ KP_8 ] };
- key <KP9> { [ KP_9 ] };
- key <KPEQ> { [ KP_Equal ] };
-
- key <KP4> { [ KP_4 ] };
- key <KP5> { [ KP_5 ] };
- key <KP6> { [ KP_6 ] };
- key <KPDC> { [ KP_Decimal ] };
-
- key <KP1> { [ KP_1 ] };
- key <KP2> { [ KP_2 ] };
- key <KP3> { [ KP_3 ] };
- key <KPEN> { [ KP_Enter ] };
-
- key <KP0> { [ KP_0 ] };
- key <KP00> { [ KP_0 ] };
- // End "Keypad" section
-
- // begin modifier mappings
- modifier_map Shift { Shift_R };
- modifier_map Mod1 { Meta_L, Meta_R };
- modifier_map Mod2 { Mode_switch };
- modifier_map Mod3 { Alt_L };
- modifier_map Mod4 { Num_Lock };
- modifier_map Mod5 { F13, F18, F20 };
-};
-
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+// US/ASCII layout for a Fujitsu 138 key keyboard
+xkb_symbols {
+ include "us(basic)"
+
+ // A few alphanumeric keys are different
+ key <TLDE> { [ grave, asciitilde ] };
+ key <BKSP> { [ BackSpace ] };
+ key <BKSL> { [ backslash, bar ] };
+ key <AB11> { [ ] };
+
+ key <RTSH> { [ Shift_R ] };
+
+ key <LALT> { [ Alt_L ] };
+ key <RALT> { [ Alt_R ] };
+ key <LMTA> { [ Meta_L ] };
+ key <RMTA> { [ Meta_R ] };
+ key <LNFD> { [ Linefeed ] };
+ key <COMP> { [ Multi_key ] };
+ // End alphanumeric section
+
+ // Begin "Function" section
+ key <BREA> { [ Break ] };
+ key <PRSC> { [ Print ] };
+ key <KNJI> { [ Kanji ] };
+ key <PAUS> { [ Pause ] };
+
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ F11 ] };
+ key <FK12> { [ F12 ] };
+ key <FK13> { [ F13 ] };
+ key <FK14> { [ F14 ] };
+ key <FK15> { [ F15 ] };
+ key <FK16> { [ F16 ] };
+ key <FK17> { [ F17 ] };
+ key <FK18> { [ F18 ] };
+ key <FK19> { [ F19 ] };
+ key <FK20> { [ F20 ] };
+ key <FK21> { [ F21 ] };
+ key <FK22> { [ F22 ] };
+ key <FK23> { [ F23 ] };
+ key <FK24> { [ F24 ] };
+ key <FK25> { [ F25 ] };
+ key <FK26> { [ F26 ] };
+ key <FK27> { [ F27 ] };
+ key <FK28> { [ F28 ] };
+ key <FK29> { [ F29 ] };
+ key <FK30> { [ F30 ] };
+ key <FK31> { [ F31 ] };
+ key <FK32> { [ F32 ] };
+ // End "Function" section
+
+ // Begin "Editing" section
+ key <UNDO> { [ Undo ] };
+ key <COPY> { [ F33 ] };
+ key <PAST> { [ F34 ] };
+ key <CUT> { [ F35 ] };
+ key <HELP> { [ Help ] };
+ // End "Editing" section
+
+ // Begin "Cursor" section
+ key <UNK0> { [ ] };
+ key <UNK1> { [ ] };
+ key <UNK2> { [ ] };
+ key <PGUP> { [ Prior ] };
+ key <HOME> { [ Home ] };
+ key <PGDN> { [ Next ] };
+ key <UNK3> { [ ] };
+ key <DEL> { [ Delete ] };
+ key <INS> { [ Insert ] };
+ key <LEFT> { [ Left ] };
+ key <RGHT> { [ Right ] };
+ key <UP> { [ Up ] };
+ key <DOWN> { [ Down ] };
+ key <EXEC> { [ Execute ] };
+ // End "Cursor" section
+
+ // Begin "Keypad" section
+ key <KPMU> { [ KP_Multiply ] };
+ key <KPDV> { [ KP_Divide ] };
+ key <KPAD> { [ KP_Add ] };
+ key <KPSU> { [ KP_Subtract ] };
+
+ key <KP7> { [ KP_7 ] };
+ key <KP8> { [ KP_8 ] };
+ key <KP9> { [ KP_9 ] };
+ key <KPEQ> { [ KP_Equal ] };
+
+ key <KP4> { [ KP_4 ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_6 ] };
+ key <KPDC> { [ KP_Decimal ] };
+
+ key <KP1> { [ KP_1 ] };
+ key <KP2> { [ KP_2 ] };
+ key <KP3> { [ KP_3 ] };
+ key <KPEN> { [ KP_Enter ] };
+
+ key <KP0> { [ KP_0 ] };
+ key <KP00> { [ KP_0 ] };
+ // End "Keypad" section
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_R };
+ modifier_map Mod1 { Meta_L, Meta_R };
+ modifier_map Mod2 { Mode_switch };
+ modifier_map Mod3 { Alt_L };
+ modifier_map Mod4 { Num_Lock };
+ modifier_map Mod5 { F13, F18, F20 };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/gb b/xorg-server/xkeyboard-config/symbols/gb
index f7e5bbe66..60987e68c 100644
--- a/xorg-server/xkeyboard-config/symbols/gb
+++ b/xorg-server/xkeyboard-config/symbols/gb
@@ -1,8 +1,4 @@
-// $XKeyboardConfig$
-
// based on a keyboard map from an 'xkb/symbols/gb' file
-//
-// $XFree86: xc/programs/xkbcomp/symbols/gb,v 1.6 2003/10/04 10:25:14 pascal Exp $
partial default alphanumeric_keys
xkb_symbols "basic" {
@@ -201,4 +197,3 @@ xkb_symbols "mac_intl" {
include "level3(ralt_switch)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/ge b/xorg-server/xkeyboard-config/symbols/ge
index 155a9da66..0746295b5 100644
--- a/xorg-server/xkeyboard-config/symbols/ge
+++ b/xorg-server/xkeyboard-config/symbols/ge
@@ -1,275 +1,272 @@
-// $XKeyboardConfig$
-
-// Georgian Keyboard Layouts by Aiet Kolkhi <aietkolkhi@gmail.com>
-// Full layout descriptions available at http://www.gakartuleba.org/layouts/
-//
-// This includes the following keyboard layouts: Georgian QWERTY; Georgian Ergonomic;
-// Georgian MESS; Georgian AZERTY Tskapo; Georgian Russian.
-//
-// Layouts include Georgian Mkhedruli alphabeth; most layouts also include some special
-// and ancient characters (like Fi, Yn, Elifi, Turned Gan and Ain). Layouts do not
-// include Georgian Asomtavruli or Georgian Khutsuri alphabeths which are also present
-// in Unicode.
-//
-// Georgian Typewriter no longer supported, as it is no longer used in Georgia.
-//
-// some layouts based on Georgian keyboard map, in the so called "latin" layout.
-// 1999, Pablo Saratxaga <srtxg@chanae.alphanet.ch>
-//
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- name[Group1]= "Georgia";
-
- key <TLDE> { [ 0x0100201e, 0x0100201c, 0x0100201e, asciitilde ] };
- key <AE01> { [ 1, exclam, apostrophe ] };
- key <AE02> { [ 2, at, 0x0100201e ] };
- key <AE03> { [ 3, numbersign, 0x0100201c ] };
- key <AE04> { [ 4, dollar, 0x01002116 ] };
- key <AE05> { [ 5, percent, EuroSign ] };
- key <AE06> { [ 6, asciicircum ] };
- key <AE07> { [ 7, ampersand, section ] };
- key <AE08> { [ 8, asterisk, degree ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore, 0x01002014 ] };
- key <AE12> { [ equal, plus, 0x01002013 ] };
-
- key <AD01> { [ 0x010010e5, Q ] };
- key <AD02> { [ 0x010010ec, 0x010010ed ] };
- key <AD03> { [ 0x010010d4, E, 0x010010f1 ] };
- key <AD04> { [ 0x010010e0, 0x010010e6, 0x010000ae ] };
- key <AD05> { [ 0x010010e2, 0x010010d7 ] };
- key <AD06> { [ 0x010010e7, Y, 0x010010f8 ] };
- key <AD07> { [ 0x010010e3, U ] };
- key <AD08> { [ 0x010010d8, I, 0x010010f2 ] };
- key <AD09> { [ 0x010010dd, O ] };
- key <AD10> { [ 0x010010de, P ] };
- key <AD11> { [ bracketleft, braceleft ] };
- key <AD12> { [ bracketright,braceright ] };
-
- key <AC01> { [ 0x010010d0, A, 0x010010fa ] };
- key <AC02> { [ 0x010010e1, 0x010010e8 ] };
- key <AC03> { [ 0x010010d3, D ] };
- key <AC04> { [ 0x010010e4, F, 0x010010f6 ] };
- key <AC05> { [ 0x010010d2, G, 0x010010f9 ] };
- key <AC06> { [ 0x010010f0, H, 0x010010f5 ] };
- key <AC07> { [ 0x010010ef, 0x010010df, 0x010010f7 ] };
- key <AC08> { [ 0x010010d9, K ] };
- key <AC09> { [ 0x010010da, L ] };
- key <AC10> { [ semicolon, colon ] };
- key <AC11> { [ apostrophe, quotedbl ] };
- key <BKSL> { [ backslash, bar, asciitilde, asciitilde ] };
-
- key <LSGT> { [ guillemotleft,guillemotright ] };
- key <AB01> { [ 0x010010d6, 0x010010eb ] };
- key <AB02> { [ 0x010010ee, X, 0x010010f4 ] };
- key <AB03> { [ 0x010010ea, 0x010010e9, 0x010000a9 ] };
- key <AB04> { [ 0x010010d5, V, 0x010010f3 ] };
- key <AB05> { [ 0x010010d1, B ] };
- key <AB06> { [ 0x010010dc, N, 0x010010fc ] };
- key <AB07> { [ 0x010010db, M ] };
- key <AB08> { [ comma, less, guillemotleft ] };
- key <AB09> { [ period, greater, guillemotright ] };
- key <AB10> { [ slash, question, 0x010010fb ] };
-
- include "level3(ralt_switch)"
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "qwerty" {
- include "ge(basic)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "ergonomic" {
- include "ge(basic)"
-
- name[Group1]= "Georgia - Ergonomic";
-
- key <TLDE> { [ 0x0100201e, apostrophe, 0x0100201e, asciitilde ] };
- key <AE01> { [ exclam, 1, exclam ] };
- key <AE02> { [ 0x01002116, 2, at ] };
- key <AE03> { [ comma, 3, numbersign, section ] };
- key <AE04> { [ semicolon, 4, dollar ] };
- key <AE05> { [ percent, 5, EuroSign ] };
- key <AE06> { [ colon, 6, asciicircum ] };
- key <AE07> { [ question, 7, ampersand ] };
- key <AE08> { [ period, 8, asterisk, degree ] };
- key <AE09> { [ parenleft, 9, parenleft, guillemotleft ] };
- key <AE10> { [ parenright, 0, parenright, guillemotright ] };
- key <AE11> { [ minus, plus, 0x01002014, underscore ] };
- key <AE12> { [ 0x0100201c, equal, equal ] };
-
- key <AD01> { [ 0x010010e9, noSymbol ] };
- key <AD02> { [ 0x010010de, noSymbol ] };
- key <AD03> { [ 0x010010e3, noSymbol ] };
- key <AD04> { [ 0x010010eb, noSymbol, noSymbol, 0x010000ae ] };
- key <AD05> { [ 0x010010ed, noSymbol, noSymbol, 0x010010d7 ] };
- key <AD06> { [ 0x010010e2, noSymbol, noSymbol, 0x010010f8 ] };
- key <AD07> { [ 0x010010d7, noSymbol ] };
- key <AD08> { [ 0x010010dc, noSymbol, 0x010010fc, I ] };
- key <AD09> { [ 0x010010d5, noSymbol, 0x010010f3 ] };
- key <AD10> { [ 0x010010e8, noSymbol ] };
- key <AD11> { [ 0x010010d9, noSymbol, bracketleft, braceleft ] };
- key <AD12> { [ 0x010010e5, noSymbol, bracketright,braceright ] };
-
- key <AC01> { [ 0x010010ee, noSymbol, 0x010010f4 ] };
- key <AC02> { [ 0x010010d8, noSymbol, 0x010010f2 ] };
- key <AC03> { [ 0x010010d0, noSymbol, 0x010010fa, D ] };
- key <AC04> { [ 0x010010d4, noSymbol, 0x010010f1 ] };
- key <AC05> { [ 0x010010dd, noSymbol ] };
- key <AC06> { [ 0x010010d3, noSymbol ] };
- key <AC07> { [ 0x010010db, noSymbol ] };
- key <AC08> { [ 0x010010e1, noSymbol ] };
- key <AC09> { [ 0x010010e0, noSymbol, L ] };
- key <AC10> { [ 0x010010d1, noSymbol, colon ] };
- key <AC11> { [ 0x010010d2, noSymbol, 0x010010f9, quotedbl ] };
- key <BKSL> { [ slash, section, backslash, bar ] };
-
- key <LSGT> { [ guillemotleft,guillemotright ] };
- key <AB01> { [ 0x010010ef, noSymbol ] };
- key <AB02> { [ 0x010010f0, noSymbol, 0x010010f5, X ] };
- key <AB03> { [ 0x010010e7, noSymbol, 0x010010f8, C ] };
- key <AB04> { [ 0x010010e6, noSymbol, 0x010010f7, V ] };
- key <AB05> { [ 0x010010df, noSymbol ] };
- key <AB06> { [ 0x010010d6, noSymbol ] };
- key <AB07> { [ 0x010010ea, noSymbol, noSymbol, M ] };
- key <AB08> { [ 0x010010da, noSymbol, guillemotleft, less ] };
- key <AB09> { [ 0x010010e4, noSymbol, 0x010010f6, guillemotright ] };
- key <AB10> { [ 0x010010ec, noSymbol, 0x010010fb ] };
-
- include "level3(ralt_switch)"
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "mess" {
- include "ge(basic)"
-
- name[Group1]= "Georgia - MESS";
-
- key <TLDE> { [ 0x010010ed, backslash, quoteleft ] };
- key <AE01> { [ 1, exclam, apostrophe ] };
- key <AE02> { [ 2, at, asciitilde ] };
- key <AE03> { [ 3, 0x01002116, numbersign ] };
- key <AE04> { [ 4, dollar, EuroSign ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, asciicircum ] };
- key <AE07> { [ 7, ampersand, section ] };
- key <AE08> { [ 8, asterisk, degree ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright, 0x01002014 ] };
- key <AE11> { [ minus, underscore, 0x01002013 ] };
- key <AE12> { [ 0x010010df, plus, bar ] };
- key <AD01> { [ 0x010010e5, Q ] };
- key <AD02> { [ 0x010010ec, W ] };
- key <AD03> { [ 0x010010d4, E ] };
- key <AD04> { [ 0x010010e0, R ] };
- key <AD05> { [ 0x010010e2, T ] };
- key <AD06> { [ 0x010010e7, Y ] };
- key <AD07> { [ 0x010010e3, U ] };
- key <AD08> { [ 0x010010d8, I, 0x010010f2 ] };
- key <AD09> { [ 0x010010dd, O ] };
- key <AD10> { [ 0x010010de, P ] };
- key <AD11> { [ 0x010010e8, bracketleft, guillemotleft ] };
- key <AD12> { [ 0x010010e6, bracketright, guillemotright ] };
- key <AC01> { [ 0x010010d0, A, 0x010010fa ] };
- key <AC02> { [ 0x010010e1, S ] };
- key <AC03> { [ 0x010010d3, D ] };
- key <AC04> { [ 0x010010e4, F, 0x010010f6 ] };
- key <AC05> { [ 0x010010d2, G, 0x010010f9 ] };
- key <AC06> { [ 0x010010f0, H, 0x010010f1 ] };
- key <AC07> { [ 0x010010ef, J, 0x010010f7 ] };
- key <AC08> { [ 0x010010d9, K ] };
- key <AC09> { [ 0x010010da, L ] };
- key <AC10> { [ 0x010010d7,0x0100201e ] };
- key <AC11> { [ 0x010010e9,0x0100201c ] };
- key <BKSL> { [ equal, slash, bar ] };
-
- key <LSGT> { [ guillemotleft, guillemotright ] };
- key <AB01> { [ 0x010010d6, Z, 0x010010f5 ] };
- key <AB02> { [ 0x010010ee, X, 0x010010f4 ] };
- key <AB03> { [ 0x010010ea, C ] };
- key <AB04> { [ 0x010010d5, V, 0x010010f3 ] };
- key <AB05> { [ 0x010010d1, B ] };
- key <AB06> { [ 0x010010dc, N, 0x010010fc ] };
- key <AB07> { [ 0x010010db, M ] };
- key <AB08> { [ comma, semicolon, less ] };
- key <AB09> { [ period, colon, greater ] };
- key <AB10> { [ 0x010010eb, question, 0x010010fb ] };
-
- include "level3(ralt_switch)"
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "ru" {
-
- name[Group1]= "Georgia - Russian";
-
- key <TLDE> { [ asciicircum, asciitilde ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, semicolon ] };
- key <AE05> { [ 5, colon ] };
- key <AE06> { [ 6, comma ] };
- key <AE07> { [ 7, period ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ numbersign, bar ] };
-
- key <AD01> { [ 0x010010e6, q ] };
- key <AD02> { [ 0x010010ea, w ] };
- key <AD03> { [ 0x010010e3, e ] };
- key <AD04> { [ 0x010010d9, r ] };
- key <AD05> { [ 0x010010d4, t ] };
- key <AD06> { [ 0x010010dc, y ] };
- key <AD07> { [ 0x010010d2, u ] };
- key <AD08> { [ 0x010010e8, i ] };
- key <AD09> { [ 0x010010ec, o ] };
- key <AD10> { [ 0x010010d6, p ] };
- key <AD11> { [ 0x010010ee, bracketleft ] };
- key <AD12> { [ 0x010010ef, bracketright ] };
-
- key <AC01> { [ 0x010010e4, a ] };
- key <AC02> { [ 0x010010d7, s ] };
- key <AC03> { [ 0x010010d5, d ] };
- key <AC04> { [ 0x010010d0, f ] };
- key <AC05> { [ 0x010010de, g ] };
- key <AC06> { [ 0x010010e0, h ] };
- key <AC07> { [ 0x010010dd, j ] };
- key <AC08> { [ 0x010010da, k ] };
- key <AC09> { [ 0x010010d3, l ] };
- key <AC10> { [ 0x010010df, semicolon ] };
- key <AC11> { [ 0x010010eb, percent ] };
- key <BKSL> { [ backslash, bar ] };
-
- key <LSGT> { [ guillemotleft,guillemotright ] };
- key <AB01> { [ 0x010010ed, z ] };
- key <AB02> { [ 0x010010e9, x ] };
- key <AB03> { [ 0x010010e1, c ] };
- key <AB04> { [ 0x010010db, v ] };
- key <AB05> { [ 0x010010d8, b ] };
- key <AB06> { [ 0x010010e2, n ] };
- key <AB07> { [ 0x010010e5, m ] };
- key <AB08> { [ 0x010010d1, less ] };
- key <AB09> { [ 0x010010e7, greater ] };
- key <AB10> { [ 0x010010f0, question ] };
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "os" {
-
- include "ru(os_legacy)"
-
- name[Group1]= "Georgia - Ossetian";
-
-};
-
+// Georgian Keyboard Layouts by Aiet Kolkhi <aietkolkhi@gmail.com>
+// Full layout descriptions available at http://www.gakartuleba.org/layouts/
+//
+// This includes the following keyboard layouts: Georgian QWERTY; Georgian Ergonomic;
+// Georgian MESS; Georgian AZERTY Tskapo; Georgian Russian.
+//
+// Layouts include Georgian Mkhedruli alphabeth; most layouts also include some special
+// and ancient characters (like Fi, Yn, Elifi, Turned Gan and Ain). Layouts do not
+// include Georgian Asomtavruli or Georgian Khutsuri alphabeths which are also present
+// in Unicode.
+//
+// Georgian Typewriter no longer supported, as it is no longer used in Georgia.
+//
+// some layouts based on Georgian keyboard map, in the so called "latin" layout.
+// 1999, Pablo Saratxaga <srtxg@chanae.alphanet.ch>
+//
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ name[Group1]= "Georgia";
+
+ key <TLDE> { [ 0x0100201e, 0x0100201c, 0x0100201e, asciitilde ] };
+ key <AE01> { [ 1, exclam, apostrophe ] };
+ key <AE02> { [ 2, at, 0x0100201e ] };
+ key <AE03> { [ 3, numbersign, 0x0100201c ] };
+ key <AE04> { [ 4, dollar, 0x01002116 ] };
+ key <AE05> { [ 5, percent, EuroSign ] };
+ key <AE06> { [ 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand, section ] };
+ key <AE08> { [ 8, asterisk, degree ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore, 0x01002014 ] };
+ key <AE12> { [ equal, plus, 0x01002013 ] };
+
+ key <AD01> { [ 0x010010e5, Q ] };
+ key <AD02> { [ 0x010010ec, 0x010010ed ] };
+ key <AD03> { [ 0x010010d4, E, 0x010010f1 ] };
+ key <AD04> { [ 0x010010e0, 0x010010e6, 0x010000ae ] };
+ key <AD05> { [ 0x010010e2, 0x010010d7 ] };
+ key <AD06> { [ 0x010010e7, Y, 0x010010f8 ] };
+ key <AD07> { [ 0x010010e3, U ] };
+ key <AD08> { [ 0x010010d8, I, 0x010010f2 ] };
+ key <AD09> { [ 0x010010dd, O ] };
+ key <AD10> { [ 0x010010de, P ] };
+ key <AD11> { [ bracketleft, braceleft ] };
+ key <AD12> { [ bracketright,braceright ] };
+
+ key <AC01> { [ 0x010010d0, A, 0x010010fa ] };
+ key <AC02> { [ 0x010010e1, 0x010010e8 ] };
+ key <AC03> { [ 0x010010d3, D ] };
+ key <AC04> { [ 0x010010e4, F, 0x010010f6 ] };
+ key <AC05> { [ 0x010010d2, G, 0x010010f9 ] };
+ key <AC06> { [ 0x010010f0, H, 0x010010f5 ] };
+ key <AC07> { [ 0x010010ef, 0x010010df, 0x010010f7 ] };
+ key <AC08> { [ 0x010010d9, K ] };
+ key <AC09> { [ 0x010010da, L ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ apostrophe, quotedbl ] };
+ key <BKSL> { [ backslash, bar, asciitilde, asciitilde ] };
+
+ key <LSGT> { [ guillemotleft,guillemotright ] };
+ key <AB01> { [ 0x010010d6, 0x010010eb ] };
+ key <AB02> { [ 0x010010ee, X, 0x010010f4 ] };
+ key <AB03> { [ 0x010010ea, 0x010010e9, 0x010000a9 ] };
+ key <AB04> { [ 0x010010d5, V, 0x010010f3 ] };
+ key <AB05> { [ 0x010010d1, B ] };
+ key <AB06> { [ 0x010010dc, N, 0x010010fc ] };
+ key <AB07> { [ 0x010010db, M ] };
+ key <AB08> { [ comma, less, guillemotleft ] };
+ key <AB09> { [ period, greater, guillemotright ] };
+ key <AB10> { [ slash, question, 0x010010fb ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "qwerty" {
+ include "ge(basic)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "ergonomic" {
+ include "ge(basic)"
+
+ name[Group1]= "Georgia - Ergonomic";
+
+ key <TLDE> { [ 0x0100201e, apostrophe, 0x0100201e, asciitilde ] };
+ key <AE01> { [ exclam, 1, exclam ] };
+ key <AE02> { [ 0x01002116, 2, at ] };
+ key <AE03> { [ comma, 3, numbersign, section ] };
+ key <AE04> { [ semicolon, 4, dollar ] };
+ key <AE05> { [ percent, 5, EuroSign ] };
+ key <AE06> { [ colon, 6, asciicircum ] };
+ key <AE07> { [ question, 7, ampersand ] };
+ key <AE08> { [ period, 8, asterisk, degree ] };
+ key <AE09> { [ parenleft, 9, parenleft, guillemotleft ] };
+ key <AE10> { [ parenright, 0, parenright, guillemotright ] };
+ key <AE11> { [ minus, plus, 0x01002014, underscore ] };
+ key <AE12> { [ 0x0100201c, equal, equal ] };
+
+ key <AD01> { [ 0x010010e9, noSymbol ] };
+ key <AD02> { [ 0x010010de, noSymbol ] };
+ key <AD03> { [ 0x010010e3, noSymbol ] };
+ key <AD04> { [ 0x010010eb, noSymbol, noSymbol, 0x010000ae ] };
+ key <AD05> { [ 0x010010ed, noSymbol, noSymbol, 0x010010d7 ] };
+ key <AD06> { [ 0x010010e2, noSymbol, noSymbol, 0x010010f8 ] };
+ key <AD07> { [ 0x010010d7, noSymbol ] };
+ key <AD08> { [ 0x010010dc, noSymbol, 0x010010fc, I ] };
+ key <AD09> { [ 0x010010d5, noSymbol, 0x010010f3 ] };
+ key <AD10> { [ 0x010010e8, noSymbol ] };
+ key <AD11> { [ 0x010010d9, noSymbol, bracketleft, braceleft ] };
+ key <AD12> { [ 0x010010e5, noSymbol, bracketright,braceright ] };
+
+ key <AC01> { [ 0x010010ee, noSymbol, 0x010010f4 ] };
+ key <AC02> { [ 0x010010d8, noSymbol, 0x010010f2 ] };
+ key <AC03> { [ 0x010010d0, noSymbol, 0x010010fa, D ] };
+ key <AC04> { [ 0x010010d4, noSymbol, 0x010010f1 ] };
+ key <AC05> { [ 0x010010dd, noSymbol ] };
+ key <AC06> { [ 0x010010d3, noSymbol ] };
+ key <AC07> { [ 0x010010db, noSymbol ] };
+ key <AC08> { [ 0x010010e1, noSymbol ] };
+ key <AC09> { [ 0x010010e0, noSymbol, L ] };
+ key <AC10> { [ 0x010010d1, noSymbol, colon ] };
+ key <AC11> { [ 0x010010d2, noSymbol, 0x010010f9, quotedbl ] };
+ key <BKSL> { [ slash, section, backslash, bar ] };
+
+ key <LSGT> { [ guillemotleft,guillemotright ] };
+ key <AB01> { [ 0x010010ef, noSymbol ] };
+ key <AB02> { [ 0x010010f0, noSymbol, 0x010010f5, X ] };
+ key <AB03> { [ 0x010010e7, noSymbol, 0x010010f8, C ] };
+ key <AB04> { [ 0x010010e6, noSymbol, 0x010010f7, V ] };
+ key <AB05> { [ 0x010010df, noSymbol ] };
+ key <AB06> { [ 0x010010d6, noSymbol ] };
+ key <AB07> { [ 0x010010ea, noSymbol, noSymbol, M ] };
+ key <AB08> { [ 0x010010da, noSymbol, guillemotleft, less ] };
+ key <AB09> { [ 0x010010e4, noSymbol, 0x010010f6, guillemotright ] };
+ key <AB10> { [ 0x010010ec, noSymbol, 0x010010fb ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "mess" {
+ include "ge(basic)"
+
+ name[Group1]= "Georgia - MESS";
+
+ key <TLDE> { [ 0x010010ed, backslash, quoteleft ] };
+ key <AE01> { [ 1, exclam, apostrophe ] };
+ key <AE02> { [ 2, at, asciitilde ] };
+ key <AE03> { [ 3, 0x01002116, numbersign ] };
+ key <AE04> { [ 4, dollar, EuroSign ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand, section ] };
+ key <AE08> { [ 8, asterisk, degree ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright, 0x01002014 ] };
+ key <AE11> { [ minus, underscore, 0x01002013 ] };
+ key <AE12> { [ 0x010010df, plus, bar ] };
+ key <AD01> { [ 0x010010e5, Q ] };
+ key <AD02> { [ 0x010010ec, W ] };
+ key <AD03> { [ 0x010010d4, E ] };
+ key <AD04> { [ 0x010010e0, R ] };
+ key <AD05> { [ 0x010010e2, T ] };
+ key <AD06> { [ 0x010010e7, Y ] };
+ key <AD07> { [ 0x010010e3, U ] };
+ key <AD08> { [ 0x010010d8, I, 0x010010f2 ] };
+ key <AD09> { [ 0x010010dd, O ] };
+ key <AD10> { [ 0x010010de, P ] };
+ key <AD11> { [ 0x010010e8, bracketleft, guillemotleft ] };
+ key <AD12> { [ 0x010010e6, bracketright, guillemotright ] };
+ key <AC01> { [ 0x010010d0, A, 0x010010fa ] };
+ key <AC02> { [ 0x010010e1, S ] };
+ key <AC03> { [ 0x010010d3, D ] };
+ key <AC04> { [ 0x010010e4, F, 0x010010f6 ] };
+ key <AC05> { [ 0x010010d2, G, 0x010010f9 ] };
+ key <AC06> { [ 0x010010f0, H, 0x010010f1 ] };
+ key <AC07> { [ 0x010010ef, J, 0x010010f7 ] };
+ key <AC08> { [ 0x010010d9, K ] };
+ key <AC09> { [ 0x010010da, L ] };
+ key <AC10> { [ 0x010010d7,0x0100201e ] };
+ key <AC11> { [ 0x010010e9,0x0100201c ] };
+ key <BKSL> { [ equal, slash, bar ] };
+
+ key <LSGT> { [ guillemotleft, guillemotright ] };
+ key <AB01> { [ 0x010010d6, Z, 0x010010f5 ] };
+ key <AB02> { [ 0x010010ee, X, 0x010010f4 ] };
+ key <AB03> { [ 0x010010ea, C ] };
+ key <AB04> { [ 0x010010d5, V, 0x010010f3 ] };
+ key <AB05> { [ 0x010010d1, B ] };
+ key <AB06> { [ 0x010010dc, N, 0x010010fc ] };
+ key <AB07> { [ 0x010010db, M ] };
+ key <AB08> { [ comma, semicolon, less ] };
+ key <AB09> { [ period, colon, greater ] };
+ key <AB10> { [ 0x010010eb, question, 0x010010fb ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "ru" {
+
+ name[Group1]= "Georgia - Russian";
+
+ key <TLDE> { [ asciicircum, asciitilde ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, semicolon ] };
+ key <AE05> { [ 5, colon ] };
+ key <AE06> { [ 6, comma ] };
+ key <AE07> { [ 7, period ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ numbersign, bar ] };
+
+ key <AD01> { [ 0x010010e6, q ] };
+ key <AD02> { [ 0x010010ea, w ] };
+ key <AD03> { [ 0x010010e3, e ] };
+ key <AD04> { [ 0x010010d9, r ] };
+ key <AD05> { [ 0x010010d4, t ] };
+ key <AD06> { [ 0x010010dc, y ] };
+ key <AD07> { [ 0x010010d2, u ] };
+ key <AD08> { [ 0x010010e8, i ] };
+ key <AD09> { [ 0x010010ec, o ] };
+ key <AD10> { [ 0x010010d6, p ] };
+ key <AD11> { [ 0x010010ee, bracketleft ] };
+ key <AD12> { [ 0x010010ef, bracketright ] };
+
+ key <AC01> { [ 0x010010e4, a ] };
+ key <AC02> { [ 0x010010d7, s ] };
+ key <AC03> { [ 0x010010d5, d ] };
+ key <AC04> { [ 0x010010d0, f ] };
+ key <AC05> { [ 0x010010de, g ] };
+ key <AC06> { [ 0x010010e0, h ] };
+ key <AC07> { [ 0x010010dd, j ] };
+ key <AC08> { [ 0x010010da, k ] };
+ key <AC09> { [ 0x010010d3, l ] };
+ key <AC10> { [ 0x010010df, semicolon ] };
+ key <AC11> { [ 0x010010eb, percent ] };
+ key <BKSL> { [ backslash, bar ] };
+
+ key <LSGT> { [ guillemotleft,guillemotright ] };
+ key <AB01> { [ 0x010010ed, z ] };
+ key <AB02> { [ 0x010010e9, x ] };
+ key <AB03> { [ 0x010010e1, c ] };
+ key <AB04> { [ 0x010010db, v ] };
+ key <AB05> { [ 0x010010d8, b ] };
+ key <AB06> { [ 0x010010e2, n ] };
+ key <AB07> { [ 0x010010e5, m ] };
+ key <AB08> { [ 0x010010d1, less ] };
+ key <AB09> { [ 0x010010e7, greater ] };
+ key <AB10> { [ 0x010010f0, question ] };
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "os" {
+
+ include "ru(os_legacy)"
+
+ name[Group1]= "Georgia - Ossetian";
+
+};
diff --git a/xorg-server/xkeyboard-config/symbols/gh b/xorg-server/xkeyboard-config/symbols/gh
index a997e9fb0..04c7a8ed4 100644
--- a/xorg-server/xkeyboard-config/symbols/gh
+++ b/xorg-server/xkeyboard-config/symbols/gh
@@ -1,153 +1,151 @@
-// $XKeyboardConfig$
-//
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- include "us"
-
- name[Group1]= "Ghana";
-
- key <AE04> { [ 4, 0x010020B5, dollar, cent ] };
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "akan" {
- include "gh(basic)"
-
- name[Group1]= "Ghana - Akan";
-
- key <AD01> { [ 0x0100025B, 0x01000190, q, Q ] };
- key <AB02> { [ 0x01000254, 0x01000186, x, X ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "ga" {
- include "gh(basic)"
-
- name[Group1]= "Ghana - Ga";
-
- key <AD01> { [ 0x0100025B, 0x01000190, q, Q ] };
- key <AB02> { [ 0x01000254, 0x01000186, x, X ] };
- key <AB03> { [ 0x0100014B, 0x0100014A, c, C ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "ewe" {
- include "gh(basic)"
-
- name[Group1]= "Ghana - Ewe";
-
- key <AD01> { [ 0x0100025B, 0x01000190, q, Q ] };
- key <AB03> { [ 0x0100014B, 0x0100014A, c, C ] };
- key <AD11> { [ 0x01000254, 0x01000186, braceleft, braceleft ] };
- key <AD12> { [ 0x0100028B, 0x010001B2, braceright, braceright ] };
- key <BKSL> { [ 0x01000256, 0x01000189, backslash, backslash ] };
- key <AC07> { [ 0x01000192, 0x01000191, j, J ] };
- key <AC05> { [ g, G, 0x01000263, 0x01000194 ] };
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "fula" {
- include "gh(basic)"
-
- name[Group1]= "Ghana - Fula";
-
- key <AD01> { [ 0x01000071, 0x01000051, q, Q ] };
- key <AD02> { [ udiaeresis, Udiaeresis, w, W ] };
- key <AD03> { [ e, E, EuroSign, cent ] };
- key <AD11> { [ 0x010001B4, 0x010001B3,bracketleft, braceleft ] };
- key <AD12> { [ gcaron, Gcaron,bracketright, braceright] };
- key <AC03> { [ 0x01000257, 0x0100018A, d, D ] };
- key <AC10> { [ 0x01000131, 0x01000130, semicolon, colon ] };
- key <AC11> { [ 0x010001DD, 0x0100018E,apostrophe, quotedbl ] };
- key <AB01> { [ 0x01000272, 0x0100019D, z, Z ] };
- key <AB07> { [ ntilde, Ntilde, m, M ] };
- key <AB09> { [ ccedilla, Ccedilla, period, greater ] };
- key <AB10> { [ scedilla, Scedilla, slash, question ] };
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "hausa" {
- include "gh(fula)"
-
- name[Group1]= "Ghana - Hausa";
-};
-
-partial alphanumeric_keys
-xkb_symbols "generic" {
- include "gh(basic)"
-
- name[Group1]= "Ghana - Multilingual";
-
- key <AD03> { [ e, E, 0x0100025b, 0x01000190 ] };
- key <AB03> { [ c, C, 0x01000254, 0x01000186 ] };
- key <AC03> { [ d, D, 0x01000256, 0x01000189 ] };
- key <AC04> { [ f, F, 0x01000192, 0x01000191 ] };
- key <AC05> { [ g, G, 0x01000263, 0x01000194 ] };
- key <AB06> { [ n, N, 0x0100014b, 0x0100014a ] };
- key <AB01> { [ z, Z, 0x010001B6, 0x010001B5 ] };
- key <AB04> { [ v, V, 0x0100028B, 0x010001B2 ] };
- key <AE04> { [ 4, dollar, 0x010020B5, cent ] };
- include "level3(ralt_switch)"
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "avn" {
- include "gh(basic)"
-
- name[Group1]= "Ghana - Avatime";
-
- key <TLDE> { [ grave, asciitilde, 0x01000300, 0x01000303 ] }; // combining grave; combining tilde
- key <AE04> { [ 4, dollar, cent, 0x010020B5 ] }; // ¢, ₵
- key <AE11> { [ minus, underscore, 0x01000304, 0x01000304 ] }; // combining macron
- key <AD01> { [ 0x0100028B, 0x010001B2 ] }; // ʋ, Ʋ
- key <AD07> { [ u, U, 0x0100028A, 0x010001B1 ] }; // ʊ, Ʊ
- key <AD08> { [ i, I, 0x01000269, 0x01000196 ] }; // ɩ, Ɩ
- key <AD11> { [ 0x0100025B, 0x01000190, bracketleft, braceleft ] }; // ɛ, Ɛ
- key <AC03> { [ d, D, 0x01000256, 0x01000189 ] }; // ɖ, Ɖ
- key <AC04> { [ f, F, 0x01000192, 0x01000191 ] }; // ƒ, Ƒ
- key <AC07> { [ 0x0100014B, 0x0100014A ] }; // ŋ, Ŋ
- key <AC11> { [ apostrophe, quotedbl, 0x01000301, 0x01000301 ] }; // combining acute
- key <AB03> { [ 0x01000254, 0x01000186 ] }; // ɔ, Ɔ
-
- include "level3(ralt_switch)"
-
-};
-
-// This keyboard layout fully imitates the 'Ghana Unicode' layout which is used in GILLBT on Windows with Keyman.
-// However, in this layout a 3rd level key (R ALT) is used rather than dead keys.
-// Also it has three additional features:
-// 1) combining macron above: <R ALT> + <SHIFT> + <->
-// 2) cent: <R ALT> + <4> or <R ALT> + <SHIFT> + <4>
-// 3) ʊ/Ʊ: <R ALT> + <u>/<U>
-
-partial alphanumeric_keys
-xkb_symbols "gillbt" {
- include "gh(basic)"
-
- name[Group1]= "Ghana - GILLBT";
-
- key <TLDE> { [ grave, asciitilde, 0x01000300, 0x01000303 ] }; // combining grave; combining tilde
- key <AE04> { [ 4, dollar, cent, 0x010020B5 ] }; // ¢, ₵
- key <AE06> { [ 6, asciicircum, 0x01000302, 0x01000302 ] }; // combining circumflex accent
- key <AE11> { [ minus, underscore, 0x01000331, 0x01000304 ] }; // combining macron below; combining macron above
- key <AE12> { [ 0x0100014B, 0x0100014A, equal, plus ] }; // ŋ, Ŋ
- key <AD01> { [ 0x0100028B, 0x010001B2, q, Q ] }; // ʋ, Ʋ
- key <AD03> { [ e, E, 0x010001DD, 0x0100018E ] }; // ǝ, Ǝ
- key <AD07> { [ u, U, 0x0100028A, 0x010001B1 ] }; // ʊ, Ʊ
- key <AD11> { [ 0x0100025B, 0x01000190, bracketleft, braceleft ] }; // ɛ, Ɛ
- key <AD12> { [ 0x01000254, 0x01000186, bracketright, braceright ] }; // ɔ, Ɔ
- key <AC03> { [ d, D, 0x01000256, 0x01000189 ] }; // ɖ, Ɖ
- key <AC04> { [ f, F, 0x01000192, 0x01000191 ] }; // ƒ, Ƒ
- key <AC05> { [ g, G, 0x01000263, 0x01000194 ] }; // ɣ, Ɣ
- key <AC11> { [ apostrophe, quotedbl, 0x01000301, 0x01000301 ] }; // combining acute
- key <AB01> { [ z, Z, 0x01000292, 0x010001B7 ] }; // ʒ, Ʒ
- key <AB02> { [ 0x01000269, 0x01000196, x, X ] }; // ɩ, Ɩ
- key <AB03> { [ c, C, 0x010000E7, 0x010000C7 ] }; // ç, Ç
-
- include "level3(ralt_switch)"
-};
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ include "us"
+
+ name[Group1]= "Ghana";
+
+ key <AE04> { [ 4, 0x010020B5, dollar, cent ] };
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "akan" {
+ include "gh(basic)"
+
+ name[Group1]= "Ghana - Akan";
+
+ key <AD01> { [ 0x0100025B, 0x01000190, q, Q ] };
+ key <AB02> { [ 0x01000254, 0x01000186, x, X ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "ga" {
+ include "gh(basic)"
+
+ name[Group1]= "Ghana - Ga";
+
+ key <AD01> { [ 0x0100025B, 0x01000190, q, Q ] };
+ key <AB02> { [ 0x01000254, 0x01000186, x, X ] };
+ key <AB03> { [ 0x0100014B, 0x0100014A, c, C ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "ewe" {
+ include "gh(basic)"
+
+ name[Group1]= "Ghana - Ewe";
+
+ key <AD01> { [ 0x0100025B, 0x01000190, q, Q ] };
+ key <AB03> { [ 0x0100014B, 0x0100014A, c, C ] };
+ key <AD11> { [ 0x01000254, 0x01000186, braceleft, braceleft ] };
+ key <AD12> { [ 0x0100028B, 0x010001B2, braceright, braceright ] };
+ key <BKSL> { [ 0x01000256, 0x01000189, backslash, backslash ] };
+ key <AC07> { [ 0x01000192, 0x01000191, j, J ] };
+ key <AC05> { [ g, G, 0x01000263, 0x01000194 ] };
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "fula" {
+ include "gh(basic)"
+
+ name[Group1]= "Ghana - Fula";
+
+ key <AD01> { [ 0x01000071, 0x01000051, q, Q ] };
+ key <AD02> { [ udiaeresis, Udiaeresis, w, W ] };
+ key <AD03> { [ e, E, EuroSign, cent ] };
+ key <AD11> { [ 0x010001B4, 0x010001B3,bracketleft, braceleft ] };
+ key <AD12> { [ gcaron, Gcaron,bracketright, braceright] };
+ key <AC03> { [ 0x01000257, 0x0100018A, d, D ] };
+ key <AC10> { [ 0x01000131, 0x01000130, semicolon, colon ] };
+ key <AC11> { [ 0x010001DD, 0x0100018E,apostrophe, quotedbl ] };
+ key <AB01> { [ 0x01000272, 0x0100019D, z, Z ] };
+ key <AB07> { [ ntilde, Ntilde, m, M ] };
+ key <AB09> { [ ccedilla, Ccedilla, period, greater ] };
+ key <AB10> { [ scedilla, Scedilla, slash, question ] };
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "hausa" {
+ include "gh(fula)"
+
+ name[Group1]= "Ghana - Hausa";
+};
+
+partial alphanumeric_keys
+xkb_symbols "generic" {
+ include "gh(basic)"
+
+ name[Group1]= "Ghana - Multilingual";
+
+ key <AD03> { [ e, E, 0x0100025b, 0x01000190 ] };
+ key <AB03> { [ c, C, 0x01000254, 0x01000186 ] };
+ key <AC03> { [ d, D, 0x01000256, 0x01000189 ] };
+ key <AC04> { [ f, F, 0x01000192, 0x01000191 ] };
+ key <AC05> { [ g, G, 0x01000263, 0x01000194 ] };
+ key <AB06> { [ n, N, 0x0100014b, 0x0100014a ] };
+ key <AB01> { [ z, Z, 0x010001B6, 0x010001B5 ] };
+ key <AB04> { [ v, V, 0x0100028B, 0x010001B2 ] };
+ key <AE04> { [ 4, dollar, 0x010020B5, cent ] };
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "avn" {
+ include "gh(basic)"
+
+ name[Group1]= "Ghana - Avatime";
+
+ key <TLDE> { [ grave, asciitilde, 0x01000300, 0x01000303 ] }; // combining grave; combining tilde
+ key <AE04> { [ 4, dollar, cent, 0x010020B5 ] }; // ¢, ₵
+ key <AE11> { [ minus, underscore, 0x01000304, 0x01000304 ] }; // combining macron
+ key <AD01> { [ 0x0100028B, 0x010001B2 ] }; // ʋ, Ʋ
+ key <AD07> { [ u, U, 0x0100028A, 0x010001B1 ] }; // ʊ, Ʊ
+ key <AD08> { [ i, I, 0x01000269, 0x01000196 ] }; // ɩ, Ɩ
+ key <AD11> { [ 0x0100025B, 0x01000190, bracketleft, braceleft ] }; // ɛ, Ɛ
+ key <AC03> { [ d, D, 0x01000256, 0x01000189 ] }; // ɖ, Ɖ
+ key <AC04> { [ f, F, 0x01000192, 0x01000191 ] }; // ƒ, Ƒ
+ key <AC07> { [ 0x0100014B, 0x0100014A ] }; // ŋ, Ŋ
+ key <AC11> { [ apostrophe, quotedbl, 0x01000301, 0x01000301 ] }; // combining acute
+ key <AB03> { [ 0x01000254, 0x01000186 ] }; // ɔ, Ɔ
+
+ include "level3(ralt_switch)"
+
+};
+
+// This keyboard layout fully imitates the 'Ghana Unicode' layout which is used in GILLBT on Windows with Keyman.
+// However, in this layout a 3rd level key (R ALT) is used rather than dead keys.
+// Also it has three additional features:
+// 1) combining macron above: <R ALT> + <SHIFT> + <->
+// 2) cent: <R ALT> + <4> or <R ALT> + <SHIFT> + <4>
+// 3) ʊ/Ʊ: <R ALT> + <u>/<U>
+
+partial alphanumeric_keys
+xkb_symbols "gillbt" {
+ include "gh(basic)"
+
+ name[Group1]= "Ghana - GILLBT";
+
+ key <TLDE> { [ grave, asciitilde, 0x01000300, 0x01000303 ] }; // combining grave; combining tilde
+ key <AE04> { [ 4, dollar, cent, 0x010020B5 ] }; // ¢, ₵
+ key <AE06> { [ 6, asciicircum, 0x01000302, 0x01000302 ] }; // combining circumflex accent
+ key <AE11> { [ minus, underscore, 0x01000331, 0x01000304 ] }; // combining macron below; combining macron above
+ key <AE12> { [ 0x0100014B, 0x0100014A, equal, plus ] }; // ŋ, Ŋ
+ key <AD01> { [ 0x0100028B, 0x010001B2, q, Q ] }; // ʋ, Ʋ
+ key <AD03> { [ e, E, 0x010001DD, 0x0100018E ] }; // ǝ, Ǝ
+ key <AD07> { [ u, U, 0x0100028A, 0x010001B1 ] }; // ʊ, Ʊ
+ key <AD11> { [ 0x0100025B, 0x01000190, bracketleft, braceleft ] }; // ɛ, Ɛ
+ key <AD12> { [ 0x01000254, 0x01000186, bracketright, braceright ] }; // ɔ, Ɔ
+ key <AC03> { [ d, D, 0x01000256, 0x01000189 ] }; // ɖ, Ɖ
+ key <AC04> { [ f, F, 0x01000192, 0x01000191 ] }; // ƒ, Ƒ
+ key <AC05> { [ g, G, 0x01000263, 0x01000194 ] }; // ɣ, Ɣ
+ key <AC11> { [ apostrophe, quotedbl, 0x01000301, 0x01000301 ] }; // combining acute
+ key <AB01> { [ z, Z, 0x01000292, 0x010001B7 ] }; // ʒ, Ʒ
+ key <AB02> { [ 0x01000269, 0x01000196, x, X ] }; // ɩ, Ɩ
+ key <AB03> { [ c, C, 0x010000E7, 0x010000C7 ] }; // ç, Ç
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/gn b/xorg-server/xkeyboard-config/symbols/gn
index fb47bfe4b..3a693afd6 100644
--- a/xorg-server/xkeyboard-config/symbols/gn
+++ b/xorg-server/xkeyboard-config/symbols/gn
@@ -1,63 +1,61 @@
-// $XKeyboardConfig$
-
-// based on us_intl keyboard map file and a Sinhala keyboard map
-// version 0.3
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- name[Group1]="Guinea";
-
- key <AE01> { [0x010007F1, 0x010007C1 ] };
- key <AE02> { [0x010007EB, 0x010007C2 ] };
- key <AE03> { [0x010007F5, 0x010007C3, numbersign, sterling ] };
- key <AE04> { [0x010007F4, 0x010007C4, 0x01002E1C, dollar ] };
- key <AE05> { [ parenleft, 0x010007C5, 0x01002E1D ] };
- key <AE06> { [ minus, 0x010007C6, bar ] };
- key <AE07> { [0x010007EC, 0x010007C7, grave ] };
- key <AE08> { [0x010007FA, 0x010007C8, backslash ] };
- key <AE09> { [0x010007ED, 0x010007C9, asciicircum, plusminus ] };
- key <AE10> { [0x010007EE, 0x010007C0, at, degree ] };
- key <AE11> { [parenright ] };
- key <AE12> { [ equal, plus, braceright ] };
-
- key <AD01> { [0x010007CA ] };
- key <AD02> { [0x010007E0, less ] };
- key <AD03> { [0x010007CD,0x010007CB ] };
- key <AD04> { [0x010007D9,0x010007DA ] };
- key <AD05> { [0x010007D5 ] };
- key <AD06> { [0x010007E6,0x010007E7 ] };
- key <AD07> { [0x010007CE,0x010007F6 ] };
- key <AD08> { [0x010007CC ] };
- key <AD09> { [0x010007D0,0x010007CF ] };
- key <AD10> { [0x010007D4 ] };
- key <AD11> { [0x010007F3 ] };
- key <AD12> { [ dollar, sterling, currency ] };
-
- key <AC01> { [0x010007EB ] };
- key <AC02> { [0x010007DB ] };
- key <AC03> { [0x010007D8 ] };
- key <AC04> { [0x010007DD ] };
- key <AC05> { [0x010007DC,0x010007F7 ] };
- key <AC06> { [0x010007E4 ] };
- key <AC07> { [0x010007D6,0x010007E8 ] };
- key <AC08> { [0x010007DE ] };
- key <AC09> { [0x010007DF,0x010007EA ] };
- key <AC10> { [0x010007E1 ] };
- key <AC11> { [0x010007EF, 0x010007F8, percent ] };
- key <TLDE> { [0x010007EC, asciitilde, notsign ] };
-
- key <BKSL> { [0x010007D1, asterisk ] };
- key <AB01> { [0x010007E5 ] };
- key <AB02> { [0x0100060C ] };
- key <AB03> { [0x010007D7,0x010007E9 ] };
- key <AB04> { [0x010007E2 ] };
- key <AB05> { [0x010007D3 ] };
- key <AB06> { [0x010007E3,0x010007D2 ] };
- key <AB07> { [0x010007F8,0x0100061F ] };
- key <AB08> { [0x0100061B ] };
- key <AB09> { [0x0100060C, slash ] };
- key <AB10> { [0x010007F9] };
-
- include "level3(ralt_switch)"
-};
+// based on us_intl keyboard map file and a Sinhala keyboard map
+// version 0.3
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ name[Group1]="Guinea";
+
+ key <AE01> { [0x010007F1, 0x010007C1 ] };
+ key <AE02> { [0x010007EB, 0x010007C2 ] };
+ key <AE03> { [0x010007F5, 0x010007C3, numbersign, sterling ] };
+ key <AE04> { [0x010007F4, 0x010007C4, 0x01002E1C, dollar ] };
+ key <AE05> { [ parenleft, 0x010007C5, 0x01002E1D ] };
+ key <AE06> { [ minus, 0x010007C6, bar ] };
+ key <AE07> { [0x010007EC, 0x010007C7, grave ] };
+ key <AE08> { [0x010007FA, 0x010007C8, backslash ] };
+ key <AE09> { [0x010007ED, 0x010007C9, asciicircum, plusminus ] };
+ key <AE10> { [0x010007EE, 0x010007C0, at, degree ] };
+ key <AE11> { [parenright ] };
+ key <AE12> { [ equal, plus, braceright ] };
+
+ key <AD01> { [0x010007CA ] };
+ key <AD02> { [0x010007E0, less ] };
+ key <AD03> { [0x010007CD,0x010007CB ] };
+ key <AD04> { [0x010007D9,0x010007DA ] };
+ key <AD05> { [0x010007D5 ] };
+ key <AD06> { [0x010007E6,0x010007E7 ] };
+ key <AD07> { [0x010007CE,0x010007F6 ] };
+ key <AD08> { [0x010007CC ] };
+ key <AD09> { [0x010007D0,0x010007CF ] };
+ key <AD10> { [0x010007D4 ] };
+ key <AD11> { [0x010007F3 ] };
+ key <AD12> { [ dollar, sterling, currency ] };
+
+ key <AC01> { [0x010007EB ] };
+ key <AC02> { [0x010007DB ] };
+ key <AC03> { [0x010007D8 ] };
+ key <AC04> { [0x010007DD ] };
+ key <AC05> { [0x010007DC,0x010007F7 ] };
+ key <AC06> { [0x010007E4 ] };
+ key <AC07> { [0x010007D6,0x010007E8 ] };
+ key <AC08> { [0x010007DE ] };
+ key <AC09> { [0x010007DF,0x010007EA ] };
+ key <AC10> { [0x010007E1 ] };
+ key <AC11> { [0x010007EF, 0x010007F8, percent ] };
+ key <TLDE> { [0x010007EC, asciitilde, notsign ] };
+
+ key <BKSL> { [0x010007D1, asterisk ] };
+ key <AB01> { [0x010007E5 ] };
+ key <AB02> { [0x0100060C ] };
+ key <AB03> { [0x010007D7,0x010007E9 ] };
+ key <AB04> { [0x010007E2 ] };
+ key <AB05> { [0x010007D3 ] };
+ key <AB06> { [0x010007E3,0x010007D2 ] };
+ key <AB07> { [0x010007F8,0x0100061F ] };
+ key <AB08> { [0x0100061B ] };
+ key <AB09> { [0x0100060C, slash ] };
+ key <AB10> { [0x010007F9] };
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/gr b/xorg-server/xkeyboard-config/symbols/gr
index ca1a7b789..5fe302200 100644
--- a/xorg-server/xkeyboard-config/symbols/gr
+++ b/xorg-server/xkeyboard-config/symbols/gr
@@ -1,5 +1,3 @@
-// $XKeyboardConfig$
-
// Hellenic keyboard map for X.org
//
// Original version:
diff --git a/xorg-server/xkeyboard-config/symbols/group b/xorg-server/xkeyboard-config/symbols/group
index f0b6bfb0d..e85cd6778 100644
--- a/xorg-server/xkeyboard-config/symbols/group
+++ b/xorg-server/xkeyboard-config/symbols/group
@@ -1,9 +1,6 @@
-// $XKeyboardConfig$
-// $Xorg: group,v 1.3 2000/08/17 19:54:43 cpqbld Exp $
// using the group(switch) map, the right alt key temporarily chooses
// the second keyboard group (until it is released).
//
-// $XFree86: xc/programs/xkbcomp/symbols/group,v 3.9 2003/12/30 13:26:25 pascal Exp $
partial modifier_keys
xkb_symbols "switch" {
key <RALT> {
diff --git a/xorg-server/xkeyboard-config/symbols/hp_vndr/us b/xorg-server/xkeyboard-config/symbols/hp_vndr/us
index 18ce8aeae..7e07198d6 100644
--- a/xorg-server/xkeyboard-config/symbols/hp_vndr/us
+++ b/xorg-server/xkeyboard-config/symbols/hp_vndr/us
@@ -1,106 +1,104 @@
-// $Xorg: us,v 1.4 2001/02/09 02:05:53 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-// US/ASCII layout for a HP non-PC keyboard
-xkb_symbols "hil" {
- include "us(basic)"
-
- // A few alphanumeric keys are different
- key <TLDE> { [ grave, asciitilde ]};
- key <RTSH> { [ Shift_R ]};
- key <LALT> { [ Meta_L ]};
- key <RALT> { [ Meta_R ]};
- // End alphanumeric section
-
- // Begin "Function" section
- key <BRK> { [ Break ]};
- key <STOP> { [ Cancel ]};
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <MENU> { [ Menu ] };
- key <SYST> { [ hpSystem ]};
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <CLRL> { [ hpClearLine ]};
- key <CLR> { [ Clear ]};
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ F11 ] };
- key <FK12> { [ F12 ] };
- // End "Function" section
-
- // Begin "Editing" section
- key <PRSC> { [ Execute, Print ]};
- key <INSL> { [ hpInsertLine ]};
- key <DELL> { [ hpDeleteLine ]};
- key <INSC> { [ hpInsertChar ]};
- key <DELC> { [ hpDeleteChar ]};
- key <HOME> { [ Home ] };
- key <PGUP> { [ Prior ] };
- key <PGDN> { [ Next ] };
- key <SELE> { [ Select ] };
- key <LEFT> { [ Left ] };
- key <DOWN> { [ Down ] };
- key <UP> { [ Up ] };
- key <RGHT> { [ Right ]};
-
- // End "Editing" section, begin "Keypad"
- key <KPMU> { [ KP_Multiply ]};
- key <KPDV> { [ KP_Divide ]};
- key <KPAD> { [ KP_Add ]};
- key <KPSU> { [ KP_Subtract ]};
-
- key <KP7> { [ KP_7 ] };
- key <KP8> { [ KP_8 ] };
- key <KP9> { [ KP_9 ] };
- key <KPEN> { [ KP_Enter ]};
-
- key <KP4> { [ KP_4 ] };
- key <KP5> { [ KP_5 ] };
- key <KP6> { [ KP_6 ] };
- key <KPSP> { [ KP_Separator ]};
-
- key <KP1> { [ KP_1 ] };
- key <KP2> { [ KP_2 ] };
- key <KP3> { [ KP_3 ] };
- key <KPTB> { [ KP_Tab ]};
-
- key <KP0> { [ KP_0 ] };
- key <KPDL> { [ KP_Decimal ] };
- // End "Keypad" section
-
-
- // begin modifier mappings
- modifier_map Shift { Shift_R };
- modifier_map Mod1 { Meta_L, Meta_R };
- modifier_map Mod2 { Alt_L };
- modifier_map Mod3 { Mode_switch };
-};
-
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+// US/ASCII layout for a HP non-PC keyboard
+xkb_symbols "hil" {
+ include "us(basic)"
+
+ // A few alphanumeric keys are different
+ key <TLDE> { [ grave, asciitilde ]};
+ key <RTSH> { [ Shift_R ]};
+ key <LALT> { [ Meta_L ]};
+ key <RALT> { [ Meta_R ]};
+ // End alphanumeric section
+
+ // Begin "Function" section
+ key <BRK> { [ Break ]};
+ key <STOP> { [ Cancel ]};
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <MENU> { [ Menu ] };
+ key <SYST> { [ hpSystem ]};
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <CLRL> { [ hpClearLine ]};
+ key <CLR> { [ Clear ]};
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ F11 ] };
+ key <FK12> { [ F12 ] };
+ // End "Function" section
+
+ // Begin "Editing" section
+ key <PRSC> { [ Execute, Print ]};
+ key <INSL> { [ hpInsertLine ]};
+ key <DELL> { [ hpDeleteLine ]};
+ key <INSC> { [ hpInsertChar ]};
+ key <DELC> { [ hpDeleteChar ]};
+ key <HOME> { [ Home ] };
+ key <PGUP> { [ Prior ] };
+ key <PGDN> { [ Next ] };
+ key <SELE> { [ Select ] };
+ key <LEFT> { [ Left ] };
+ key <DOWN> { [ Down ] };
+ key <UP> { [ Up ] };
+ key <RGHT> { [ Right ]};
+
+ // End "Editing" section, begin "Keypad"
+ key <KPMU> { [ KP_Multiply ]};
+ key <KPDV> { [ KP_Divide ]};
+ key <KPAD> { [ KP_Add ]};
+ key <KPSU> { [ KP_Subtract ]};
+
+ key <KP7> { [ KP_7 ] };
+ key <KP8> { [ KP_8 ] };
+ key <KP9> { [ KP_9 ] };
+ key <KPEN> { [ KP_Enter ]};
+
+ key <KP4> { [ KP_4 ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_6 ] };
+ key <KPSP> { [ KP_Separator ]};
+
+ key <KP1> { [ KP_1 ] };
+ key <KP2> { [ KP_2 ] };
+ key <KP3> { [ KP_3 ] };
+ key <KPTB> { [ KP_Tab ]};
+
+ key <KP0> { [ KP_0 ] };
+ key <KPDL> { [ KP_Decimal ] };
+ // End "Keypad" section
+
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_R };
+ modifier_map Mod1 { Meta_L, Meta_R };
+ modifier_map Mod2 { Alt_L };
+ modifier_map Mod3 { Mode_switch };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/hr b/xorg-server/xkeyboard-config/symbols/hr
index 61c6eae18..71b23b607 100644
--- a/xorg-server/xkeyboard-config/symbols/hr
+++ b/xorg-server/xkeyboard-config/symbols/hr
@@ -1,76 +1,73 @@
-// $XKeyboardConfig$
-//
-
-default partial alphanumeric_keys
-xkb_symbols "basic" {
-
- name[Group1]="Croatia";
-
- include "rs(latin)"
-
- // Redefine these keys to match XFree86 Croatian layout
- key <AE01> { [ 1, exclam, asciitilde, dead_tilde ] };
- key <AE03> { [ 3, numbersign, asciicircum, dead_circumflex ] };
- key <AE05> { [ 5, percent, degree, dead_abovering ] };
- key <AE07> { [ 7, slash, grave, dead_grave ] };
- key <AB10> { [ minus, underscore, dead_belowdot, dead_abovedot ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "us" {
-
- name[Group1]= "Croatia - US keyboard with Croatian letters";
-
- include "us"
-
- key <AD01> { [ any, any, backslash ] };
- key <AD02> { [ any, any, bar ] };
- key <AD03> { [ any, any, EuroSign ] };
- key <AD06> { [ any, any, z, Z ] };
- key <AD11> { [ any, any, scaron, Scaron ] };
- key <AD12> { [ any, any, dstroke, Dstroke ] };
- key <AC04> { [ any, any, bracketleft ] };
- key <AC05> { [ any, any, bracketright ] };
- key <AC08> { [ any, any, lstroke ] };
- key <AC09> { [ any, any, Lstroke ] };
- key <AC10> { [ any, any, ccaron, Ccaron ] };
- key <AC11> { [ any, any, cacute, Cacute ] };
- key <LSGT> { [ any, any, bar ] };
- key <AB01> { [ any, any, y, Y ] };
- key <AB04> { [ any, any, at ] };
- key <AB05> { [ any, any, braceleft ] };
- key <AB06> { [ any, any, braceright ] };
- key <AB07> { [ any, any, section ] };
- key <AB08> { [ any, any, semicolon ] };
- key <AB09> { [ any, any, colon ] };
- key <AB10> { [ any, any, minus, underscore ] };
- key <BKSL> { [ any, any, zcaron, Zcaron ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "alternatequotes" {
-
- name[Group1]= "Croatia - Use guillemets for quotes";
-
- include "rs(latinalternatequotes)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "unicode" {
-
- name[Group1]= "Croatia - Use Croatian digraphs";
-
- include "rs(latinunicode)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "unicodeus" {
-
- name[Group1]= "Croatia - US keyboard with Croatian digraphs";
-
- include "rs(latinunicodeyz)"
-};
+default partial alphanumeric_keys
+xkb_symbols "basic" {
+
+ name[Group1]="Croatia";
+
+ include "rs(latin)"
+
+ // Redefine these keys to match XFree86 Croatian layout
+ key <AE01> { [ 1, exclam, asciitilde, dead_tilde ] };
+ key <AE03> { [ 3, numbersign, asciicircum, dead_circumflex ] };
+ key <AE05> { [ 5, percent, degree, dead_abovering ] };
+ key <AE07> { [ 7, slash, grave, dead_grave ] };
+ key <AB10> { [ minus, underscore, dead_belowdot, dead_abovedot ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "us" {
+
+ name[Group1]= "Croatia - US keyboard with Croatian letters";
+
+ include "us"
+
+ key <AD01> { [ any, any, backslash ] };
+ key <AD02> { [ any, any, bar ] };
+ key <AD03> { [ any, any, EuroSign ] };
+ key <AD06> { [ any, any, z, Z ] };
+ key <AD11> { [ any, any, scaron, Scaron ] };
+ key <AD12> { [ any, any, dstroke, Dstroke ] };
+ key <AC04> { [ any, any, bracketleft ] };
+ key <AC05> { [ any, any, bracketright ] };
+ key <AC08> { [ any, any, lstroke ] };
+ key <AC09> { [ any, any, Lstroke ] };
+ key <AC10> { [ any, any, ccaron, Ccaron ] };
+ key <AC11> { [ any, any, cacute, Cacute ] };
+ key <LSGT> { [ any, any, bar ] };
+ key <AB01> { [ any, any, y, Y ] };
+ key <AB04> { [ any, any, at ] };
+ key <AB05> { [ any, any, braceleft ] };
+ key <AB06> { [ any, any, braceright ] };
+ key <AB07> { [ any, any, section ] };
+ key <AB08> { [ any, any, semicolon ] };
+ key <AB09> { [ any, any, colon ] };
+ key <AB10> { [ any, any, minus, underscore ] };
+ key <BKSL> { [ any, any, zcaron, Zcaron ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "alternatequotes" {
+
+ name[Group1]= "Croatia - Use guillemets for quotes";
+
+ include "rs(latinalternatequotes)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "unicode" {
+
+ name[Group1]= "Croatia - Use Croatian digraphs";
+
+ include "rs(latinunicode)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "unicodeus" {
+
+ name[Group1]= "Croatia - US keyboard with Croatian digraphs";
+
+ include "rs(latinunicodeyz)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/hu b/xorg-server/xkeyboard-config/symbols/hu
index 9e97740fa..4595f1d22 100644
--- a/xorg-server/xkeyboard-config/symbols/hu
+++ b/xorg-server/xkeyboard-config/symbols/hu
@@ -2,7 +2,6 @@
//
// Based on old style 'xkb/symbols/hu"
//
-// $XKeyboardConfig$
// (C) 2002-2004 Soós Péter <sp@osb.hu>
// (C) 2010 Andras Timar <timar@fsf.hu>
//
diff --git a/xorg-server/xkeyboard-config/symbols/ie b/xorg-server/xkeyboard-config/symbols/ie
index 22d857247..ce9a0e84d 100644
--- a/xorg-server/xkeyboard-config/symbols/ie
+++ b/xorg-server/xkeyboard-config/symbols/ie
@@ -1,411 +1,407 @@
-// $XKeyboardConfig$
-
-// $XFree86: xc/programs/xkbcomp/symbols/ie,v 1.3 2002/12/31 02:07:04 dawes Exp $
-
-// Irish keyboard map
-
-// Support for Irish (old and new orthography) and English
-// Seamus O Ciardhuain <seoc@cnds.ucd.ie> (19 December 2002)
-
-// The general idea is to provide the characters in ISO 8859-1,
-// ISO 8859-15, ISO 8859-14, CP1252 and "Extended Latin-8".
-// However, not all are accessible directly because there aren't
-// enough keys; some need deadkeys to access them, others the
-// "Multi_key" compose sequences.
-
-// Designed to be similar to the layouts used on Windows
-// and the Macintosh.
-
-// Everything is in Group 1 to be compatible with the
-// multi-layout keyboard support in XFree86 4.3.
-
-// The basic layout is a modern keyboard, but dotted consonants are
-// accessible using a deadkey (AltGr+H or AltGr+W).
-// If a proper Clo Gaelach keyboard is needed, then use the layout
-// defined below as ie(CloGaelach), which gives dotted consonants
-// without use of a deadkey.
-
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Modern keyboard for Irish and English
- // - acute-accented vowels as AltGr+vowel and AltGr+Shift+vowel
- // - euro currency sign as AltGr+4
- // - Comhartha Agus (Tironian Sign Et) as AltGr+Shift+7
- // - non-breaking space as AltGr+Space and AltGr+Shift+Space
- // - matches hardware (keys and engraved symbols) for Irish keyboards
-
- name[Group1] = "Ireland";
-
- //
- // Numeric row `1234567890-=
- //
- key <TLDE> { [ grave, notsign, brokenbar, NoSymbol ] };
- key <AE01> { [ 1, exclam, exclamdown, onesuperior ] };
- key <AE02> { [ 2, quotedbl, trademark, twosuperior ] };
- key <AE03> { [ 3, sterling, copyright, threesuperior ] };
- key <AE04> { [ 4, dollar, EuroSign, cent ] };
- key <AE05> { [ 5, percent, section, dagger ] };
- key <AE06> { [ 6, asciicircum, dead_circumflex, 0x1002030 ] };
- // per thousand
- key <AE07> { [ 7, ampersand, paragraph, 0x100204A ] };
- // Tironian Et
- key <AE08> { [ 8, asterisk, dead_diaeresis, enfilledcircbullet ] };
- key <AE09> { [ 9, parenleft, ordfeminine, periodcentered ] };
- key <AE10> { [ 0, parenright, masculine, degree ] };
- key <AE11> { [ minus, underscore, endash, emdash ] };
- key <AE12> { [ equal, plus, notequal, plusminus ] };
-
- //
- // QWERTYUIOP[]
- //
- key <AD01> { [ q, Q, oe, OE ] };
- key <AD02> { [ w, W, dead_abovedot, dead_abovedot ] };
- key <AD03> { [ e, E, eacute, Eacute ] };
- key <AD04> { [ r, R, registered, 0x1002030 ] };
- // per thousand
- key <AD05> { [ t, T, thorn, THORN ] };
- key <AD06> { [ y, Y, yen, mu ] };
- key <AD07> { [ u, U, uacute, Uacute ] };
- key <AD08> { [ i, I, iacute, Iacute ] };
- key <AD09> { [ o, O, oacute, Oacute ] };
- key <AD10> { [ p, P, singlelowquotemark, NoSymbol ] };
- key <AD11> { [ bracketleft, braceleft, leftdoublequotemark, rightdoublequotemark ] };
- key <AD12> { [ bracketright, braceright, leftsinglequotemark, rightsinglequotemark ] };
-
- //
- // ASDFGHJKL;'#
- //
- key <AC01> { [ a, A, aacute, Aacute ] };
- key <AC02> { [ s, S, ssharp, NoSymbol ] };
- key <AC03> { [ d, D, eth, ETH ] };
- key <AC04> { [ f, F, 0x1000192, NoSymbol ] };
- // f with hook
- key <AC05> { [ g, G, copyright, NoSymbol ] };
- key <AC06> { [ h, H, dead_abovedot, dead_abovedot ] };
- key <AC07> { [ j, J, idotless, onequarter ] };
- key <AC08> { [ k, K, dead_abovering, onehalf ] };
- key <AC09> { [ l, L, acute, threequarters ] };
- key <AC10> { [ semicolon, colon, ellipsis, doubledagger ] };
- key <AC11> { [ apostrophe, at, ae, AE ] };
- key <BKSL> { [ numbersign, asciitilde, guillemotleft, guillemotright ] };
-
-
- //
- // \ZXCVBNM,./
- //
- key <LSGT> { [ backslash, bar, dead_grave, dead_acute ] };
- key <AB01> { [ z, Z, leftanglebracket, rightanglebracket ] };
- key <AB02> { [ x, X, multiply, approximate ] };
- key <AB03> { [ c, C, dead_cedilla, cedilla ] };
- key <AB04> { [ v, V, dead_caron, NoSymbol ] };
- key <AB05> { [ b, B, diaeresis, NoSymbol ] };
- key <AB06> { [ n, N, dead_tilde, NoSymbol ] };
- key <AB07> { [ m, M, macron, NoSymbol ] };
- key <AB08> { [ comma, less, lessthanequal, doublelowquotemark ] };
- key <AB09> { [ period, greater, greaterthanequal, singlelowquotemark ] };
- key <AB10> { [ slash, question, division, questiondown ] };
-
-
- key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
-
- include "level3(ralt_switch)"
-
- // NB: putting Shift+<RALT> as Multi_key gives odd behaviour since the
- // order of pressing keys affects the result.
-
- include "compose(rwin)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "CloGaelach" {
-
- // Adds support for Clo Gaelach (old orthography for Irish).
- // Changes from "basic":
- // - dotted consonants as AltGr+consonant or AltGr+Shift+consonant (TPSDFGCBM)
- // - long lowercase r as AltGr+R
- // - long lowercase s as AltGr+Z
- // - long lowercase s dotted as AltGr+Shift+Z
- // - some symbols moved around to retain them
- // - several characters unlikely to be used are lost
- // The long letters are needed only where the font provides
- // both the long and short forms as different glyphs.
-
- include "ie(basic)"
-
- name[Group1] = "Ireland - CloGaelach";
-
- key <TLDE> { [ grave, notsign, brokenbar, ssharp ] };
- key <AD04> { [ r, R, 0x100027C, registered ] };
- // long r
- key <AD05> { [ t, T, tabovedot, Tabovedot ] };
- key <AD10> { [ p, P, pabovedot, Pabovedot ] };
-
- key <AC02> { [ s, S, sabovedot, Sabovedot ] };
- key <AC03> { [ d, D, dabovedot, Dabovedot ] };
- key <AC04> { [ f, F, fabovedot, Fabovedot ] };
- key <AC05> { [ g, G, gabovedot, Gabovedot ] };
-
- key <AB01> { [ z, Z, 0x100017F, 0x1001E9B ] };
- // long s, long s dot
- key <AB03> { [ c, C, cabovedot, Cabovedot ] };
- key <AB05> { [ b, B, babovedot, Babovedot ] };
- key <AB07> { [ m, M, mabovedot, Mabovedot ] };
-
- key <LSGT> { [ backslash, bar, dead_grave, dead_cedilla ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "UnicodeExpert" {
-
-// This should eventually be a "Unicode Expert" layout like the Mac one.
-
- name[Group1] = "Ireland - UnicodeExpert";
-
- //
- // Numeric row `1234567890-=
- //
- key <TLDE> { [ grave, notsign, 0x10000A6, 0x10000A6 ] };
- // broken bar
- key <AE01> { [ 1, exclam, NoSymbol, NoSymbol ] };
- key <AE02> { [ 2, quotedbl, dead_doubleacute, dead_doubleacute ] };
- key <AE03> { [ 3, sterling, NoSymbol, NoSymbol ] };
- key <AE04> { [ 4, dollar, EuroSign, EuroSign ] };
- key <AE05> { [ 5, percent, NoSymbol, NoSymbol ] };
- key <AE06> { [ 6, asciicircum, dead_circumflex, dead_circumflex ] };
- key <AE07> { [ 7, ampersand, 0x100204A, 0x100204A ] };
- // Tironian Et
- key <AE08> { [ 8, asterisk, dead_abovering, dead_abovering ] };
- key <AE09> { [ 9, parenleft, dead_breve, dead_breve ] };
- key <AE10> { [ 0, parenright, dead_ogonek, dead_ogonek ] };
- key <AE11> { [ minus, underscore, dead_macron, dead_macron ] };
- key <AE12> { [ equal, plus, NoSymbol, NoSymbol ] };
-
- //
- // QWERTYUIOP[]
- //
- key <AD01> { [ q, Q, NoSymbol, NoSymbol ] };
- key <AD02> { [ w, W, NoSymbol, NoSymbol ] };
- key <AD03> { [ e, E, eacute, Eacute ] };
- key <AD04> { [ r, R, 0x100027C, 0x100027C ] };
- // long r
- key <AD05> { [ t, T, NoSymbol, NoSymbol ] };
- key <AD06> { [ y, Y, NoSymbol, NoSymbol ] };
- key <AD07> { [ u, U, uacute, Uacute ] };
- key <AD08> { [ i, I, iacute, Iacute ] };
- key <AD09> { [ o, O, oacute, Oacute ] };
- key <AD10> { [ p, P, NoSymbol, NoSymbol ] };
- key <AD11> { [ bracketleft, braceleft, dead_hook, dead_hook ] };
- key <AD12> { [ bracketright, braceright, dead_horn, dead_horn ] };
-
- //
- // ASDFGHJKL;'#
- //
- key <AC01> { [ a, A, aacute, Aacute ] };
- key <AC02> { [ s, S, NoSymbol, NoSymbol ] };
- key <AC03> { [ d, D, NoSymbol, NoSymbol ] };
- key <AC04> { [ f, F, NoSymbol, NoSymbol ] };
- key <AC05> { [ g, G, NoSymbol, NoSymbol ] };
- key <AC06> { [ h, H, dead_abovedot, dead_abovedot ] };
- key <AC07> { [ j, J, NoSymbol, NoSymbol ] };
- key <AC08> { [ k, K, NoSymbol, NoSymbol ] };
- key <AC09> { [ l, L, NoSymbol, NoSymbol ] };
- key <AC10> { [ semicolon, colon, dead_diaeresis, dead_diaeresis ] };
- key <AC11> { [ apostrophe, at, dead_acute, dead_acute ] };
- key <BKSL> { [ numbersign, asciitilde, dead_tilde, dead_tilde ] };
-
- //
- // \ZXCVBNM,./
- //
- key <LSGT> { [ backslash, bar, dead_grave, dead_grave ] };
- key <AB01> { [ z, Z, 0x100017F, 0x1001E9B ] };
- // long s, long s dot
- key <AB02> { [ x, X, NoSymbol, NoSymbol ] };
- key <AB03> { [ c, C, NoSymbol, NoSymbol ] };
- key <AB04> { [ v, V, dead_caron, dead_caron ] };
- key <AB05> { [ b, B, NoSymbol, NoSymbol ] };
- key <AB06> { [ n, N, NoSymbol, NoSymbol ] };
- key <AB07> { [ m, M, NoSymbol, NoSymbol ] };
- key <AB08> { [ comma, less, dead_cedilla, dead_cedilla ] };
- key <AB09> { [ period, greater, dead_abovedot, dead_abovedot ] };
- key <AB10> { [ slash, question, dead_belowdot, dead_belowdot ] };
-
- key <SPCE> { [ space, space, space, nobreakspace ] };
-
- include "level3(ralt_switch)"
-
- include "compose(rwin)"
-};
-
-//
-// Ogham keyboard map for XFree86
-//
-// Seamus O Ciardhuain <seoc@cnds.ucd.ie> (17 December 2002)
-//
-// Ogham keyboard layout as recommended in I.S. 434:1999.
-// Suitable for multi-layout xkbcomp.
-// Character names are given as in the Unicode standard,
-// range U+1680 to U+169F.
-
-partial alphanumeric_keys
-xkb_symbols "ogam" {
-
- name[Group1] = "Ireland - Ogham";
-
- key.type[Group1] = "ONE_LEVEL";
-
- key <LSGT> { type[Group1]="TWO_LEVEL",
- [ 0x100169B, 0x100169C ] };
- // OGHAM FEATHER MARK, OGHAM REVERSED FEATHER MARK
-
- key <BKSL> { [ 0x1001680 ] }; // OGHAM SPACE MARK
-
- key <TLDE> { [ 0x100169C ] }; // OGHAM REVERSED FEATHER MARK
-
- key <SPCE> { [ space ] };
-
- //
- // Top Row QWERTYUIOP
- //
- key <AD01> { [ 0x100168A ] }; // OGHAM LETTER CEIRT
- key <AD02> { [ 0x1001695 ] }; // OGHAM LETTER EABHADH
- key <AD03> { [ 0x1001693 ] }; // OGHAM LETTER EADHADH
- key <AD04> { [ 0x100168F ] }; // OGHAM LETTER RUIS
- key <AD05> { [ 0x1001688 ] }; // OGHAM LETTER TINNE
- key <AD06> { [ 0x1001698 ] }; // OGHAM LETTER IFIN
- key <AD07> { [ 0x1001692 ] }; // OGHAM LETTER UR
- key <AD08> { [ 0x1001694 ] }; // OGHAM LETTER IODHADH
- key <AD09> { [ 0x1001691 ] }; // OGHAM LETTER ONN
- key <AD10> { [ 0x100169A ] }; // OGHAM LETTER PEITH
-
- //
- // Middle Row ASDFGHJKL
- //
- key <AC01> { [ 0x1001690 ] }; // OGHAM LETTER AILM
- key <AC02> { [ 0x1001684 ] }; // OGHAM LETTER SAIL
- key <AC03> { [ 0x1001687 ] }; // OGHAM LETTER DAIR
- key <AC04> { [ 0x1001683 ] }; // OGHAM LETTER FEARN
- key <AC05> { [ 0x100168C ] }; // OGHAM LETTER GORT
- key <AC06> { [ 0x1001686 ] }; // OGHAM LETTER UATH
- key <AC07> { [ 0x1001697 ] }; // OGHAM LETTER UILLEANN
- key <AC08> { [ 0x1001696 ] }; // OGHAM LETTER OR
- key <AC09> { [ 0x1001682 ] }; // OGHAM LETTER LUIS
-
- //
- // Bottom Row ZXCVBNM
- //
- key <AB01> { [ 0x100168E ] }; // OGHAM LETTER STRAIF
- key <AB02> { [ 0x1001699 ] }; // OGHAM LETTER EAMHANCHOLL
- key <AB03> { [ 0x1001689 ] }; // OGHAM LETTER COLL
- key <AB04> { [ 0x100168D ] }; // OGHAM LETTER NGEADAL
- key <AB05> { [ 0x1001681 ] }; // OGHAM LETTER BEITH
- key <AB06> { [ 0x1001685 ] }; // OGHAM LETTER NION
- key <AB07> { [ 0x100168B ] }; // OGHAM LETTER MUIN
-
- // As an extension because <BKSL> and <LSGT> may not be
- // available or sensible. These are also a bit more
- // intuitive on a standard Irish keyboard.
- key <AB08> { [ 0x100169C ] }; // OGHAM REVERSED FEATHER MARK
- key <AB09> { [ 0x100169B ] }; // OGHAM FEATHER MARK
- key <AB10> { [ 0x1001680 ] }; // OGHAM SPACE MARK
-
- include "compose(rwin)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "ogam_is434" {
-
- // This has the full layout of IS434 with an Irish QWERTY keyboard,
- // and the Ogham characters accessed when CAPS LOCK is on.
-
- name[Group1] = "Ireland - Ogham IS434";
-
- key.type[Group1] = "THREE_LEVEL";
-
- key <LSGT> { type[Group1] = "FOUR_LEVEL_ALPHABETIC",
- [ backslash, bar, 0x100169B, 0x100169C ] };
- // OGHAM FEATHER MARK, OGHAM REVERSED FEATHER MARK
-
- key <BKSL> { [ numbersign, asciitilde, 0x1001680 ] }; // OGHAM SPACE MARK
- key <TLDE> { [ grave, notsign, 0x100169C ] }; // OGHAM REVERSED FEATHER MARK
- key <SPCE> { [ space, space, space ] };
-
- //
- // Numeric row
- //
- key <AE01> { type[Group1]="TWO_LEVEL", [ 1, exclam ] };
- key <AE02> { type[Group1]="TWO_LEVEL", [ 2, quotedbl ] };
- key <AE03> { type[Group1]="TWO_LEVEL", [ 3, sterling ] };
- key <AE04> { [ 4, dollar, EuroSign ] };
- key <AE05> { type[Group1]="TWO_LEVEL", [ 5, percent ] };
- key <AE06> { type[Group1]="TWO_LEVEL", [ 6, asciicircum ] };
- key <AE07> { [ 7, ampersand, 0x100204A ] }; // Tironian Et
- key <AE08> { type[Group1]="TWO_LEVEL", [ 8, asterisk ] };
- key <AE09> { type[Group1]="TWO_LEVEL", [ 9, parenleft ] };
- key <AE10> { type[Group1]="TWO_LEVEL", [ 0, parenright ] };
- key <AE11> { type[Group1]="TWO_LEVEL", [ minus, underscore ] };
- key <AE12> { type[Group1]="TWO_LEVEL", [ equal, plus ] };
-
- //
- // Top Row QWERTYUIOP
- //
- key <AD01> { [ q, Q, 0x100168A ] }; // OGHAM LETTER CEIRT
- key <AD02> { [ w, W, 0x1001695 ] }; // OGHAM LETTER EABHADH
- key <AD03> { [ e, E, 0x1001693 ] }; // OGHAM LETTER EADHADH
- key <AD04> { [ r, R, 0x100168F ] }; // OGHAM LETTER RUIS
- key <AD05> { [ t, T, 0x1001688 ] }; // OGHAM LETTER TINNE
- key <AD06> { [ y, Y, 0x1001698 ] }; // OGHAM LETTER IFIN
- key <AD07> { [ u, U, 0x1001692 ] }; // OGHAM LETTER UR
- key <AD08> { [ i, I, 0x1001694 ] }; // OGHAM LETTER IODHADH
- key <AD09> { [ o, O, 0x1001691 ] }; // OGHAM LETTER ONN
- key <AD10> { [ p, P, 0x100169A ] }; // OGHAM LETTER PEITH
-
- //
- // Middle Row ASDFGHJKL
- //
- key <AC01> { [ a, A, 0x1001690 ] }; // OGHAM LETTER AILM
- key <AC02> { [ s, S, 0x1001684 ] }; // OGHAM LETTER SAIL
- key <AC03> { [ d, D, 0x1001687 ] }; // OGHAM LETTER DAIR
- key <AC04> { [ f, F, 0x1001683 ] }; // OGHAM LETTER FEARN
- key <AC05> { [ g, G, 0x100168C ] }; // OGHAM LETTER GORT
- key <AC06> { [ h, H, 0x1001686 ] }; // OGHAM LETTER UATH
- key <AC07> { [ j, J, 0x1001697 ] }; // OGHAM LETTER UILLEANN
- key <AC08> { [ k, K, 0x1001696 ] }; // OGHAM LETTER OR
- key <AC09> { [ l, L, 0x1001682 ] }; // OGHAM LETTER LUIS
-
- //
- // Bottom Row ZXCVBNM
- //
- key <AB01> { [ z, Z, 0x100168E ] }; // OGHAM LETTER STRAIF
- key <AB02> { [ x, X, 0x1001699 ] }; // OGHAM LETTER EAMHANCHOLL
- key <AB03> { [ c, C, 0x1001689 ] }; // OGHAM LETTER COLL
- key <AB04> { [ v, V, 0x100168D ] }; // OGHAM LETTER NGEADAL
- key <AB05> { [ b, B, 0x1001681 ] }; // OGHAM LETTER BEITH
- key <AB06> { [ n, N, 0x1001685 ] }; // OGHAM LETTER NION
- key <AB07> { [ m, M, 0x100168B ] }; // OGHAM LETTER MUIN
-
- // As an extension because <BKSL> and <LSGT> may not be
- // available or sensible. These are also a bit more
- // intuitive on a standard Irish keyboard.
- key <AB08> { [ comma, less, 0x100169C ] }; // OGHAM REVERSED FEATHER MARK
- key <AB09> { [ period, greater, 0x100169B ] }; // OGHAM FEATHER MARK
- key <AB10> { [ slash, question, 0x1001680 ] }; // OGHAM SPACE MARK
-
- // The standard says the Ogham characters should be accessed when
- // Caps Lock is down; not clear if this means it should lock but
- // seems logical.
-
- key <CAPS> { type[Group1] = "ONE_LEVEL", [ ISO_Level3_Lock ] };
-
- // Also allow access to Ogham characters using RALT for convenience
- include "level3(ralt_switch)"
-
- // Redefine Scroll Lock as locking shift in case that's needed.
- // Also overcomes annoying use of Scroll Lock LED inherited from
- // US symbols but not relevant here since we're not changing group.
- key <SCLK> {type[Group1] = "ONE_LEVEL", [ Shift_Lock ] };
- modifier_map Shift { Shift_Lock };
-
- include "compose(rwin)"
-};
+// Irish keyboard map
+
+// Support for Irish (old and new orthography) and English
+// Seamus O Ciardhuain <seoc@cnds.ucd.ie> (19 December 2002)
+
+// The general idea is to provide the characters in ISO 8859-1,
+// ISO 8859-15, ISO 8859-14, CP1252 and "Extended Latin-8".
+// However, not all are accessible directly because there aren't
+// enough keys; some need deadkeys to access them, others the
+// "Multi_key" compose sequences.
+
+// Designed to be similar to the layouts used on Windows
+// and the Macintosh.
+
+// Everything is in Group 1 to be compatible with the
+// multi-layout keyboard support in XFree86 4.3.
+
+// The basic layout is a modern keyboard, but dotted consonants are
+// accessible using a deadkey (AltGr+H or AltGr+W).
+// If a proper Clo Gaelach keyboard is needed, then use the layout
+// defined below as ie(CloGaelach), which gives dotted consonants
+// without use of a deadkey.
+
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Modern keyboard for Irish and English
+ // - acute-accented vowels as AltGr+vowel and AltGr+Shift+vowel
+ // - euro currency sign as AltGr+4
+ // - Comhartha Agus (Tironian Sign Et) as AltGr+Shift+7
+ // - non-breaking space as AltGr+Space and AltGr+Shift+Space
+ // - matches hardware (keys and engraved symbols) for Irish keyboards
+
+ name[Group1] = "Ireland";
+
+ //
+ // Numeric row `1234567890-=
+ //
+ key <TLDE> { [ grave, notsign, brokenbar, NoSymbol ] };
+ key <AE01> { [ 1, exclam, exclamdown, onesuperior ] };
+ key <AE02> { [ 2, quotedbl, trademark, twosuperior ] };
+ key <AE03> { [ 3, sterling, copyright, threesuperior ] };
+ key <AE04> { [ 4, dollar, EuroSign, cent ] };
+ key <AE05> { [ 5, percent, section, dagger ] };
+ key <AE06> { [ 6, asciicircum, dead_circumflex, 0x1002030 ] };
+ // per thousand
+ key <AE07> { [ 7, ampersand, paragraph, 0x100204A ] };
+ // Tironian Et
+ key <AE08> { [ 8, asterisk, dead_diaeresis, enfilledcircbullet ] };
+ key <AE09> { [ 9, parenleft, ordfeminine, periodcentered ] };
+ key <AE10> { [ 0, parenright, masculine, degree ] };
+ key <AE11> { [ minus, underscore, endash, emdash ] };
+ key <AE12> { [ equal, plus, notequal, plusminus ] };
+
+ //
+ // QWERTYUIOP[]
+ //
+ key <AD01> { [ q, Q, oe, OE ] };
+ key <AD02> { [ w, W, dead_abovedot, dead_abovedot ] };
+ key <AD03> { [ e, E, eacute, Eacute ] };
+ key <AD04> { [ r, R, registered, 0x1002030 ] };
+ // per thousand
+ key <AD05> { [ t, T, thorn, THORN ] };
+ key <AD06> { [ y, Y, yen, mu ] };
+ key <AD07> { [ u, U, uacute, Uacute ] };
+ key <AD08> { [ i, I, iacute, Iacute ] };
+ key <AD09> { [ o, O, oacute, Oacute ] };
+ key <AD10> { [ p, P, singlelowquotemark, NoSymbol ] };
+ key <AD11> { [ bracketleft, braceleft, leftdoublequotemark, rightdoublequotemark ] };
+ key <AD12> { [ bracketright, braceright, leftsinglequotemark, rightsinglequotemark ] };
+
+ //
+ // ASDFGHJKL;'#
+ //
+ key <AC01> { [ a, A, aacute, Aacute ] };
+ key <AC02> { [ s, S, ssharp, NoSymbol ] };
+ key <AC03> { [ d, D, eth, ETH ] };
+ key <AC04> { [ f, F, 0x1000192, NoSymbol ] };
+ // f with hook
+ key <AC05> { [ g, G, copyright, NoSymbol ] };
+ key <AC06> { [ h, H, dead_abovedot, dead_abovedot ] };
+ key <AC07> { [ j, J, idotless, onequarter ] };
+ key <AC08> { [ k, K, dead_abovering, onehalf ] };
+ key <AC09> { [ l, L, acute, threequarters ] };
+ key <AC10> { [ semicolon, colon, ellipsis, doubledagger ] };
+ key <AC11> { [ apostrophe, at, ae, AE ] };
+ key <BKSL> { [ numbersign, asciitilde, guillemotleft, guillemotright ] };
+
+
+ //
+ // \ZXCVBNM,./
+ //
+ key <LSGT> { [ backslash, bar, dead_grave, dead_acute ] };
+ key <AB01> { [ z, Z, leftanglebracket, rightanglebracket ] };
+ key <AB02> { [ x, X, multiply, approximate ] };
+ key <AB03> { [ c, C, dead_cedilla, cedilla ] };
+ key <AB04> { [ v, V, dead_caron, NoSymbol ] };
+ key <AB05> { [ b, B, diaeresis, NoSymbol ] };
+ key <AB06> { [ n, N, dead_tilde, NoSymbol ] };
+ key <AB07> { [ m, M, macron, NoSymbol ] };
+ key <AB08> { [ comma, less, lessthanequal, doublelowquotemark ] };
+ key <AB09> { [ period, greater, greaterthanequal, singlelowquotemark ] };
+ key <AB10> { [ slash, question, division, questiondown ] };
+
+
+ key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
+
+ include "level3(ralt_switch)"
+
+ // NB: putting Shift+<RALT> as Multi_key gives odd behaviour since the
+ // order of pressing keys affects the result.
+
+ include "compose(rwin)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "CloGaelach" {
+
+ // Adds support for Clo Gaelach (old orthography for Irish).
+ // Changes from "basic":
+ // - dotted consonants as AltGr+consonant or AltGr+Shift+consonant (TPSDFGCBM)
+ // - long lowercase r as AltGr+R
+ // - long lowercase s as AltGr+Z
+ // - long lowercase s dotted as AltGr+Shift+Z
+ // - some symbols moved around to retain them
+ // - several characters unlikely to be used are lost
+ // The long letters are needed only where the font provides
+ // both the long and short forms as different glyphs.
+
+ include "ie(basic)"
+
+ name[Group1] = "Ireland - CloGaelach";
+
+ key <TLDE> { [ grave, notsign, brokenbar, ssharp ] };
+ key <AD04> { [ r, R, 0x100027C, registered ] };
+ // long r
+ key <AD05> { [ t, T, tabovedot, Tabovedot ] };
+ key <AD10> { [ p, P, pabovedot, Pabovedot ] };
+
+ key <AC02> { [ s, S, sabovedot, Sabovedot ] };
+ key <AC03> { [ d, D, dabovedot, Dabovedot ] };
+ key <AC04> { [ f, F, fabovedot, Fabovedot ] };
+ key <AC05> { [ g, G, gabovedot, Gabovedot ] };
+
+ key <AB01> { [ z, Z, 0x100017F, 0x1001E9B ] };
+ // long s, long s dot
+ key <AB03> { [ c, C, cabovedot, Cabovedot ] };
+ key <AB05> { [ b, B, babovedot, Babovedot ] };
+ key <AB07> { [ m, M, mabovedot, Mabovedot ] };
+
+ key <LSGT> { [ backslash, bar, dead_grave, dead_cedilla ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "UnicodeExpert" {
+
+// This should eventually be a "Unicode Expert" layout like the Mac one.
+
+ name[Group1] = "Ireland - UnicodeExpert";
+
+ //
+ // Numeric row `1234567890-=
+ //
+ key <TLDE> { [ grave, notsign, 0x10000A6, 0x10000A6 ] };
+ // broken bar
+ key <AE01> { [ 1, exclam, NoSymbol, NoSymbol ] };
+ key <AE02> { [ 2, quotedbl, dead_doubleacute, dead_doubleacute ] };
+ key <AE03> { [ 3, sterling, NoSymbol, NoSymbol ] };
+ key <AE04> { [ 4, dollar, EuroSign, EuroSign ] };
+ key <AE05> { [ 5, percent, NoSymbol, NoSymbol ] };
+ key <AE06> { [ 6, asciicircum, dead_circumflex, dead_circumflex ] };
+ key <AE07> { [ 7, ampersand, 0x100204A, 0x100204A ] };
+ // Tironian Et
+ key <AE08> { [ 8, asterisk, dead_abovering, dead_abovering ] };
+ key <AE09> { [ 9, parenleft, dead_breve, dead_breve ] };
+ key <AE10> { [ 0, parenright, dead_ogonek, dead_ogonek ] };
+ key <AE11> { [ minus, underscore, dead_macron, dead_macron ] };
+ key <AE12> { [ equal, plus, NoSymbol, NoSymbol ] };
+
+ //
+ // QWERTYUIOP[]
+ //
+ key <AD01> { [ q, Q, NoSymbol, NoSymbol ] };
+ key <AD02> { [ w, W, NoSymbol, NoSymbol ] };
+ key <AD03> { [ e, E, eacute, Eacute ] };
+ key <AD04> { [ r, R, 0x100027C, 0x100027C ] };
+ // long r
+ key <AD05> { [ t, T, NoSymbol, NoSymbol ] };
+ key <AD06> { [ y, Y, NoSymbol, NoSymbol ] };
+ key <AD07> { [ u, U, uacute, Uacute ] };
+ key <AD08> { [ i, I, iacute, Iacute ] };
+ key <AD09> { [ o, O, oacute, Oacute ] };
+ key <AD10> { [ p, P, NoSymbol, NoSymbol ] };
+ key <AD11> { [ bracketleft, braceleft, dead_hook, dead_hook ] };
+ key <AD12> { [ bracketright, braceright, dead_horn, dead_horn ] };
+
+ //
+ // ASDFGHJKL;'#
+ //
+ key <AC01> { [ a, A, aacute, Aacute ] };
+ key <AC02> { [ s, S, NoSymbol, NoSymbol ] };
+ key <AC03> { [ d, D, NoSymbol, NoSymbol ] };
+ key <AC04> { [ f, F, NoSymbol, NoSymbol ] };
+ key <AC05> { [ g, G, NoSymbol, NoSymbol ] };
+ key <AC06> { [ h, H, dead_abovedot, dead_abovedot ] };
+ key <AC07> { [ j, J, NoSymbol, NoSymbol ] };
+ key <AC08> { [ k, K, NoSymbol, NoSymbol ] };
+ key <AC09> { [ l, L, NoSymbol, NoSymbol ] };
+ key <AC10> { [ semicolon, colon, dead_diaeresis, dead_diaeresis ] };
+ key <AC11> { [ apostrophe, at, dead_acute, dead_acute ] };
+ key <BKSL> { [ numbersign, asciitilde, dead_tilde, dead_tilde ] };
+
+ //
+ // \ZXCVBNM,./
+ //
+ key <LSGT> { [ backslash, bar, dead_grave, dead_grave ] };
+ key <AB01> { [ z, Z, 0x100017F, 0x1001E9B ] };
+ // long s, long s dot
+ key <AB02> { [ x, X, NoSymbol, NoSymbol ] };
+ key <AB03> { [ c, C, NoSymbol, NoSymbol ] };
+ key <AB04> { [ v, V, dead_caron, dead_caron ] };
+ key <AB05> { [ b, B, NoSymbol, NoSymbol ] };
+ key <AB06> { [ n, N, NoSymbol, NoSymbol ] };
+ key <AB07> { [ m, M, NoSymbol, NoSymbol ] };
+ key <AB08> { [ comma, less, dead_cedilla, dead_cedilla ] };
+ key <AB09> { [ period, greater, dead_abovedot, dead_abovedot ] };
+ key <AB10> { [ slash, question, dead_belowdot, dead_belowdot ] };
+
+ key <SPCE> { [ space, space, space, nobreakspace ] };
+
+ include "level3(ralt_switch)"
+
+ include "compose(rwin)"
+};
+
+//
+// Ogham keyboard map for XFree86
+//
+// Seamus O Ciardhuain <seoc@cnds.ucd.ie> (17 December 2002)
+//
+// Ogham keyboard layout as recommended in I.S. 434:1999.
+// Suitable for multi-layout xkbcomp.
+// Character names are given as in the Unicode standard,
+// range U+1680 to U+169F.
+
+partial alphanumeric_keys
+xkb_symbols "ogam" {
+
+ name[Group1] = "Ireland - Ogham";
+
+ key.type[Group1] = "ONE_LEVEL";
+
+ key <LSGT> { type[Group1]="TWO_LEVEL",
+ [ 0x100169B, 0x100169C ] };
+ // OGHAM FEATHER MARK, OGHAM REVERSED FEATHER MARK
+
+ key <BKSL> { [ 0x1001680 ] }; // OGHAM SPACE MARK
+
+ key <TLDE> { [ 0x100169C ] }; // OGHAM REVERSED FEATHER MARK
+
+ key <SPCE> { [ space ] };
+
+ //
+ // Top Row QWERTYUIOP
+ //
+ key <AD01> { [ 0x100168A ] }; // OGHAM LETTER CEIRT
+ key <AD02> { [ 0x1001695 ] }; // OGHAM LETTER EABHADH
+ key <AD03> { [ 0x1001693 ] }; // OGHAM LETTER EADHADH
+ key <AD04> { [ 0x100168F ] }; // OGHAM LETTER RUIS
+ key <AD05> { [ 0x1001688 ] }; // OGHAM LETTER TINNE
+ key <AD06> { [ 0x1001698 ] }; // OGHAM LETTER IFIN
+ key <AD07> { [ 0x1001692 ] }; // OGHAM LETTER UR
+ key <AD08> { [ 0x1001694 ] }; // OGHAM LETTER IODHADH
+ key <AD09> { [ 0x1001691 ] }; // OGHAM LETTER ONN
+ key <AD10> { [ 0x100169A ] }; // OGHAM LETTER PEITH
+
+ //
+ // Middle Row ASDFGHJKL
+ //
+ key <AC01> { [ 0x1001690 ] }; // OGHAM LETTER AILM
+ key <AC02> { [ 0x1001684 ] }; // OGHAM LETTER SAIL
+ key <AC03> { [ 0x1001687 ] }; // OGHAM LETTER DAIR
+ key <AC04> { [ 0x1001683 ] }; // OGHAM LETTER FEARN
+ key <AC05> { [ 0x100168C ] }; // OGHAM LETTER GORT
+ key <AC06> { [ 0x1001686 ] }; // OGHAM LETTER UATH
+ key <AC07> { [ 0x1001697 ] }; // OGHAM LETTER UILLEANN
+ key <AC08> { [ 0x1001696 ] }; // OGHAM LETTER OR
+ key <AC09> { [ 0x1001682 ] }; // OGHAM LETTER LUIS
+
+ //
+ // Bottom Row ZXCVBNM
+ //
+ key <AB01> { [ 0x100168E ] }; // OGHAM LETTER STRAIF
+ key <AB02> { [ 0x1001699 ] }; // OGHAM LETTER EAMHANCHOLL
+ key <AB03> { [ 0x1001689 ] }; // OGHAM LETTER COLL
+ key <AB04> { [ 0x100168D ] }; // OGHAM LETTER NGEADAL
+ key <AB05> { [ 0x1001681 ] }; // OGHAM LETTER BEITH
+ key <AB06> { [ 0x1001685 ] }; // OGHAM LETTER NION
+ key <AB07> { [ 0x100168B ] }; // OGHAM LETTER MUIN
+
+ // As an extension because <BKSL> and <LSGT> may not be
+ // available or sensible. These are also a bit more
+ // intuitive on a standard Irish keyboard.
+ key <AB08> { [ 0x100169C ] }; // OGHAM REVERSED FEATHER MARK
+ key <AB09> { [ 0x100169B ] }; // OGHAM FEATHER MARK
+ key <AB10> { [ 0x1001680 ] }; // OGHAM SPACE MARK
+
+ include "compose(rwin)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "ogam_is434" {
+
+ // This has the full layout of IS434 with an Irish QWERTY keyboard,
+ // and the Ogham characters accessed when CAPS LOCK is on.
+
+ name[Group1] = "Ireland - Ogham IS434";
+
+ key.type[Group1] = "THREE_LEVEL";
+
+ key <LSGT> { type[Group1] = "FOUR_LEVEL_ALPHABETIC",
+ [ backslash, bar, 0x100169B, 0x100169C ] };
+ // OGHAM FEATHER MARK, OGHAM REVERSED FEATHER MARK
+
+ key <BKSL> { [ numbersign, asciitilde, 0x1001680 ] }; // OGHAM SPACE MARK
+ key <TLDE> { [ grave, notsign, 0x100169C ] }; // OGHAM REVERSED FEATHER MARK
+ key <SPCE> { [ space, space, space ] };
+
+ //
+ // Numeric row
+ //
+ key <AE01> { type[Group1]="TWO_LEVEL", [ 1, exclam ] };
+ key <AE02> { type[Group1]="TWO_LEVEL", [ 2, quotedbl ] };
+ key <AE03> { type[Group1]="TWO_LEVEL", [ 3, sterling ] };
+ key <AE04> { [ 4, dollar, EuroSign ] };
+ key <AE05> { type[Group1]="TWO_LEVEL", [ 5, percent ] };
+ key <AE06> { type[Group1]="TWO_LEVEL", [ 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand, 0x100204A ] }; // Tironian Et
+ key <AE08> { type[Group1]="TWO_LEVEL", [ 8, asterisk ] };
+ key <AE09> { type[Group1]="TWO_LEVEL", [ 9, parenleft ] };
+ key <AE10> { type[Group1]="TWO_LEVEL", [ 0, parenright ] };
+ key <AE11> { type[Group1]="TWO_LEVEL", [ minus, underscore ] };
+ key <AE12> { type[Group1]="TWO_LEVEL", [ equal, plus ] };
+
+ //
+ // Top Row QWERTYUIOP
+ //
+ key <AD01> { [ q, Q, 0x100168A ] }; // OGHAM LETTER CEIRT
+ key <AD02> { [ w, W, 0x1001695 ] }; // OGHAM LETTER EABHADH
+ key <AD03> { [ e, E, 0x1001693 ] }; // OGHAM LETTER EADHADH
+ key <AD04> { [ r, R, 0x100168F ] }; // OGHAM LETTER RUIS
+ key <AD05> { [ t, T, 0x1001688 ] }; // OGHAM LETTER TINNE
+ key <AD06> { [ y, Y, 0x1001698 ] }; // OGHAM LETTER IFIN
+ key <AD07> { [ u, U, 0x1001692 ] }; // OGHAM LETTER UR
+ key <AD08> { [ i, I, 0x1001694 ] }; // OGHAM LETTER IODHADH
+ key <AD09> { [ o, O, 0x1001691 ] }; // OGHAM LETTER ONN
+ key <AD10> { [ p, P, 0x100169A ] }; // OGHAM LETTER PEITH
+
+ //
+ // Middle Row ASDFGHJKL
+ //
+ key <AC01> { [ a, A, 0x1001690 ] }; // OGHAM LETTER AILM
+ key <AC02> { [ s, S, 0x1001684 ] }; // OGHAM LETTER SAIL
+ key <AC03> { [ d, D, 0x1001687 ] }; // OGHAM LETTER DAIR
+ key <AC04> { [ f, F, 0x1001683 ] }; // OGHAM LETTER FEARN
+ key <AC05> { [ g, G, 0x100168C ] }; // OGHAM LETTER GORT
+ key <AC06> { [ h, H, 0x1001686 ] }; // OGHAM LETTER UATH
+ key <AC07> { [ j, J, 0x1001697 ] }; // OGHAM LETTER UILLEANN
+ key <AC08> { [ k, K, 0x1001696 ] }; // OGHAM LETTER OR
+ key <AC09> { [ l, L, 0x1001682 ] }; // OGHAM LETTER LUIS
+
+ //
+ // Bottom Row ZXCVBNM
+ //
+ key <AB01> { [ z, Z, 0x100168E ] }; // OGHAM LETTER STRAIF
+ key <AB02> { [ x, X, 0x1001699 ] }; // OGHAM LETTER EAMHANCHOLL
+ key <AB03> { [ c, C, 0x1001689 ] }; // OGHAM LETTER COLL
+ key <AB04> { [ v, V, 0x100168D ] }; // OGHAM LETTER NGEADAL
+ key <AB05> { [ b, B, 0x1001681 ] }; // OGHAM LETTER BEITH
+ key <AB06> { [ n, N, 0x1001685 ] }; // OGHAM LETTER NION
+ key <AB07> { [ m, M, 0x100168B ] }; // OGHAM LETTER MUIN
+
+ // As an extension because <BKSL> and <LSGT> may not be
+ // available or sensible. These are also a bit more
+ // intuitive on a standard Irish keyboard.
+ key <AB08> { [ comma, less, 0x100169C ] }; // OGHAM REVERSED FEATHER MARK
+ key <AB09> { [ period, greater, 0x100169B ] }; // OGHAM FEATHER MARK
+ key <AB10> { [ slash, question, 0x1001680 ] }; // OGHAM SPACE MARK
+
+ // The standard says the Ogham characters should be accessed when
+ // Caps Lock is down; not clear if this means it should lock but
+ // seems logical.
+
+ key <CAPS> { type[Group1] = "ONE_LEVEL", [ ISO_Level3_Lock ] };
+
+ // Also allow access to Ogham characters using RALT for convenience
+ include "level3(ralt_switch)"
+
+ // Redefine Scroll Lock as locking shift in case that's needed.
+ // Also overcomes annoying use of Scroll Lock LED inherited from
+ // US symbols but not relevant here since we're not changing group.
+ key <SCLK> {type[Group1] = "ONE_LEVEL", [ Shift_Lock ] };
+ modifier_map Shift { Shift_Lock };
+
+ include "compose(rwin)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/il b/xorg-server/xkeyboard-config/symbols/il
index cc29b128e..1ae574335 100644
--- a/xorg-server/xkeyboard-config/symbols/il
+++ b/xorg-server/xkeyboard-config/symbols/il
@@ -1,255 +1,251 @@
-// $XKeyboardConfig$
-
-// based on a keyboard map from an 'xkb/symbols/il' file
-//
-// $XFree86: xc/programs/xkbcomp/symbols/il,v 1.3 2003/01/07 02:03:44 dawes Exp $
-
-// This is a partial implemetation of the Israeli standard SI-1452
-// It does not implement changes to the English layout ("Alt-English"),
-// as I believe that it is not the job of this layout to modify the English
-// layout.
-partial default alphanumeric_keys
-xkb_symbols "basic" {
- // uses the kbd layout in use in Israel.
-
- name[Group1]= "Israel";
-
- key <AD01> { [ slash, Q ] };
- key <AD02> { [ apostrophe, W ] };
- key <AD04> { [ hebrew_resh, R ] };
- key <AD05> { [ hebrew_aleph,T ] };
- key <AD06> { [ hebrew_tet, Y ] };
- key <AD07> { [ hebrew_waw, U ] };
- key <AD08> { [ hebrew_finalnun, I ] };
- key <AD09> { [ hebrew_finalmem, O ] };
- key <AD10> { [ hebrew_pe, P ] };
-
- key <AC02> { [ hebrew_dalet,S ] };
- key <AC03> { [ hebrew_gimel,D ] };
- key <AC04> { [ hebrew_kaph, F ] };
- key <AC05> { [ hebrew_ayin, G ] };
- key <AC06> { [ hebrew_yod, H ] };
- key <AC07> { [ hebrew_chet, J ] };
- key <AC08> { [ hebrew_lamed, K ] };
- key <AC09> { [ hebrew_finalkaph, L ] };
- key <AC10> { [ hebrew_finalpe, colon ] };
- key <AC11> { [ comma, quotedbl ] };
-
- key <AB01> { [ hebrew_zain, Z ] };
- key <AB02> { [ hebrew_samech, X ] };
- key <AB03> { [ hebrew_bet, C ] };
- key <AB04> { [ hebrew_he, V ] };
- key <AB05> { [ hebrew_nun, B ] };
- key <AB06> { [ hebrew_mem, N ] };
- key <AB07> { [ hebrew_zade, M ] };
- // Mirrored:
- key <AB08> { [ hebrew_taw, greater ] };
- key <AB09> { [ hebrew_finalzade, less ] };
-
- key.type[Group1] = "THREE_LEVEL";
-
- key <TLDE> { [ semicolon, asciitilde,0x10005b0 ]}; // Sheva
- key <AB10> { [ period, question, 0x10005c3 ]}; // Sof Pasuq
- key <AD03> { [ hebrew_qoph, E, EuroSign ]};
- key <AC01> { [ hebrew_shin, A, 0x10020AA ]};
-
- // The following may get overriden by the iso9995-3(basic101) symbols.
- // therefore they are included here.
- // Including them isn't a great idea (for instance: what if group 1 uses
- // UK keyboard mapping, and maps shift-3 to sterling? This mapping won't
- // preserve that, and I'm not sure that this is a good feature.
- key <AE01> { [ 1, exclam , 0x10005b1 ]}; // H. Segol
- key <AE02> { [ 2, at , 0x10005b2 ]}; // H. Patah
- key <AE03> { [ 3, numbersign , 0x10005b3 ]}; // H. Qamats
- key <AE04> { [ 4, dollar , 0x10005b4 ]}; // Hiriq
- key <AE05> { [ 5, percent , 0x10005b5 ]}; // Tsere
- key <AE06> { [ 6, asciicircum , 0x10005b6 ]}; // Segol
- key <AE07> { [ 7, ampersand , 0x10005b7 ]}; // Patah
- key <AE08> { [ 8, asterisk , 0x10005b8 ]}; // Qamats
- // Mirrored:
- key <AE09> { [ 9, parenright , 0x10005c2 ]}; // Sin dot
- key <AE10> { [ 0, parenleft , 0x10005c1 ]}; // Shin dot
- key <AE11> { [ minus, underscore , 0x10005b9 ]}; // Holam
- key <AE12> { [ equal, plus , 0x10005bc ]}; // Dagesh/Shuruq
-
- // Mirrored:
- key <AD11> { [ bracketright, braceright, 0x10005bf ]}; // Rafe
- key <AD12> { [ bracketleft, braceleft, 0x10005bd ]}; // Meteg
-
- key <BKSL> { [ backslash, bar, 0x10005bb ]}; // Qubuts
-
- include "level3(ralt_switch)"
-};
-
-
-// nikud patter based on Dekel Tsur's Hebrew mapping for LyX
-partial alphanumeric_keys
-xkb_symbols "lyx" {
- name[Group1]= "Israel - lyx";
-
- key <TLDE> { [ semicolon, asciitilde ] };
- // On some key (e.g. AD01, right below) there is not yet mapping for the
- // second shift level. Since I could not figure a simple way to map this
- // to "emit nothing", it is currently mapped to the same letter of the
- // first shift level (avoiding mapping may risk it be used by a character
- // from a different group).
- key <AD01> { [ slash, slash ] };
- key <AD02> { [ apostrophe, apostrophe ] };
- key <AD03> { [ hebrew_qoph, 0x10005b8 ] }; // Qamats
- key <AD04> { [ hebrew_resh, 0x10005bc ] }; // Dagesh/Shuruq
- key <AD05> { [ hebrew_aleph, 0x100200e ] }; // LRM
- key <AD06> { [ hebrew_tet, 0x100200f ] }; // RLM
- key <AD07> { [ hebrew_waw, 0x10005b9 ] }; // Holam
- key <AD08> { [ hebrew_finalnun,hebrew_finalnun] };
- key <AD09> { [ hebrew_finalmem,hebrew_finalmem] };
- key <AD10> { [ hebrew_pe, 0x10005b7 ] }; // Patah
-
- key <AC01> { [ hebrew_shin, 0x10005b0 ] }; // Sheva
- key <AC02> { [ hebrew_dalet, 0x10005bc ] }; // Dagesh/Shuruq
- key <AC03> { [ hebrew_gimel, hebrew_gimel ] };
- key <AC04> { [ hebrew_kaph, hebrew_kaph ] };
- key <AC05> { [ hebrew_ayin, 0x10005c2 ] }; // Sin dot
- key <AC06> { [ hebrew_yod, 0x10005c1 ] }; // Shin dot
- key <AC07> { [ hebrew_chet, 0x10005b4 ] }; // Hiriq
- key <AC08> { [ hebrew_lamed, 0x10020aa ] }; // NIS
- key <AC09> { [ hebrew_finalkaph,hebrew_finalkaph] };
- key <AC10> { [ hebrew_finalpe, colon ] };
- key <AC11> { [ comma, quotedbl ] };
-
- key <AB01> { [ hebrew_zain, hebrew_zain ] };
- key <AB02> { [ hebrew_samech,0x10005b6 ] }; // Segol
- key <AB03> { [ hebrew_bet, 0x10005bb ] }; // Qubuts
- key <AB04> { [ hebrew_he, 0x10005b1 ] }; // H. Segol
- key <AB05> { [ hebrew_nun, 0x10005b2 ] }; // H. Patah
- key <AB06> { [ hebrew_mem, 0x10005b3 ] }; // H. Qamats
- key <AB07> { [ hebrew_zade, 0x10005b5 ] }; // Tsere
- key <AB08> { [ hebrew_taw, greater ] };
- key <AB09> { [ hebrew_finalzade, less ] };
- key <AB10> { [ period, question ] };
-
- // Note the parens mirroring below:
- key <AD11> { [ bracketright, braceright ] };
- key <AD12> { [ bracketleft, braceleft ] };
- key <AE09> { [ 9 , parenright ] };
- key <AE10> { [ 0 , parenleft ] };
-
- key <AE11> { [ minus , 0x10005be ] }; // H. Hiphen
- key <AE12> { [ equal , plus ] };
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "phonetic" {
-
- // uses the phonetic layout from old Slackware 'il.map' file
-
- name[Group1]= "Israel - Phonetic";
-
- key <AE12> { [ equal, plus, hebrew_doublelowline, hebrew_doublelowline ]};
-
- key <LatQ> { [ hebrew_qoph, hebrew_qoph ] };
- key <LatW> { [ hebrew_waw, hebrew_waw ] };
- key <LatE> { [ hebrew_aleph, hebrew_aleph ] };
- key <LatR> { [ hebrew_resh, hebrew_resh ] };
- key <LatT> { [ hebrew_taw, hebrew_tet ] };
- key <LatY> { [ hebrew_ayin, hebrew_ayin ] };
- key <LatU> { [ hebrew_waw, hebrew_waw ] };
- key <LatI> { [ hebrew_yod, hebrew_yod ] };
- key <LatO> { [ hebrew_samech, hebrew_samech ] };
- key <LatP> { [ hebrew_pe, hebrew_finalpe ] };
-
- key <LatA> { [ hebrew_aleph, hebrew_aleph ] };
- key <LatS> { [ hebrew_shin, hebrew_shin ] };
- key <LatD> { [ hebrew_dalet, hebrew_dalet ] };
- key <LatF> { [ hebrew_pe, hebrew_finalpe ] };
- key <LatG> { [ hebrew_gimel, hebrew_gimel ] };
- key <LatH> { [ hebrew_he, hebrew_he ] };
- key <LatJ> { [ hebrew_yod, hebrew_yod ] };
- key <LatK> { [ hebrew_kaph, hebrew_finalkaph ] };
- key <LatL> { [ hebrew_lamed, hebrew_lamed ] };
-
- key <LatZ> { [ hebrew_zain, hebrew_zain ] };
- key <LatX> { [ hebrew_chet, hebrew_chet ] };
- key <LatC> { [ hebrew_zade, hebrew_finalzade ] };
- key <LatV> { [ hebrew_waw, hebrew_waw ] };
- key <LatB> { [ hebrew_bet, hebrew_bet ] };
- key <LatN> { [ hebrew_nun, hebrew_finalnun ] };
- key <LatM> { [ hebrew_mem, hebrew_finalmem ] };
-};
-
-// The 'Biblical Hebrew' keyboard layout as defined by Tiro for use with the
-// 'SBL Hebrew' font was added 2006.11.13 by Sebastian J. Bronner
-// <waschtl@sbronner.com>. Its primary features (as compared to the lyx layout)
-// are that the consonants are in the Israeli standard positions, that a great
-// multitude of glyphs can be input directly from the keyboard, and that it is
-// the closest thing to a standard layout a theologian can hope for.
-// Documentation (including printable keyboard tables), SBL Hebrew font, and
-// keyboard layout for Windows are available at
-// http://www.sbl-site.org/Resources/Resources_BiblicalFonts.aspx.
-//
-// It is of interest that the 'basic' layout defined first in this file (as
-// ships with x.org disagrees in the non-consonant characters that the Tiro-
-// layout claims to be the Israeli standard. Tiros apparent diligence in the
-// PDF-documentation accompanying the keyboard-layout-files lead me to put
-// greater stock in their claim than in this file. Therefore, the 'biblical'
-// layout below does not include 'il(basic)' but redoes the _whole_ thing from
-// scratch.
-
-partial alphanumeric_keys
-xkb_symbols "biblical" {
- name[Group1]= "Israel - Biblical Hebrew (Tiro)";
- key.type = "FOUR_LEVEL_SEMIALPHABETIC";
-
- key <TLDE> { [ U05C3, U05AE, semicolon, asciitilde ] };
- key <AE01> { [ 1, U05A9, VoidSymbol, exclam ] };
- key <AE02> { [ 2, U0599, VoidSymbol, at ] };
- key <AE03> { [ 3, U0592, VoidSymbol, numbersign ] };
- key <AE04> { [ 4, U05AF, NewSheqelSign, dollar ] };
- key <AE05> { [ 5, VoidSymbol, U200D, percent ] };
- key <AE06> { [ 6, U05B9, U200C, asciicircum ] };
- key <AE07> { [ 7, U05BF, U034F, ampersand ] };
- key <AE08> { [ 8, U05C2, U200E, asterisk ] };
- key <AE09> { [ 9, U05C1, U200F, parenright ] };
- key <AE10> { [ 0, U059D, U25CC, parenleft ] };
- key <AE11> { [ U05BE, U05A0, minus, underscore ] };
- key <AE12> { [ equal, U05BC, VoidSymbol, plus ] };
-
- key <AD01> { [ U0307, U05C4, U0308, slash ] };
- key <AD02> { [ U05F3, U05AC, U05F4, apostrophe ] };
- key <AD03> { [ hebrew_qoph, U05AB, U20AC ] };
- key <AD04> { [ hebrew_resh, U059F ] };
- key <AD05> { [ hebrew_aleph, U0593 ] };
- key <AD06> { [ hebrew_tet, U059E ] };
- key <AD07> { [ hebrew_waw, U059C, U05F0 ] };
- key <AD08> { [ hebrew_finalnun, U05A1 ] };
- key <AD09> { [ hebrew_finalmem, U0595 ] };
- key <AD10> { [ hebrew_pe, U0594 ] };
- key <AD11> { [ bracketright, U0597, VoidSymbol, braceright ] };
- key <AD12> { [ bracketleft, U0598, VoidSymbol, braceleft ] };
- key <BKSL> { [ U05C0, U05A8, backslash, bar ] };
-
- key <AC01> { [ hebrew_shin, U05BD ] };
- key <AC02> { [ hebrew_dalet, U05B0 ] };
- key <AC03> { [ hebrew_gimel, U05BB ] };
- key <AC04> { [ hebrew_kaph, U05B4 ] };
- key <AC05> { [ hebrew_ayin, U05B1 ] };
- key <AC06> { [ hebrew_yod, U05B6, U05F2 ] };
- key <AC07> { [ hebrew_chet, U05B5, U05F1 ] };
- key <AC08> { [ hebrew_lamed, U05B3 ] };
- key <AC09> { [ hebrew_finalkaph, U05B8, U05C7 ] };
- key <AC10> { [ hebrew_finalpe, U05B2, VoidSymbol, colon ] };
- key <AC11> { [ U059a, U05B7, comma, quotedbl ] };
-
- key <AB01> { [ hebrew_zain, U05C5 ] };
- key <AB02> { [ hebrew_samech, U05A4 ] };
- key <AB03> { [ hebrew_bet, U05AA, U05A2 ] };
- key <AB04> { [ hebrew_he, U05A6 ] };
- key <AB05> { [ hebrew_nun, U05A5, U05C6 ] };
- key <AB06> { [ hebrew_mem, U05A7 ] };
- key <AB07> { [ hebrew_zade, U059B ] };
- key <AB08> { [ hebrew_taw, U0591, VoidSymbol, greater ] };
- key <AB09> { [ hebrew_finalzade, U0596, VoidSymbol, less ] };
- key <AB10> { [ U05AD, U05A3, period, question ] };
-
- key <SPCE> { [ space, space, thinspace, nobreakspace ] };
-};
+// based on a keyboard map from an 'xkb/symbols/il' file
+
+// This is a partial implemetation of the Israeli standard SI-1452
+// It does not implement changes to the English layout ("Alt-English"),
+// as I believe that it is not the job of this layout to modify the English
+// layout.
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ // uses the kbd layout in use in Israel.
+
+ name[Group1]= "Israel";
+
+ key <AD01> { [ slash, Q ] };
+ key <AD02> { [ apostrophe, W ] };
+ key <AD04> { [ hebrew_resh, R ] };
+ key <AD05> { [ hebrew_aleph,T ] };
+ key <AD06> { [ hebrew_tet, Y ] };
+ key <AD07> { [ hebrew_waw, U ] };
+ key <AD08> { [ hebrew_finalnun, I ] };
+ key <AD09> { [ hebrew_finalmem, O ] };
+ key <AD10> { [ hebrew_pe, P ] };
+
+ key <AC02> { [ hebrew_dalet,S ] };
+ key <AC03> { [ hebrew_gimel,D ] };
+ key <AC04> { [ hebrew_kaph, F ] };
+ key <AC05> { [ hebrew_ayin, G ] };
+ key <AC06> { [ hebrew_yod, H ] };
+ key <AC07> { [ hebrew_chet, J ] };
+ key <AC08> { [ hebrew_lamed, K ] };
+ key <AC09> { [ hebrew_finalkaph, L ] };
+ key <AC10> { [ hebrew_finalpe, colon ] };
+ key <AC11> { [ comma, quotedbl ] };
+
+ key <AB01> { [ hebrew_zain, Z ] };
+ key <AB02> { [ hebrew_samech, X ] };
+ key <AB03> { [ hebrew_bet, C ] };
+ key <AB04> { [ hebrew_he, V ] };
+ key <AB05> { [ hebrew_nun, B ] };
+ key <AB06> { [ hebrew_mem, N ] };
+ key <AB07> { [ hebrew_zade, M ] };
+ // Mirrored:
+ key <AB08> { [ hebrew_taw, greater ] };
+ key <AB09> { [ hebrew_finalzade, less ] };
+
+ key.type[Group1] = "THREE_LEVEL";
+
+ key <TLDE> { [ semicolon, asciitilde,0x10005b0 ]}; // Sheva
+ key <AB10> { [ period, question, 0x10005c3 ]}; // Sof Pasuq
+ key <AD03> { [ hebrew_qoph, E, EuroSign ]};
+ key <AC01> { [ hebrew_shin, A, 0x10020AA ]};
+
+ // The following may get overriden by the iso9995-3(basic101) symbols.
+ // therefore they are included here.
+ // Including them isn't a great idea (for instance: what if group 1 uses
+ // UK keyboard mapping, and maps shift-3 to sterling? This mapping won't
+ // preserve that, and I'm not sure that this is a good feature.
+ key <AE01> { [ 1, exclam , 0x10005b1 ]}; // H. Segol
+ key <AE02> { [ 2, at , 0x10005b2 ]}; // H. Patah
+ key <AE03> { [ 3, numbersign , 0x10005b3 ]}; // H. Qamats
+ key <AE04> { [ 4, dollar , 0x10005b4 ]}; // Hiriq
+ key <AE05> { [ 5, percent , 0x10005b5 ]}; // Tsere
+ key <AE06> { [ 6, asciicircum , 0x10005b6 ]}; // Segol
+ key <AE07> { [ 7, ampersand , 0x10005b7 ]}; // Patah
+ key <AE08> { [ 8, asterisk , 0x10005b8 ]}; // Qamats
+ // Mirrored:
+ key <AE09> { [ 9, parenright , 0x10005c2 ]}; // Sin dot
+ key <AE10> { [ 0, parenleft , 0x10005c1 ]}; // Shin dot
+ key <AE11> { [ minus, underscore , 0x10005b9 ]}; // Holam
+ key <AE12> { [ equal, plus , 0x10005bc ]}; // Dagesh/Shuruq
+
+ // Mirrored:
+ key <AD11> { [ bracketright, braceright, 0x10005bf ]}; // Rafe
+ key <AD12> { [ bracketleft, braceleft, 0x10005bd ]}; // Meteg
+
+ key <BKSL> { [ backslash, bar, 0x10005bb ]}; // Qubuts
+
+ include "level3(ralt_switch)"
+};
+
+
+// nikud patter based on Dekel Tsur's Hebrew mapping for LyX
+partial alphanumeric_keys
+xkb_symbols "lyx" {
+ name[Group1]= "Israel - lyx";
+
+ key <TLDE> { [ semicolon, asciitilde ] };
+ // On some key (e.g. AD01, right below) there is not yet mapping for the
+ // second shift level. Since I could not figure a simple way to map this
+ // to "emit nothing", it is currently mapped to the same letter of the
+ // first shift level (avoiding mapping may risk it be used by a character
+ // from a different group).
+ key <AD01> { [ slash, slash ] };
+ key <AD02> { [ apostrophe, apostrophe ] };
+ key <AD03> { [ hebrew_qoph, 0x10005b8 ] }; // Qamats
+ key <AD04> { [ hebrew_resh, 0x10005bc ] }; // Dagesh/Shuruq
+ key <AD05> { [ hebrew_aleph, 0x100200e ] }; // LRM
+ key <AD06> { [ hebrew_tet, 0x100200f ] }; // RLM
+ key <AD07> { [ hebrew_waw, 0x10005b9 ] }; // Holam
+ key <AD08> { [ hebrew_finalnun,hebrew_finalnun] };
+ key <AD09> { [ hebrew_finalmem,hebrew_finalmem] };
+ key <AD10> { [ hebrew_pe, 0x10005b7 ] }; // Patah
+
+ key <AC01> { [ hebrew_shin, 0x10005b0 ] }; // Sheva
+ key <AC02> { [ hebrew_dalet, 0x10005bc ] }; // Dagesh/Shuruq
+ key <AC03> { [ hebrew_gimel, hebrew_gimel ] };
+ key <AC04> { [ hebrew_kaph, hebrew_kaph ] };
+ key <AC05> { [ hebrew_ayin, 0x10005c2 ] }; // Sin dot
+ key <AC06> { [ hebrew_yod, 0x10005c1 ] }; // Shin dot
+ key <AC07> { [ hebrew_chet, 0x10005b4 ] }; // Hiriq
+ key <AC08> { [ hebrew_lamed, 0x10020aa ] }; // NIS
+ key <AC09> { [ hebrew_finalkaph,hebrew_finalkaph] };
+ key <AC10> { [ hebrew_finalpe, colon ] };
+ key <AC11> { [ comma, quotedbl ] };
+
+ key <AB01> { [ hebrew_zain, hebrew_zain ] };
+ key <AB02> { [ hebrew_samech,0x10005b6 ] }; // Segol
+ key <AB03> { [ hebrew_bet, 0x10005bb ] }; // Qubuts
+ key <AB04> { [ hebrew_he, 0x10005b1 ] }; // H. Segol
+ key <AB05> { [ hebrew_nun, 0x10005b2 ] }; // H. Patah
+ key <AB06> { [ hebrew_mem, 0x10005b3 ] }; // H. Qamats
+ key <AB07> { [ hebrew_zade, 0x10005b5 ] }; // Tsere
+ key <AB08> { [ hebrew_taw, greater ] };
+ key <AB09> { [ hebrew_finalzade, less ] };
+ key <AB10> { [ period, question ] };
+
+ // Note the parens mirroring below:
+ key <AD11> { [ bracketright, braceright ] };
+ key <AD12> { [ bracketleft, braceleft ] };
+ key <AE09> { [ 9 , parenright ] };
+ key <AE10> { [ 0 , parenleft ] };
+
+ key <AE11> { [ minus , 0x10005be ] }; // H. Hiphen
+ key <AE12> { [ equal , plus ] };
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "phonetic" {
+
+ // uses the phonetic layout from old Slackware 'il.map' file
+
+ name[Group1]= "Israel - Phonetic";
+
+ key <AE12> { [ equal, plus, hebrew_doublelowline, hebrew_doublelowline ]};
+
+ key <LatQ> { [ hebrew_qoph, hebrew_qoph ] };
+ key <LatW> { [ hebrew_waw, hebrew_waw ] };
+ key <LatE> { [ hebrew_aleph, hebrew_aleph ] };
+ key <LatR> { [ hebrew_resh, hebrew_resh ] };
+ key <LatT> { [ hebrew_taw, hebrew_tet ] };
+ key <LatY> { [ hebrew_ayin, hebrew_ayin ] };
+ key <LatU> { [ hebrew_waw, hebrew_waw ] };
+ key <LatI> { [ hebrew_yod, hebrew_yod ] };
+ key <LatO> { [ hebrew_samech, hebrew_samech ] };
+ key <LatP> { [ hebrew_pe, hebrew_finalpe ] };
+
+ key <LatA> { [ hebrew_aleph, hebrew_aleph ] };
+ key <LatS> { [ hebrew_shin, hebrew_shin ] };
+ key <LatD> { [ hebrew_dalet, hebrew_dalet ] };
+ key <LatF> { [ hebrew_pe, hebrew_finalpe ] };
+ key <LatG> { [ hebrew_gimel, hebrew_gimel ] };
+ key <LatH> { [ hebrew_he, hebrew_he ] };
+ key <LatJ> { [ hebrew_yod, hebrew_yod ] };
+ key <LatK> { [ hebrew_kaph, hebrew_finalkaph ] };
+ key <LatL> { [ hebrew_lamed, hebrew_lamed ] };
+
+ key <LatZ> { [ hebrew_zain, hebrew_zain ] };
+ key <LatX> { [ hebrew_chet, hebrew_chet ] };
+ key <LatC> { [ hebrew_zade, hebrew_finalzade ] };
+ key <LatV> { [ hebrew_waw, hebrew_waw ] };
+ key <LatB> { [ hebrew_bet, hebrew_bet ] };
+ key <LatN> { [ hebrew_nun, hebrew_finalnun ] };
+ key <LatM> { [ hebrew_mem, hebrew_finalmem ] };
+};
+
+// The 'Biblical Hebrew' keyboard layout as defined by Tiro for use with the
+// 'SBL Hebrew' font was added 2006.11.13 by Sebastian J. Bronner
+// <waschtl@sbronner.com>. Its primary features (as compared to the lyx layout)
+// are that the consonants are in the Israeli standard positions, that a great
+// multitude of glyphs can be input directly from the keyboard, and that it is
+// the closest thing to a standard layout a theologian can hope for.
+// Documentation (including printable keyboard tables), SBL Hebrew font, and
+// keyboard layout for Windows are available at
+// http://www.sbl-site.org/Resources/Resources_BiblicalFonts.aspx.
+//
+// It is of interest that the 'basic' layout defined first in this file (as
+// ships with x.org disagrees in the non-consonant characters that the Tiro-
+// layout claims to be the Israeli standard. Tiros apparent diligence in the
+// PDF-documentation accompanying the keyboard-layout-files lead me to put
+// greater stock in their claim than in this file. Therefore, the 'biblical'
+// layout below does not include 'il(basic)' but redoes the _whole_ thing from
+// scratch.
+
+partial alphanumeric_keys
+xkb_symbols "biblical" {
+ name[Group1]= "Israel - Biblical Hebrew (Tiro)";
+ key.type = "FOUR_LEVEL_SEMIALPHABETIC";
+
+ key <TLDE> { [ U05C3, U05AE, semicolon, asciitilde ] };
+ key <AE01> { [ 1, U05A9, VoidSymbol, exclam ] };
+ key <AE02> { [ 2, U0599, VoidSymbol, at ] };
+ key <AE03> { [ 3, U0592, VoidSymbol, numbersign ] };
+ key <AE04> { [ 4, U05AF, NewSheqelSign, dollar ] };
+ key <AE05> { [ 5, VoidSymbol, U200D, percent ] };
+ key <AE06> { [ 6, U05B9, U200C, asciicircum ] };
+ key <AE07> { [ 7, U05BF, U034F, ampersand ] };
+ key <AE08> { [ 8, U05C2, U200E, asterisk ] };
+ key <AE09> { [ 9, U05C1, U200F, parenright ] };
+ key <AE10> { [ 0, U059D, U25CC, parenleft ] };
+ key <AE11> { [ U05BE, U05A0, minus, underscore ] };
+ key <AE12> { [ equal, U05BC, VoidSymbol, plus ] };
+
+ key <AD01> { [ U0307, U05C4, U0308, slash ] };
+ key <AD02> { [ U05F3, U05AC, U05F4, apostrophe ] };
+ key <AD03> { [ hebrew_qoph, U05AB, U20AC ] };
+ key <AD04> { [ hebrew_resh, U059F ] };
+ key <AD05> { [ hebrew_aleph, U0593 ] };
+ key <AD06> { [ hebrew_tet, U059E ] };
+ key <AD07> { [ hebrew_waw, U059C, U05F0 ] };
+ key <AD08> { [ hebrew_finalnun, U05A1 ] };
+ key <AD09> { [ hebrew_finalmem, U0595 ] };
+ key <AD10> { [ hebrew_pe, U0594 ] };
+ key <AD11> { [ bracketright, U0597, VoidSymbol, braceright ] };
+ key <AD12> { [ bracketleft, U0598, VoidSymbol, braceleft ] };
+ key <BKSL> { [ U05C0, U05A8, backslash, bar ] };
+
+ key <AC01> { [ hebrew_shin, U05BD ] };
+ key <AC02> { [ hebrew_dalet, U05B0 ] };
+ key <AC03> { [ hebrew_gimel, U05BB ] };
+ key <AC04> { [ hebrew_kaph, U05B4 ] };
+ key <AC05> { [ hebrew_ayin, U05B1 ] };
+ key <AC06> { [ hebrew_yod, U05B6, U05F2 ] };
+ key <AC07> { [ hebrew_chet, U05B5, U05F1 ] };
+ key <AC08> { [ hebrew_lamed, U05B3 ] };
+ key <AC09> { [ hebrew_finalkaph, U05B8, U05C7 ] };
+ key <AC10> { [ hebrew_finalpe, U05B2, VoidSymbol, colon ] };
+ key <AC11> { [ U059a, U05B7, comma, quotedbl ] };
+
+ key <AB01> { [ hebrew_zain, U05C5 ] };
+ key <AB02> { [ hebrew_samech, U05A4 ] };
+ key <AB03> { [ hebrew_bet, U05AA, U05A2 ] };
+ key <AB04> { [ hebrew_he, U05A6 ] };
+ key <AB05> { [ hebrew_nun, U05A5, U05C6 ] };
+ key <AB06> { [ hebrew_mem, U05A7 ] };
+ key <AB07> { [ hebrew_zade, U059B ] };
+ key <AB08> { [ hebrew_taw, U0591, VoidSymbol, greater ] };
+ key <AB09> { [ hebrew_finalzade, U0596, VoidSymbol, less ] };
+ key <AB10> { [ U05AD, U05A3, period, question ] };
+
+ key <SPCE> { [ space, space, thinspace, nobreakspace ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/in b/xorg-server/xkeyboard-config/symbols/in
index dc209978b..5d4dc27b2 100644
--- a/xorg-server/xkeyboard-config/symbols/in
+++ b/xorg-server/xkeyboard-config/symbols/in
@@ -1,5 +1,3 @@
-// $XKeyboardConfig$
-
// This layout includes all Indian layouts, including:
// - Bengali
// - Gujarati
@@ -166,8 +164,6 @@ xkb_symbols "bolnagri" {
};
// based on a keyboard map from an 'xkb/symbols/ben' file
-//
-// $XFree86: xc/programs/xkbcomp/symbols/ben,v 1.2 2002/11/22 04:03:28 dawes Exp $
partial alphanumeric_keys
xkb_symbols "ben" {
@@ -668,8 +664,6 @@ xkb_symbols "ori" {
};
// based on a keyboard map from an 'xkb/symbols/tml' file
-//
-// $XFree86: xc/programs/xkbcomp/symbols/tml,v 1.2 2002/11/22 04:03:28 dawes Exp $
// INSCRIPT
partial alphanumeric_keys
xkb_symbols "tam" {
@@ -1344,5 +1338,3 @@ xkb_symbols "eng" {
include "level3(ralt_switch)"
};
-
-
diff --git a/xorg-server/xkeyboard-config/symbols/inet b/xorg-server/xkeyboard-config/symbols/inet
index 3868c8f9c..8f1151768 100644
--- a/xorg-server/xkeyboard-config/symbols/inet
+++ b/xorg-server/xkeyboard-config/symbols/inet
@@ -1,7 +1,3 @@
-// $XKeyboardConfig$
-
-// $XFree86: xc/programs/xkbcomp/symbols/inet,v 1.38 2004/01/17 14:59:37 pascal Exp $
-
// EAK (Easy Access, Internet, Multimedia, PDA) keyboards
// Copyright (C) 2002 Stanislav Brabec <sbrabec@suse.cz>
//
@@ -126,6 +122,7 @@ xkb_symbols "evdev" {
// key <I120> { [ ] }; // KEY_MACRO
key <I126> { [ plusminus ] };
+ key <I128> { [ XF86LaunchA ] };
key <I147> { [ XF86MenuKB ] };
key <I148> { [ XF86Calculator ] };
// key <I149> { [ ] }; // KEY_SETUP
@@ -174,6 +171,7 @@ xkb_symbols "evdev" {
key <I209> { [ XF86AudioPause ] };
key <I210> { [ XF86Launch3 ] };
key <I211> { [ XF86Launch4 ] };
+ key <I212> { [ XF86LaunchB ] };
key <I213> { [ XF86Suspend ] };
key <I214> { [ XF86Close ] };
key <I215> { [ XF86AudioPlay ] };
diff --git a/xorg-server/xkeyboard-config/symbols/iq b/xorg-server/xkeyboard-config/symbols/iq
index b2b742b95..f30332940 100644
--- a/xorg-server/xkeyboard-config/symbols/iq
+++ b/xorg-server/xkeyboard-config/symbols/iq
@@ -1,34 +1,33 @@
-// $XKeyboardConfig$
-// Iraque keyboard layout,
-
-// 3-Level layout
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
- include "ara(basic)"
- name[Group1]= "Iraq";
-};
-
-partial alphanumeric_keys
-xkb_symbols "ku" {
- include "tr(ku)"
- name[Group1]= "Iraq - Kurdish, Latin Q";
-};
-
-partial alphanumeric_keys
-xkb_symbols "ku_f" {
- include "tr(ku_f)"
- name[Group1]= "Iraq - Kurdish, (F)";
-};
-
-partial alphanumeric_keys
-xkb_symbols "ku_alt" {
- include "tr(ku_alt)"
- name[Group1]= "Iraq - Kurdish, Latin Alt-Q";
-};
-
-partial alphanumeric_keys
-xkb_symbols "ku_ara" {
- include "ir(ku_ara)"
- name[Group1]= "Iraq - Kurdish, Arabic-Latin";
-};
+// Iraque keyboard layout,
+
+// 3-Level layout
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ include "ara(basic)"
+ name[Group1]= "Iraq";
+};
+
+partial alphanumeric_keys
+xkb_symbols "ku" {
+ include "tr(ku)"
+ name[Group1]= "Iraq - Kurdish, Latin Q";
+};
+
+partial alphanumeric_keys
+xkb_symbols "ku_f" {
+ include "tr(ku_f)"
+ name[Group1]= "Iraq - Kurdish, (F)";
+};
+
+partial alphanumeric_keys
+xkb_symbols "ku_alt" {
+ include "tr(ku_alt)"
+ name[Group1]= "Iraq - Kurdish, Latin Alt-Q";
+};
+
+partial alphanumeric_keys
+xkb_symbols "ku_ara" {
+ include "ir(ku_ara)"
+ name[Group1]= "Iraq - Kurdish, Arabic-Latin";
+};
diff --git a/xorg-server/xkeyboard-config/symbols/ir b/xorg-server/xkeyboard-config/symbols/ir
index 8332f84e3..6f4618df7 100644
--- a/xorg-server/xkeyboard-config/symbols/ir
+++ b/xorg-server/xkeyboard-config/symbols/ir
@@ -1,5 +1,3 @@
-// $XKeyboardConfig$
-
// Iranian keyboard layout
////////////////////////////////////////
@@ -240,4 +238,3 @@ xkb_symbols "ku_ara" {
include "nbsp(zwnj2nb3)"
include "level3(ralt_switch)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/is b/xorg-server/xkeyboard-config/symbols/is
index 53dddc43e..2a37f9da1 100644
--- a/xorg-server/xkeyboard-config/symbols/is
+++ b/xorg-server/xkeyboard-config/symbols/is
@@ -1,10 +1,7 @@
-// $XKeyboardConfig$
-
// based on
// XKB keyboard by Hrafnkell Eiriksson - hkelle@rhi.hi.is
// fixes by Olafur Osvaldsson - oli@isnic.is
//
-// $XFree86: xc/programs/xkbcomp/symbols/is,v 1.3 2002/11/26 01:57:25 dawes Exp $
default partial alphanumeric_keys
xkb_symbols "basic" {
diff --git a/xorg-server/xkeyboard-config/symbols/it b/xorg-server/xkeyboard-config/symbols/it
index 9222a1ca4..631fae591 100644
--- a/xorg-server/xkeyboard-config/symbols/it
+++ b/xorg-server/xkeyboard-config/symbols/it
@@ -1,9 +1,5 @@
-// $XKeyboardConfig$
-
// based on a keyboard map from an 'xkb/symbols/it' file
// 17 May 2003 Modified by Sebastiano Vigna (vigna@dsi.unimi.it)
-//
-// $XFree86: xc/programs/xkbcomp/symbols/it,v 1.4 2003/04/19 12:22:12 pascal Exp $
partial default alphanumeric_keys
xkb_symbols "basic" {
@@ -259,4 +255,3 @@ xkb_symbols "htcdream" {
include "level3(alt_switch)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/jp b/xorg-server/xkeyboard-config/symbols/jp
index 5e4ba14b7..64b50a44c 100644
--- a/xorg-server/xkeyboard-config/symbols/jp
+++ b/xorg-server/xkeyboard-config/symbols/jp
@@ -1,5 +1,3 @@
-// $XKeyboardConfig$
-
// based on:
// symbols for a Japanese 106 keyboard(by tsuka@kawalab.dnj.ynu.ac.jp)
diff --git a/xorg-server/xkeyboard-config/symbols/ke b/xorg-server/xkeyboard-config/symbols/ke
index 5ec174b7e..6d75d6780 100644
--- a/xorg-server/xkeyboard-config/symbols/ke
+++ b/xorg-server/xkeyboard-config/symbols/ke
@@ -1,44 +1,42 @@
-// $XKeyboardConfig$
-
-// Keyboard layout for Swahili in Arabic script.
-// Based on Martin Vidner's Buckwalter transliteration variant of the Arabic keyboard
-// Please notify any corrections or omissions to
-// Kevin Donnelly (kevin@dotmon.com)
-
-partial default alphanumeric_keys
-xkb_symbols "swa" {
-
- include "us"
-
- name[Group1]= "Kenya";
-
- key <AC10> { [ semicolon, colon, 0x01000324, 0x01000324 ] }; //COMBINING DIAERESIS BELOW
- key <AC11> { [apostrophe, quotedbl, 0x01000301, 0x01000308 ] }; //COMBINING ACUTE ACCENT, COMBINING DIAERESIS
- key <TLDE> { [ grave, asciitilde, 0x01000300, 0x01000303 ] }; //COMBINING GRAVE ACCENT, COMBINING TILDE
- key <AE06> { [ 6, asciicircum, 0x01000302 ] }; //COMBINING CIRCUMFLEX ACCENT
- key <AE08> { [ 8, asterisk, 0x01000307, 0x01000323 ] }; //COMBINING DOT ABOVE, COMBINING DOT BELOW
- key <AE09> { [ 9, parenleft, 0x01000306 ] }; //COMBINING BREVE
- key <AE10> { [ 0, parenright, 0x0100030c ] }; //COMBINING CARON
- key <AE11> { [ minus, underscore, 0x01000304, 0x01000331 ] }; //COMBINING MACRON,COMBINING MACRON BELOW
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "kik" {
-
- include "us"
-
- name[Group1]= "Kenya - Kikuyu";
-
- key <AC10> { [ semicolon, colon, 0x01000324, 0x01000324 ] }; //COMBINING DIAERESIS BELOW
- key <AC11> { [apostrophe, quotedbl, 0x01000301, 0x01000308 ] }; //COMBINING ACUTE ACCENT, COMBINING DIAERESIS
- key <TLDE> { [ grave, asciitilde, 0x01000300, 0x01000303 ] }; //COMBINING GRAVE ACCENT, COMBINING TILDE
- key <AE06> { [ 6, asciicircum, 0x01000302 ] }; //COMBINING CIRCUMFLEX ACCENT
- key <AE08> { [ 8, asterisk, 0x01000307, 0x01000323 ] }; //COMBINING DOT ABOVE, COMBINING DOT BELOW
- key <AE09> { [ 9, parenleft, 0x01000306 ] }; //COMBINING BREVE
- key <AE10> { [ 0, parenright, 0x0100030c ] }; //COMBINING CARON
- key <AE11> { [ minus, underscore, 0x01000304, 0x01000331 ] }; //COMBINING MACRON,COMBINING MACRON BELOW
-
- include "level3(ralt_switch)"
-};
+// Keyboard layout for Swahili in Arabic script.
+// Based on Martin Vidner's Buckwalter transliteration variant of the Arabic keyboard
+// Please notify any corrections or omissions to
+// Kevin Donnelly (kevin@dotmon.com)
+
+partial default alphanumeric_keys
+xkb_symbols "swa" {
+
+ include "us"
+
+ name[Group1]= "Kenya";
+
+ key <AC10> { [ semicolon, colon, 0x01000324, 0x01000324 ] }; //COMBINING DIAERESIS BELOW
+ key <AC11> { [apostrophe, quotedbl, 0x01000301, 0x01000308 ] }; //COMBINING ACUTE ACCENT, COMBINING DIAERESIS
+ key <TLDE> { [ grave, asciitilde, 0x01000300, 0x01000303 ] }; //COMBINING GRAVE ACCENT, COMBINING TILDE
+ key <AE06> { [ 6, asciicircum, 0x01000302 ] }; //COMBINING CIRCUMFLEX ACCENT
+ key <AE08> { [ 8, asterisk, 0x01000307, 0x01000323 ] }; //COMBINING DOT ABOVE, COMBINING DOT BELOW
+ key <AE09> { [ 9, parenleft, 0x01000306 ] }; //COMBINING BREVE
+ key <AE10> { [ 0, parenright, 0x0100030c ] }; //COMBINING CARON
+ key <AE11> { [ minus, underscore, 0x01000304, 0x01000331 ] }; //COMBINING MACRON,COMBINING MACRON BELOW
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "kik" {
+
+ include "us"
+
+ name[Group1]= "Kenya - Kikuyu";
+
+ key <AC10> { [ semicolon, colon, 0x01000324, 0x01000324 ] }; //COMBINING DIAERESIS BELOW
+ key <AC11> { [apostrophe, quotedbl, 0x01000301, 0x01000308 ] }; //COMBINING ACUTE ACCENT, COMBINING DIAERESIS
+ key <TLDE> { [ grave, asciitilde, 0x01000300, 0x01000303 ] }; //COMBINING GRAVE ACCENT, COMBINING TILDE
+ key <AE06> { [ 6, asciicircum, 0x01000302 ] }; //COMBINING CIRCUMFLEX ACCENT
+ key <AE08> { [ 8, asterisk, 0x01000307, 0x01000323 ] }; //COMBINING DOT ABOVE, COMBINING DOT BELOW
+ key <AE09> { [ 9, parenleft, 0x01000306 ] }; //COMBINING BREVE
+ key <AE10> { [ 0, parenright, 0x0100030c ] }; //COMBINING CARON
+ key <AE11> { [ minus, underscore, 0x01000304, 0x01000331 ] }; //COMBINING MACRON,COMBINING MACRON BELOW
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/keypad b/xorg-server/xkeyboard-config/symbols/keypad
index 4dfa1a7e2..fb3469850 100644
--- a/xorg-server/xkeyboard-config/symbols/keypad
+++ b/xorg-server/xkeyboard-config/symbols/keypad
@@ -1,6 +1,3 @@
-// $XKeyboardConfig$
-// $Xorg: keypad,v 1.3 2000/08/17 19:54:43 cpqbld Exp $
-
partial hidden keypad_keys
xkb_symbols "overlay" {
include "keypad(overlay1)"
diff --git a/xorg-server/xkeyboard-config/symbols/kg b/xorg-server/xkeyboard-config/symbols/kg
index be5424799..8687cb608 100644
--- a/xorg-server/xkeyboard-config/symbols/kg
+++ b/xorg-server/xkeyboard-config/symbols/kg
@@ -1,135 +1,133 @@
-// $XKeyboardConfig$
-
-// Kirghiz (aka Kyrgyz) Standard Keyboard
-//
-// Standard - Phonetic
-// ______________- ________________
-// ё1234567890өң ё1234567890яю
-// Ё!"№;%:?*()ӨҢ Ё!"№;%:?-()ЯЮ
-//
-// йцукенгшщзхъү өүертыуиопчшъ
-// фывапролджэ асдфгңйклэь
-// ячсмитьбю.(,) зхжвбнмцщ.(,)
-
-// Authors:
-// Timur Jamakeev <ztimur [at] gmail.com>
-// Ilyas Bakirov <just_ilyas [at] yahoo.com>
-// Yury Fedorov <yury-fedorov [at] prime-task.com>
-// Emil Asanov <a7 [at] on.kg>
-// Ulan Melisbek <ulan.melisbek [at] gmail.com>
-
-
-// Kyrgyz standard keyboard
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- name[Group1]= "Kyrgyzstan";
-
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, quotedbl ] };
- key <AE03> { [ 3, numerosign ] };
- key <AE04> { [ 4, semicolon ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, colon ] };
- key <AE07> { [ 7, question ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ Cyrillic_o_bar, Cyrillic_O_bar ] };
- key <AE12> { [ Cyrillic_en_descender, Cyrillic_EN_descender ] };
- key <BKSL> { [ Cyrillic_u_straight, Cyrillic_U_straight ] };
- key <AB10> { [ period, comma ] };
- key <LSGT> { [ slash, bar ] };
-
- key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] };
- key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <AD03> { [ Cyrillic_u, Cyrillic_U ] };
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] };
- key <AD06> { [ Cyrillic_en, Cyrillic_EN ] };
- key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
- key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] };
- key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <AC04> { [ Cyrillic_a, Cyrillic_A ] };
- key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
- key <AC07> { [ Cyrillic_o, Cyrillic_O ] };
- key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
- key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
- key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <AC11> { [ Cyrillic_e, Cyrillic_E ] };
- key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
- key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
- key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
- key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
- key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
- key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
- key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
- key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
-};
-
-// Kyrgyz phonetic layout
-partial alphanumeric_keys
-xkb_symbols "phonetic" {
-
- name[Group1]="Kyrgyzstan - Phonetic";
-
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, quotedbl ] };
- key <AE03> { [ 3, numerosign ] };
- key <AE04> { [ 4, semicolon ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, colon ] };
- key <AE07> { [ 7, question ] };
- key <AE08> { [ 8, minus ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ Cyrillic_ya, Cyrillic_YA ] };
- key <AE12> { [ Cyrillic_yu, Cyrillic_YU ] };
-
- key <AD11> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AD12> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <BKSL> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
- key <AB09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <AB10> { [ period, comma ] };
- key <AB08> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <AC10> { [ Cyrillic_e, Cyrillic_E ] };
- key <AC11> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
- key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] };
-
- key <LatQ> { [ Cyrillic_o_bar, Cyrillic_O_bar ] };
- key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
- key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
- key <LatW> { [ Cyrillic_u_straight, Cyrillic_U_straight ] };
- key <LatC> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
- key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
- key <LatV> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
- key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
- key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
- key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
- key <LatH> { [ Cyrillic_en_descender, Cyrillic_EN_descender ] };
- key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <LatY> { [ Cyrillic_yeru, Cyrillic_YERU ] };
- key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
- key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
- key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <LatI> { [ Cyrillic_i, Cyrillic_I ] };
- key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
- key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
- key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
-
-};
+// Kirghiz (aka Kyrgyz) Standard Keyboard
+//
+// Standard - Phonetic
+// ______________- ________________
+// ё1234567890өң ё1234567890яю
+// Ё!"№;%:?*()ӨҢ Ё!"№;%:?-()ЯЮ
+//
+// йцукенгшщзхъү өүертыуиопчшъ
+// фывапролджэ асдфгңйклэь
+// ячсмитьбю.(,) зхжвбнмцщ.(,)
+
+// Authors:
+// Timur Jamakeev <ztimur [at] gmail.com>
+// Ilyas Bakirov <just_ilyas [at] yahoo.com>
+// Yury Fedorov <yury-fedorov [at] prime-task.com>
+// Emil Asanov <a7 [at] on.kg>
+// Ulan Melisbek <ulan.melisbek [at] gmail.com>
+
+
+// Kyrgyz standard keyboard
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ name[Group1]= "Kyrgyzstan";
+
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, quotedbl ] };
+ key <AE03> { [ 3, numerosign ] };
+ key <AE04> { [ 4, semicolon ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, colon ] };
+ key <AE07> { [ 7, question ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ Cyrillic_o_bar, Cyrillic_O_bar ] };
+ key <AE12> { [ Cyrillic_en_descender, Cyrillic_EN_descender ] };
+ key <BKSL> { [ Cyrillic_u_straight, Cyrillic_U_straight ] };
+ key <AB10> { [ period, comma ] };
+ key <LSGT> { [ slash, bar ] };
+
+ key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] };
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
+ key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <AC04> { [ Cyrillic_a, Cyrillic_A ] };
+ key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O ] };
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AC11> { [ Cyrillic_e, Cyrillic_E ] };
+ key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
+};
+
+// Kyrgyz phonetic layout
+partial alphanumeric_keys
+xkb_symbols "phonetic" {
+
+ name[Group1]="Kyrgyzstan - Phonetic";
+
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, quotedbl ] };
+ key <AE03> { [ 3, numerosign ] };
+ key <AE04> { [ 4, semicolon ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, colon ] };
+ key <AE07> { [ 7, question ] };
+ key <AE08> { [ 8, minus ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <AE12> { [ Cyrillic_yu, Cyrillic_YU ] };
+
+ key <AD11> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AD12> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <BKSL> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
+ key <AB09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <AB10> { [ period, comma ] };
+ key <AB08> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AC10> { [ Cyrillic_e, Cyrillic_E ] };
+ key <AC11> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] };
+
+ key <LatQ> { [ Cyrillic_o_bar, Cyrillic_O_bar ] };
+ key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
+ key <LatW> { [ Cyrillic_u_straight, Cyrillic_U_straight ] };
+ key <LatC> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <LatV> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <LatH> { [ Cyrillic_en_descender, Cyrillic_EN_descender ] };
+ key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <LatY> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
+ key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <LatI> { [ Cyrillic_i, Cyrillic_I ] };
+ key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
+ key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
+
+};
diff --git a/xorg-server/xkeyboard-config/symbols/kh b/xorg-server/xkeyboard-config/symbols/kh
index a97eb4420..7fb5b74df 100644
--- a/xorg-server/xkeyboard-config/symbols/kh
+++ b/xorg-server/xkeyboard-config/symbols/kh
@@ -1,114 +1,113 @@
-// $XKeyboardConfig$
-//
-// khmer unicode keyboard for XFree86 4.3 or XOrg
-// (might work with older versions, not tested)
-//
-// layout defined by National Information Communications Technology Development Authority (NiDA)
-// http://www.nida.gov.kh
-//
-// version: 1.0.1
-//
-// date: 14.09.2005
-//
-// author: Jens Herden (jens at khmeros.info)
-//
-//
-// understanding the symbols:
-//
-// 0x100yyyy = unicode, yyyy is hexcode
-// codes that are not assigned in unicode (0x10017fb-0x10017ff),
-// are used to make compositions for special vowels
-//
-// voidsymbol = no symbol for this combination
-//
-// all other symbol are defined in: /usr/X11/include/X11/keysymdef.h
-// but with a leading 'XK_'
-//
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
- name[Group1]= "Cambodia";
-
-// there are four levels defined:
-//
-// normal shift right-alt right-alt + shift
-//
-
-// keys: `1234567890-=\
- key <TLDE> { [ guillemotleft, guillemotright, 0x100200d, voidsymbol ] };
- key <AE01> { [ 0x10017e1, exclam, 0x100200c, 0x10017f1 ] };
- key <AE02> { [ 0x10017e2, 0x10017d7, at, 0x10017f2 ] };
- key <AE03> { [ 0x10017e3, quotedbl, 0x10017d1, 0x10017f3 ] };
- key <AE04> { [ 0x10017e4, 0x10017db, dollar, 0x10017f4 ] };
- key <AE05> { [ 0x10017e5, percent, EuroSign, 0x10017f5 ] };
- key <AE06> { [ 0x10017e6, 0x10017cd, 0x10017d9, 0x10017f6 ] };
- key <AE07> { [ 0x10017e7, 0x10017d0, 0x10017da, 0x10017f7 ] };
- key <AE08> { [ 0x10017e8, 0x10017cf, asterisk, 0x10017f8 ] };
- key <AE09> { [ 0x10017e9, parenleft, braceleft, 0x10017f9 ] };
- key <AE10> { [ 0x10017e0, parenright, braceright, 0x10017f0 ] };
- key <AE11> { [ 0x10017a5, 0x10017cc, x, voidsymbol ] };
- key <AE12> { [ 0x10017b2, equal, 0x10017ce, voidsymbol ] };
- key <BKSL> { [ 0x10017ae, 0x10017ad, backslash, voidsymbol ] };
-
-// keys: qwertyuiop[]
- key <AD01> { [ 0x1001786, 0x1001788, 0x10017dc, 0x10019e0 ] };
- key <AD02> { [ 0x10017b9, 0x10017ba, 0x10017dd, 0x10019e1 ] };
- key <AD03> { [ 0x10017c1, 0x10017c2, 0x10017af, 0x10019e2 ] };
- key <AD04> { [ 0x100179a, 0x10017ac, 0x10017ab, 0x10019e3 ] };
- key <AD05> { [ 0x100178f, 0x1001791, 0x10017a8, 0x10019e4 ] };
- key <AD06> { [ 0x1001799, 0x10017bd, voidsymbol, 0x10019e5 ] };
- key <AD07> { [ 0x10017bb, 0x10017bc, voidsymbol, 0x10019e6 ] };
- key <AD08> { [ 0x10017b7, 0x10017b8, 0x10017a6, 0x10019e7 ] };
- key <AD09> { [ 0x10017c4, 0x10017c5, 0x10017b1, 0x10019e8 ] };
- key <AD10> { [ 0x1001795, 0x1001797, 0x10017b0, 0x10019e9 ] };
- key <AD11> { [ 0x10017c0, 0x10017bf, 0x10017a9, 0x10019ea ] };
- key <AD12> { [ 0x10017aa, 0x10017a7, 0x10017b3, 0x10019eb ] };
-
-// keys: asdfghjkl;'
- key <AC01> { [ 0x10017b6, 0x10017ff, voidsymbol, 0x10019ec ] };
- key <AC02> { [ 0x100179f, 0x10017c3, voidsymbol, 0x10019ed ] };
- key <AC03> { [ 0x100178a, 0x100178c, voidsymbol, 0x10019ee ] };
- key <AC04> { [ 0x1001790, 0x1001792, voidsymbol, 0x10019ef ] };
- key <AC05> { [ 0x1001784, 0x10017a2, voidsymbol, 0x10019f0 ] };
- key <AC06> { [ 0x10017a0, 0x10017c7, voidsymbol, 0x10019f1 ] };
- key <AC07> { [ 0x10017d2, 0x1001789, voidsymbol, 0x10019f2 ] };
- key <AC08> { [ 0x1001780, 0x1001782, 0x100179d, 0x10019f3 ] };
- key <AC09> { [ 0x100179b, 0x10017a1, voidsymbol, 0x10019f4 ] };
- key <AC10> { [ 0x10017be, 0x10017fe, 0x10017d6, 0x10019f5 ] };
- key <AC11> { [ 0x10017cb, 0x10017c9, 0x10017c8, 0x10019f6 ] };
-
-// keys: zxcvbnm,./
- key <AB01> { [ 0x100178b, 0x100178d, voidsymbol, 0x10019f7 ] };
- key <AB02> { [ 0x1001781, 0x1001783, voidsymbol, 0x10019f8 ] };
- key <AB03> { [ 0x1001785, 0x1001787, voidsymbol, 0x10019f9 ] };
- key <AB04> { [ 0x100179c, 0x10017fd, voidsymbol, 0x10019fa ] };
- key <AB05> { [ 0x1001794, 0x1001796, 0x100179e, 0x10019fb ] };
- key <AB06> { [ 0x1001793, 0x100178e, voidsymbol, 0x10019fc ] };
- key <AB07> { [ 0x1001798, 0x10017c6, voidsymbol, 0x10019fd ] };
- key <AB08> { [ 0x10017fc, 0x10017fb, comma, 0x10019fe ] };
- key <AB09> { [ 0x10017d4, 0x10017d5, period, 0x10019ff ] };
- key <AB10> { [ 0x10017ca, question, slash, voidsymbol ] };
-
- key <SPCE> { [ 0x100200b, space, 0x10000a0, voidsymbol ] };
- key <RALT> { [ Alt_R ] };
-
-// third level with right-Alt
- include "level3(ralt_switch)"
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "olpc" {
- include "kh(basic)"
-
-// Contact Walter@laptop.org
-
- key <AC10> { [ 0x10017be, 0x10017c8, 0x10017d6, 0x10019f5 ] };
- key <AE01> { [ 0x10017e1, 0x100200c, exclam, 0x10017f1 ] };
- key <AE03> { [ 0x10017e3, 0x10017d1, quotedbl, 0x10017f3 ] };
- key <AE05> { [ 0x10017e5, EuroSign, percent, 0x10017f5 ] };
- key <AE12> { [ 0x10017b2, 0x10017ce, equal, voidsymbol ] };
-
- //language key
- include "group(olpc)"
-};
+//
+// khmer unicode keyboard for XFree86 4.3 or XOrg
+// (might work with older versions, not tested)
+//
+// layout defined by National Information Communications Technology Development Authority (NiDA)
+// http://www.nida.gov.kh
+//
+// version: 1.0.1
+//
+// date: 14.09.2005
+//
+// author: Jens Herden (jens at khmeros.info)
+//
+//
+// understanding the symbols:
+//
+// 0x100yyyy = unicode, yyyy is hexcode
+// codes that are not assigned in unicode (0x10017fb-0x10017ff),
+// are used to make compositions for special vowels
+//
+// voidsymbol = no symbol for this combination
+//
+// all other symbol are defined in: /usr/X11/include/X11/keysymdef.h
+// but with a leading 'XK_'
+//
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ name[Group1]= "Cambodia";
+
+// there are four levels defined:
+//
+// normal shift right-alt right-alt + shift
+//
+
+// keys: `1234567890-=\
+ key <TLDE> { [ guillemotleft, guillemotright, 0x100200d, voidsymbol ] };
+ key <AE01> { [ 0x10017e1, exclam, 0x100200c, 0x10017f1 ] };
+ key <AE02> { [ 0x10017e2, 0x10017d7, at, 0x10017f2 ] };
+ key <AE03> { [ 0x10017e3, quotedbl, 0x10017d1, 0x10017f3 ] };
+ key <AE04> { [ 0x10017e4, 0x10017db, dollar, 0x10017f4 ] };
+ key <AE05> { [ 0x10017e5, percent, EuroSign, 0x10017f5 ] };
+ key <AE06> { [ 0x10017e6, 0x10017cd, 0x10017d9, 0x10017f6 ] };
+ key <AE07> { [ 0x10017e7, 0x10017d0, 0x10017da, 0x10017f7 ] };
+ key <AE08> { [ 0x10017e8, 0x10017cf, asterisk, 0x10017f8 ] };
+ key <AE09> { [ 0x10017e9, parenleft, braceleft, 0x10017f9 ] };
+ key <AE10> { [ 0x10017e0, parenright, braceright, 0x10017f0 ] };
+ key <AE11> { [ 0x10017a5, 0x10017cc, x, voidsymbol ] };
+ key <AE12> { [ 0x10017b2, equal, 0x10017ce, voidsymbol ] };
+ key <BKSL> { [ 0x10017ae, 0x10017ad, backslash, voidsymbol ] };
+
+// keys: qwertyuiop[]
+ key <AD01> { [ 0x1001786, 0x1001788, 0x10017dc, 0x10019e0 ] };
+ key <AD02> { [ 0x10017b9, 0x10017ba, 0x10017dd, 0x10019e1 ] };
+ key <AD03> { [ 0x10017c1, 0x10017c2, 0x10017af, 0x10019e2 ] };
+ key <AD04> { [ 0x100179a, 0x10017ac, 0x10017ab, 0x10019e3 ] };
+ key <AD05> { [ 0x100178f, 0x1001791, 0x10017a8, 0x10019e4 ] };
+ key <AD06> { [ 0x1001799, 0x10017bd, voidsymbol, 0x10019e5 ] };
+ key <AD07> { [ 0x10017bb, 0x10017bc, voidsymbol, 0x10019e6 ] };
+ key <AD08> { [ 0x10017b7, 0x10017b8, 0x10017a6, 0x10019e7 ] };
+ key <AD09> { [ 0x10017c4, 0x10017c5, 0x10017b1, 0x10019e8 ] };
+ key <AD10> { [ 0x1001795, 0x1001797, 0x10017b0, 0x10019e9 ] };
+ key <AD11> { [ 0x10017c0, 0x10017bf, 0x10017a9, 0x10019ea ] };
+ key <AD12> { [ 0x10017aa, 0x10017a7, 0x10017b3, 0x10019eb ] };
+
+// keys: asdfghjkl;'
+ key <AC01> { [ 0x10017b6, 0x10017ff, voidsymbol, 0x10019ec ] };
+ key <AC02> { [ 0x100179f, 0x10017c3, voidsymbol, 0x10019ed ] };
+ key <AC03> { [ 0x100178a, 0x100178c, voidsymbol, 0x10019ee ] };
+ key <AC04> { [ 0x1001790, 0x1001792, voidsymbol, 0x10019ef ] };
+ key <AC05> { [ 0x1001784, 0x10017a2, voidsymbol, 0x10019f0 ] };
+ key <AC06> { [ 0x10017a0, 0x10017c7, voidsymbol, 0x10019f1 ] };
+ key <AC07> { [ 0x10017d2, 0x1001789, voidsymbol, 0x10019f2 ] };
+ key <AC08> { [ 0x1001780, 0x1001782, 0x100179d, 0x10019f3 ] };
+ key <AC09> { [ 0x100179b, 0x10017a1, voidsymbol, 0x10019f4 ] };
+ key <AC10> { [ 0x10017be, 0x10017fe, 0x10017d6, 0x10019f5 ] };
+ key <AC11> { [ 0x10017cb, 0x10017c9, 0x10017c8, 0x10019f6 ] };
+
+// keys: zxcvbnm,./
+ key <AB01> { [ 0x100178b, 0x100178d, voidsymbol, 0x10019f7 ] };
+ key <AB02> { [ 0x1001781, 0x1001783, voidsymbol, 0x10019f8 ] };
+ key <AB03> { [ 0x1001785, 0x1001787, voidsymbol, 0x10019f9 ] };
+ key <AB04> { [ 0x100179c, 0x10017fd, voidsymbol, 0x10019fa ] };
+ key <AB05> { [ 0x1001794, 0x1001796, 0x100179e, 0x10019fb ] };
+ key <AB06> { [ 0x1001793, 0x100178e, voidsymbol, 0x10019fc ] };
+ key <AB07> { [ 0x1001798, 0x10017c6, voidsymbol, 0x10019fd ] };
+ key <AB08> { [ 0x10017fc, 0x10017fb, comma, 0x10019fe ] };
+ key <AB09> { [ 0x10017d4, 0x10017d5, period, 0x10019ff ] };
+ key <AB10> { [ 0x10017ca, question, slash, voidsymbol ] };
+
+ key <SPCE> { [ 0x100200b, space, 0x10000a0, voidsymbol ] };
+ key <RALT> { [ Alt_R ] };
+
+// third level with right-Alt
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "olpc" {
+ include "kh(basic)"
+
+// Contact Walter@laptop.org
+
+ key <AC10> { [ 0x10017be, 0x10017c8, 0x10017d6, 0x10019f5 ] };
+ key <AE01> { [ 0x10017e1, 0x100200c, exclam, 0x10017f1 ] };
+ key <AE03> { [ 0x10017e3, 0x10017d1, quotedbl, 0x10017f3 ] };
+ key <AE05> { [ 0x10017e5, EuroSign, percent, 0x10017f5 ] };
+ key <AE12> { [ 0x10017b2, 0x10017ce, equal, voidsymbol ] };
+
+ //language key
+ include "group(olpc)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/kpdl b/xorg-server/xkeyboard-config/symbols/kpdl
index a8bdfb7f9..1e4a537a9 100644
--- a/xorg-server/xkeyboard-config/symbols/kpdl
+++ b/xorg-server/xkeyboard-config/symbols/kpdl
@@ -1,105 +1,102 @@
-// $XKeyboardConfig$
-// $Xorg: keypad,v 1.3 2000/08/17 19:54:43 cpqbld Exp $
-
-// The <KPDL> key is a mess.
-// It was probably originally meant to be a decimal separator.
-// Except since it was declared by USA people it didn't use the original
-// SI separator "," but a "." (since then the USA managed to f-up the SI
-// by making "." an accepted alternative, but standards still use "," as
-// default)
-// As a result users of SI-abiding countries expect either a "." or a ","
-// or a "decimal_separator" which may or may not be translated in one of the
-// above depending on applications.
-// It's not possible to define a default per-country since user expectations
-// depend on the conflicting choices of their most-used applications,
-// operating system, etc. Therefore it needs to be a configuration setting
-// Copyright © 2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
-
-
-// Legacy <KPDL> #1
-// This assumes KP_Decimal will be translated in a dot
-partial keypad_keys
-xkb_symbols "dot" {
-
- key.type[Group1]="KEYPAD" ;
-
- key <KPDL> { [ KP_Delete, KP_Decimal ] }; // <delete> <separator>
-};
-
-
-// Legacy <KPDL> #2
-// This assumes KP_Separator will be translated in a comma
-partial keypad_keys
-xkb_symbols "comma" {
-
- key.type[Group1]="KEYPAD" ;
-
- key <KPDL> { [ KP_Delete, KP_Separator ] }; // <delete> <separator>
-};
-
-
-// Period <KPDL>, usual keyboard serigraphy in most countries
-partial keypad_keys
-xkb_symbols "dotoss" {
-
- key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
-
- key <KPDL> { [ KP_Delete, period, comma, 0x100202F ] }; // <delete> . , ⍽ (narrow no-break space)
-};
-
-
-// Period <KPDL>, usual keyboard serigraphy in most countries, latin-9 restriction
-partial keypad_keys
-xkb_symbols "dotoss_latin9" {
-
- key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
-
- key <KPDL> { [ KP_Delete, period, comma, nobreakspace ] }; // <delete> . , ⍽ (no-break space)
-};
-
-
-// Comma <KPDL>, what most non anglo-saxon people consider the real separator
-partial keypad_keys
-xkb_symbols "commaoss" {
-
- key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
-
- key <KPDL> { [ KP_Delete, comma, period, 0x100202F ] }; // <delete> , . ⍽ (narrow no-break space)
-};
-
-
-// Momayyez <KPDL>: Bahrain, Iran, Iraq, Kuwait, Oman, Qatar, Saudi Arabia, Syria, UAE
-partial keypad_keys
-xkb_symbols "momayyezoss" {
-
- key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
-
- key <KPDL> { [ KP_Delete, 0x100066B, comma, 0x100202F ] }; // <delete> ? , ⍽ (narrow no-break space)
-};
-
-
-// Abstracted <KPDL>, pray everything will work out (it usually does not)
-partial keypad_keys
-xkb_symbols "kposs" {
-
- key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
-
- key <KPDL> { [ KP_Delete, KP_Decimal, KP_Separator, 0x100202F ] }; // <delete> ? ? ⍽ (narrow no-break space)
-};
-
-// Spreadsheets may be configured to use the dot as decimal
-// punctuation, comma as a thousands separator and then semi-colon as
-// the list separator. Of these, dot and semi-colon is most important
-// when entering data by the keyboard; the comma can then be inferred
-// and added to the presentation afterwards. Using semi-colon as a
-// general separator may in fact be preferred to avoid ambiguities
-// in data files. Most times a decimal separator is hard-coded, it
-// seems to be period, probably since this is the syntax used in
-// (most) programming languages.
-partial keypad_keys
-xkb_symbols "semi" {
-
- key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
-
- key <KPDL> { [ NoSymbol, NoSymbol, semicolon ] };
-};
+// The <KPDL> key is a mess.
+// It was probably originally meant to be a decimal separator.
+// Except since it was declared by USA people it didn't use the original
+// SI separator "," but a "." (since then the USA managed to f-up the SI
+// by making "." an accepted alternative, but standards still use "," as
+// default)
+// As a result users of SI-abiding countries expect either a "." or a ","
+// or a "decimal_separator" which may or may not be translated in one of the
+// above depending on applications.
+// It's not possible to define a default per-country since user expectations
+// depend on the conflicting choices of their most-used applications,
+// operating system, etc. Therefore it needs to be a configuration setting
+// Copyright © 2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+
+
+// Legacy <KPDL> #1
+// This assumes KP_Decimal will be translated in a dot
+partial keypad_keys
+xkb_symbols "dot" {
+
+ key.type[Group1]="KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, KP_Decimal ] }; // <delete> <separator>
+};
+
+
+// Legacy <KPDL> #2
+// This assumes KP_Separator will be translated in a comma
+partial keypad_keys
+xkb_symbols "comma" {
+
+ key.type[Group1]="KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, KP_Separator ] }; // <delete> <separator>
+};
+
+
+// Period <KPDL>, usual keyboard serigraphy in most countries
+partial keypad_keys
+xkb_symbols "dotoss" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, period, comma, 0x100202F ] }; // <delete> . , ⍽ (narrow no-break space)
+};
+
+
+// Period <KPDL>, usual keyboard serigraphy in most countries, latin-9 restriction
+partial keypad_keys
+xkb_symbols "dotoss_latin9" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, period, comma, nobreakspace ] }; // <delete> . , ⍽ (no-break space)
+};
+
+
+// Comma <KPDL>, what most non anglo-saxon people consider the real separator
+partial keypad_keys
+xkb_symbols "commaoss" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, comma, period, 0x100202F ] }; // <delete> , . ⍽ (narrow no-break space)
+};
+
+
+// Momayyez <KPDL>: Bahrain, Iran, Iraq, Kuwait, Oman, Qatar, Saudi Arabia, Syria, UAE
+partial keypad_keys
+xkb_symbols "momayyezoss" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, 0x100066B, comma, 0x100202F ] }; // <delete> ? , ⍽ (narrow no-break space)
+};
+
+
+// Abstracted <KPDL>, pray everything will work out (it usually does not)
+partial keypad_keys
+xkb_symbols "kposs" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, KP_Decimal, KP_Separator, 0x100202F ] }; // <delete> ? ? ⍽ (narrow no-break space)
+};
+
+// Spreadsheets may be configured to use the dot as decimal
+// punctuation, comma as a thousands separator and then semi-colon as
+// the list separator. Of these, dot and semi-colon is most important
+// when entering data by the keyboard; the comma can then be inferred
+// and added to the presentation afterwards. Using semi-colon as a
+// general separator may in fact be preferred to avoid ambiguities
+// in data files. Most times a decimal separator is hard-coded, it
+// seems to be period, probably since this is the syntax used in
+// (most) programming languages.
+partial keypad_keys
+xkb_symbols "semi" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KPDL> { [ NoSymbol, NoSymbol, semicolon ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/kr b/xorg-server/xkeyboard-config/symbols/kr
index 4c2fa9673..013c5c101 100644
--- a/xorg-server/xkeyboard-config/symbols/kr
+++ b/xorg-server/xkeyboard-config/symbols/kr
@@ -1,30 +1,26 @@
-// $XKeyboardConfig$
-//
-
-default alphanumeric_keys
-xkb_symbols "kr106" {
- include "us"
- name[Group1]= "Korea, Republic of";
- include "kr(koreankeys)"
-};
-
-alphanumeric_keys
-xkb_symbols "kr104" {
- include "us"
- name[Group1]= "Korea, Republic of - 101/104 key Compatible";
- include "kr(koreankeys)"
- include "kr(koreankeys_raltctl)"
-};
-
-partial hidden function_keys
-xkb_symbols "koreankeys" {
- key <K72> { [ Hangul ] };
- key <K71> { [ Hangul_Hanja ] };
-};
-
-partial hidden function_keys
-xkb_symbols "koreankeys_raltctl" {
- key <RALT> { [ Hangul ] };
- key <RCTL> { [ Hangul_Hanja ] };
-};
-
+default alphanumeric_keys
+xkb_symbols "kr106" {
+ include "us"
+ name[Group1]= "Korea, Republic of";
+ include "kr(koreankeys)"
+};
+
+alphanumeric_keys
+xkb_symbols "kr104" {
+ include "us"
+ name[Group1]= "Korea, Republic of - 101/104 key Compatible";
+ include "kr(koreankeys)"
+ include "kr(koreankeys_raltctl)"
+};
+
+partial hidden function_keys
+xkb_symbols "koreankeys" {
+ key <K72> { [ Hangul ] };
+ key <K71> { [ Hangul_Hanja ] };
+};
+
+partial hidden function_keys
+xkb_symbols "koreankeys_raltctl" {
+ key <RALT> { [ Hangul ] };
+ key <RCTL> { [ Hangul_Hanja ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/kz b/xorg-server/xkeyboard-config/symbols/kz
index 55bbb1f66..1110cc4ad 100644
--- a/xorg-server/xkeyboard-config/symbols/kz
+++ b/xorg-server/xkeyboard-config/symbols/kz
@@ -1,218 +1,215 @@
-// $XKeyboardConfig$
-
-// Based on http://www.sci.kz/~sairan/keyboard/kzkbd.html
-// Baurzhan Ismagulov <ibr@radix50.net>
-//
-// $XFree86: xc/programs/xkbcomp/symbols/pc/ru,v 1.4 2003/05/05 12:11:10 pascal Exp $
-
-// TODO:
-// 1. AltGr with TLDE and LSGT.
-// 2. Dead key for ruskaz and kazrus.
-// 3. Ctrl + <key>.
-// 4. Alt-Tab.
-
-// RST KazSSR 903-90
-// levels 3 and 4 are non-standard extensions
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- name[Group1] = "Kazakhstan";
-
-key.type[group1] = "FOUR_LEVEL";
-
- key <TLDE> { [ parenleft, parenright, Cyrillic_io, Cyrillic_IO ] };
- key <AE01> { [ doublelowquotemark, exclam ] };
- key <AE06> { [ comma, semicolon ] };
- key <AE07> { [ period, colon ] };
- key <BKSL> { [ backslash, slash ] };
- key <AB10> { [ numerosign, question ] };
- key <LSGT> { [ less, greater, bar, brokenbar ] };
-
-key.type[group1] = "ALPHABETIC";
-
- key <AE02> { [ Cyrillic_schwa, Cyrillic_SCHWA ] };
- key <AE03> { [ Ukrainian_i, Ukrainian_I ] };
- key <AE04> { [ Cyrillic_en_descender, Cyrillic_EN_descender ] };
- key <AE05> { [ Cyrillic_ghe_bar, Cyrillic_GHE_bar ] };
- key <AE08> { [ Cyrillic_u_straight, Cyrillic_U_straight ] };
- key <AE09> { [ Cyrillic_u_straight_bar, Cyrillic_U_straight_bar ] };
- key <AE10> { [ Cyrillic_ka_descender, Cyrillic_KA_descender ] };
- key <AE11> { [ Cyrillic_o_bar, Cyrillic_O_bar ] };
- key <AE12> { [ Cyrillic_shha, Cyrillic_SHHA ] };
-
- key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <AD03> { [ Cyrillic_u, Cyrillic_U ] };
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] };
- key <AD06> { [ Cyrillic_en, Cyrillic_EN ] };
- key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
- key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] };
- key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <AC04> { [ Cyrillic_a, Cyrillic_A ] };
- key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
- key <AC07> { [ Cyrillic_o, Cyrillic_O ] };
- key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
- key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
- key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <AC11> { [ Cyrillic_e, Cyrillic_E ] };
- key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
- key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
- key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
- key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
- key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
- key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
- key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
- key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
-
-key.type[group1]="TWO_LEVEL";
-};
-
-// Kikkarin KZ1
-partial alphanumeric_keys
-xkb_symbols "ruskaz" {
-
- name[Group1] = "Kazakhstan - Russian with Kazakh";
-
-key.type[group1] = "FOUR_LEVEL";
-
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, quotedbl, at ] };
- key <AE03> { [ 3, numerosign, numbersign ] };
- key <AE04> { [ 4, semicolon, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, colon, asciicircum ] };
- key <AE07> { [ 7, question, ampersand ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
- key <BKSL> { [ backslash, slash, bar ] };
- key <AB10> { [ period, comma, slash, question ] };
- key <LSGT> { [ less, greater, bar, brokenbar ] };
-
-key.type[group1] = "FOUR_LEVEL_ALPHABETIC";
-
- key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] };
- key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, Cyrillic_u_straight_bar, Cyrillic_U_straight_bar ] };
- key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <AD03> { [ Cyrillic_u, Cyrillic_U, Cyrillic_u_straight, Cyrillic_U_straight ] };
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA, Cyrillic_ka_descender, Cyrillic_KA_descender ] };
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] };
- key <AD06> { [ Cyrillic_en, Cyrillic_EN, Cyrillic_en_descender, Cyrillic_EN_descender ] };
- key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, Cyrillic_ghe_bar, Cyrillic_GHE_bar ] };
- key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <AD11> { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_shha, Cyrillic_SHHA ] };
- key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
- key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] };
- key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <AC04> { [ Cyrillic_a, Cyrillic_A, Cyrillic_schwa, Cyrillic_SCHWA ] };
- key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
- key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_o_bar, Cyrillic_O_bar ] };
- key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
- key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
- key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <AC11> { [ Cyrillic_e, Cyrillic_E ] };
- key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
- key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
- key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
- key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
- key <AB05> { [ Cyrillic_i, Cyrillic_I, Ukrainian_i, Ukrainian_I ] };
- key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
- key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
- key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
-};
-
-// Kikkarin KZ2
-partial alphanumeric_keys
-xkb_symbols "kazrus" {
-
- name[Group1] = "Kazakhstan - Kazakh with Russian";
-
-key.type[group1] = "FOUR_LEVEL";
-
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, quotedbl, at ] };
- key <AE03> { [ 3, numerosign, numbersign ] };
- key <AE04> { [ 4, semicolon, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, colon, asciicircum ] };
- key <AE07> { [ 7, question, ampersand ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
- key <BKSL> { [ backslash, slash, bar ] };
- key <AB10> { [ period, comma, slash, question ] };
- key <LSGT> { [ less, greater, bar, brokenbar ] };
-
-key.type[group1] = "FOUR_LEVEL_ALPHABETIC";
-
- key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] };
- key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <AD02> { [ Cyrillic_en_descender, Cyrillic_EN_descender, Cyrillic_tse, Cyrillic_TSE ] };
- key <AD03> { [ Cyrillic_u, Cyrillic_U ] };
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA, Cyrillic_ka_descender, Cyrillic_KA_descender ] };
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] };
- key <AD06> { [ Cyrillic_en, Cyrillic_EN ] };
- key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AD09> { [ Cyrillic_ghe_bar, Cyrillic_GHE_bar, Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <AD11> { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_shha, Cyrillic_SHHA ] };
- key <AD12> { [ Cyrillic_u_straight_bar, Cyrillic_U_straight_bar, Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
- key <AC01> { [ Cyrillic_o_bar, Cyrillic_O_bar, Cyrillic_ef, Cyrillic_EF ] };
- key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] };
- key <AC03> { [ Cyrillic_ka_descender, Cyrillic_KA_descender, Cyrillic_ve, Cyrillic_VE ] };
- key <AC04> { [ Cyrillic_a, Cyrillic_A ] };
- key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
- key <AC07> { [ Cyrillic_o, Cyrillic_O ] };
- key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
- key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
- key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <AC11> { [ Cyrillic_schwa, Cyrillic_SCHWA, Cyrillic_e, Cyrillic_E ] };
- key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
- key <AB02> { [ Ukrainian_i, Ukrainian_I, Cyrillic_che, Cyrillic_CHE ] };
- key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
- key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
- key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
- key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
- key <AB07> { [ Cyrillic_u_straight, Cyrillic_U_straight, Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
- key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
- key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "olpc" {
-
-// Contact: Walter Bender <walter@laptop.org>
-
-// We moved the Cyrillic IO off of the Tilde Key as an Alt-GR character
-// and moved it onto the Backslash key, making Backslash and Bar available
-// through the Latin side of the keyboard.
-
- include "kz(basic)"
-
- name[Group1] = "Kazakhstan";
-
- key <TLDE> { [ parenleft, parenright ] };
- key <BKSL> { [ Cyrillic_io, Cyrillic_IO ] };
-
- include "group(olpc)"
-};
+// Based on http://www.sci.kz/~sairan/keyboard/kzkbd.html
+// Baurzhan Ismagulov <ibr@radix50.net>
+//
+
+// TODO:
+// 1. AltGr with TLDE and LSGT.
+// 2. Dead key for ruskaz and kazrus.
+// 3. Ctrl + <key>.
+// 4. Alt-Tab.
+
+// RST KazSSR 903-90
+// levels 3 and 4 are non-standard extensions
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ name[Group1] = "Kazakhstan";
+
+key.type[group1] = "FOUR_LEVEL";
+
+ key <TLDE> { [ parenleft, parenright, Cyrillic_io, Cyrillic_IO ] };
+ key <AE01> { [ doublelowquotemark, exclam ] };
+ key <AE06> { [ comma, semicolon ] };
+ key <AE07> { [ period, colon ] };
+ key <BKSL> { [ backslash, slash ] };
+ key <AB10> { [ numerosign, question ] };
+ key <LSGT> { [ less, greater, bar, brokenbar ] };
+
+key.type[group1] = "ALPHABETIC";
+
+ key <AE02> { [ Cyrillic_schwa, Cyrillic_SCHWA ] };
+ key <AE03> { [ Ukrainian_i, Ukrainian_I ] };
+ key <AE04> { [ Cyrillic_en_descender, Cyrillic_EN_descender ] };
+ key <AE05> { [ Cyrillic_ghe_bar, Cyrillic_GHE_bar ] };
+ key <AE08> { [ Cyrillic_u_straight, Cyrillic_U_straight ] };
+ key <AE09> { [ Cyrillic_u_straight_bar, Cyrillic_U_straight_bar ] };
+ key <AE10> { [ Cyrillic_ka_descender, Cyrillic_KA_descender ] };
+ key <AE11> { [ Cyrillic_o_bar, Cyrillic_O_bar ] };
+ key <AE12> { [ Cyrillic_shha, Cyrillic_SHHA ] };
+
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
+ key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <AC04> { [ Cyrillic_a, Cyrillic_A ] };
+ key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O ] };
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AC11> { [ Cyrillic_e, Cyrillic_E ] };
+ key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
+ key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
+
+key.type[group1]="TWO_LEVEL";
+};
+
+// Kikkarin KZ1
+partial alphanumeric_keys
+xkb_symbols "ruskaz" {
+
+ name[Group1] = "Kazakhstan - Russian with Kazakh";
+
+key.type[group1] = "FOUR_LEVEL";
+
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, quotedbl, at ] };
+ key <AE03> { [ 3, numerosign, numbersign ] };
+ key <AE04> { [ 4, semicolon, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, colon, asciicircum ] };
+ key <AE07> { [ 7, question, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+ key <BKSL> { [ backslash, slash, bar ] };
+ key <AB10> { [ period, comma, slash, question ] };
+ key <LSGT> { [ less, greater, bar, brokenbar ] };
+
+key.type[group1] = "FOUR_LEVEL_ALPHABETIC";
+
+ key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] };
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, Cyrillic_u_straight_bar, Cyrillic_U_straight_bar ] };
+ key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U, Cyrillic_u_straight, Cyrillic_U_straight ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA, Cyrillic_ka_descender, Cyrillic_KA_descender ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN, Cyrillic_en_descender, Cyrillic_EN_descender ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, Cyrillic_ghe_bar, Cyrillic_GHE_bar ] };
+ key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_shha, Cyrillic_SHHA ] };
+ key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
+ key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <AC04> { [ Cyrillic_a, Cyrillic_A, Cyrillic_schwa, Cyrillic_SCHWA ] };
+ key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_o_bar, Cyrillic_O_bar ] };
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AC11> { [ Cyrillic_e, Cyrillic_E ] };
+ key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <AB05> { [ Cyrillic_i, Cyrillic_I, Ukrainian_i, Ukrainian_I ] };
+ key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
+};
+
+// Kikkarin KZ2
+partial alphanumeric_keys
+xkb_symbols "kazrus" {
+
+ name[Group1] = "Kazakhstan - Kazakh with Russian";
+
+key.type[group1] = "FOUR_LEVEL";
+
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, quotedbl, at ] };
+ key <AE03> { [ 3, numerosign, numbersign ] };
+ key <AE04> { [ 4, semicolon, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, colon, asciicircum ] };
+ key <AE07> { [ 7, question, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+ key <BKSL> { [ backslash, slash, bar ] };
+ key <AB10> { [ period, comma, slash, question ] };
+ key <LSGT> { [ less, greater, bar, brokenbar ] };
+
+key.type[group1] = "FOUR_LEVEL_ALPHABETIC";
+
+ key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] };
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <AD02> { [ Cyrillic_en_descender, Cyrillic_EN_descender, Cyrillic_tse, Cyrillic_TSE ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA, Cyrillic_ka_descender, Cyrillic_KA_descender ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD09> { [ Cyrillic_ghe_bar, Cyrillic_GHE_bar, Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_shha, Cyrillic_SHHA ] };
+ key <AD12> { [ Cyrillic_u_straight_bar, Cyrillic_U_straight_bar, Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
+ key <AC01> { [ Cyrillic_o_bar, Cyrillic_O_bar, Cyrillic_ef, Cyrillic_EF ] };
+ key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <AC03> { [ Cyrillic_ka_descender, Cyrillic_KA_descender, Cyrillic_ve, Cyrillic_VE ] };
+ key <AC04> { [ Cyrillic_a, Cyrillic_A ] };
+ key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O ] };
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AC11> { [ Cyrillic_schwa, Cyrillic_SCHWA, Cyrillic_e, Cyrillic_E ] };
+ key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <AB02> { [ Ukrainian_i, Ukrainian_I, Cyrillic_che, Cyrillic_CHE ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
+ key <AB07> { [ Cyrillic_u_straight, Cyrillic_U_straight, Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "olpc" {
+
+// Contact: Walter Bender <walter@laptop.org>
+
+// We moved the Cyrillic IO off of the Tilde Key as an Alt-GR character
+// and moved it onto the Backslash key, making Backslash and Bar available
+// through the Latin side of the keyboard.
+
+ include "kz(basic)"
+
+ name[Group1] = "Kazakhstan";
+
+ key <TLDE> { [ parenleft, parenright ] };
+ key <BKSL> { [ Cyrillic_io, Cyrillic_IO ] };
+
+ include "group(olpc)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/la b/xorg-server/xkeyboard-config/symbols/la
index b050cc477..f893a0268 100644
--- a/xorg-server/xkeyboard-config/symbols/la
+++ b/xorg-server/xkeyboard-config/symbols/la
@@ -1,77 +1,150 @@
-// $XKeyboardConfig$
-
-// $XConsortium: lo 2002/11/28 $
-//
-// Lao keymap, by Anousak Souphavanh <anousak@muanglao.com>
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple US/ASCII
- // keyboard and a Lao keyboard
- // This keymap uses the Lao keyboard standard [kind of] widely used inLaos
-
- name[Group1]= "Laos";
-
- // Alphanumeric section
- key <TLDE> { [ 0x100200D ]};
- key <AE01> { [ 0x1000ea2, 0x1000ed1 ]};
- key <AE01> { [ 0x1000ea2, 0x1000ed1 ]};
- key <AE02> { [ 0x1000e9f, 0x1000ed2 ]};
- key <AE03> { [ 0x1000ec2, 0x1000ed3 ]};
- key <AE04> { [ 0x1000e96, 0x1000ed4 ]};
- key <AE05> { [ 0x1000eb8, 0x1000ecc ]};
- key <AE06> { [ 0x1000eb9, 0x1000ebc ]};
- key <AE07> { [ 0x1000e84, 0x1000ed5 ]};
- key <AE08> { [ 0x1000e95, 0x1000ed6 ]};
- key <AE09> { [ 0x1000e88, 0x1000ed7 ]};
- key <AE10> { [ 0x1000e82, 0x1000ed8 ]};
- key <AE11> { [ 0x1000e8a, 0x1000ed9 ]};
- key <AE12> { [ 0x1000ecd ]};
-
- key <AD01> { [ 0x1000ebb ]};
- key <AD02> { [ 0x1000ec4, 0x1000ed0 ]};
- key <AD03> { [ 0x1000eb3 ]};
- key <AD04> { [ 0x1000e9e, underscore ]};
- key <AD05> { [ 0x1000eb0, plus ]};
- key <AD06> { [ 0x1000eb4 ]};
- key <AD07> { [ 0x1000eb5 ]};
- key <AD08> { [ 0x1000ea3, 0x1000eae ]};
- key <AD09> { [ 0x1000e99 ]};
- key <AD10> { [ 0x1000e8d, 0x1000ebd ]};
- key <AD11> { [ 0x1000e9a, minus ]};
- key <AD12> { [ 0x1000ea5, braceright ]};
- key <BKSL> { [ 0x1000edc, 0x1000edd ]};
-
- key <AC01> { [ 0x1000eb1 ]};
- key <AC02> { [ 0x1000eab, semicolon ]};
- key <AC03> { [ 0x1000e81, period ]};
- key <AC04> { [ 0x1000e94, comma ]};
- key <AC05> { [ 0x1000ec0, colon ]};
- key <AC06> { [ 0x1000ec9, 0x1000eca ]};
- key <AC07> { [ 0x1000ec8, 0x1000ecb ]};
- key <AC08> { [ 0x1000eb2, exclam ]};
- key <AC09> { [ 0x1000eaa, question ]};
- key <AC10> { [ 0x1000ea7, percent ]};
- key <AC11> { [ 0x1000e87, equal ]};
-
- key <AB01> { [ 0x1000e9c, 0x10020ad ]};
- key <AB02> { [ 0x1000e9b, parenleft ]};
- key <AB03> { [ 0x1000ec1, 0x1000eaf ]};
- key <AB04> { [ 0x1000ead ]};
- key <AB05> { [ 0x1000eb6 ]};
- key <AB06> { [ 0x1000eb7 ]};
- key <AB07> { [ 0x1000e97, 0x1000ec6 ]};
- key <AB08> { [ 0x1000ea1, quoteleft ]};
- key <AB09> { [ 0x1000ec3, dollar ]};
- key <AB10> { [ 0x1000e9d, parenright ]};
-
-override key <LFSH> {
- type[Group1]="PC_ALT_LEVEL2",
- [ Shift_L, ISO_First_Group ]
- };
-override key <RTSH> {
- type[Group1]="PC_ALT_LEVEL2",
- [ Shift_R, ISO_Last_Group ]
- };
-};
+// Lao keymap, by Anousak Souphavanh <anousak@muanglao.com>
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple US/ASCII
+ // keyboard and a Lao keyboard
+ // This keymap uses the Lao keyboard standard [kind of] widely used inLaos
+
+ name[Group1]= "Laos";
+
+ // Alphanumeric section
+ key <TLDE> { [ 0x100200D ]};
+ key <AE01> { [ 0x1000ea2, 0x1000ed1 ]};
+ key <AE01> { [ 0x1000ea2, 0x1000ed1 ]};
+ key <AE02> { [ 0x1000e9f, 0x1000ed2 ]};
+ key <AE03> { [ 0x1000ec2, 0x1000ed3 ]};
+ key <AE04> { [ 0x1000e96, 0x1000ed4 ]};
+ key <AE05> { [ 0x1000eb8, 0x1000ecc ]};
+ key <AE06> { [ 0x1000eb9, 0x1000ebc ]};
+ key <AE07> { [ 0x1000e84, 0x1000ed5 ]};
+ key <AE08> { [ 0x1000e95, 0x1000ed6 ]};
+ key <AE09> { [ 0x1000e88, 0x1000ed7 ]};
+ key <AE10> { [ 0x1000e82, 0x1000ed8 ]};
+ key <AE11> { [ 0x1000e8a, 0x1000ed9 ]};
+ key <AE12> { [ 0x1000ecd ]};
+
+ key <AD01> { [ 0x1000ebb ]};
+ key <AD02> { [ 0x1000ec4, 0x1000ed0 ]};
+ key <AD03> { [ 0x1000eb3 ]};
+ key <AD04> { [ 0x1000e9e, underscore ]};
+ key <AD05> { [ 0x1000eb0, plus ]};
+ key <AD06> { [ 0x1000eb4 ]};
+ key <AD07> { [ 0x1000eb5 ]};
+ key <AD08> { [ 0x1000ea3, 0x1000eae ]};
+ key <AD09> { [ 0x1000e99 ]};
+ key <AD10> { [ 0x1000e8d, 0x1000ebd ]};
+ key <AD11> { [ 0x1000e9a, minus ]};
+ key <AD12> { [ 0x1000ea5, braceright ]};
+ key <BKSL> { [ 0x1000edc, 0x1000edd ]};
+
+ key <AC01> { [ 0x1000eb1 ]};
+ key <AC02> { [ 0x1000eab, semicolon ]};
+ key <AC03> { [ 0x1000e81, period ]};
+ key <AC04> { [ 0x1000e94, comma ]};
+ key <AC05> { [ 0x1000ec0, colon ]};
+ key <AC06> { [ 0x1000ec9, 0x1000eca ]};
+ key <AC07> { [ 0x1000ec8, 0x1000ecb ]};
+ key <AC08> { [ 0x1000eb2, exclam ]};
+ key <AC09> { [ 0x1000eaa, question ]};
+ key <AC10> { [ 0x1000ea7, percent ]};
+ key <AC11> { [ 0x1000e87, equal ]};
+
+ key <AB01> { [ 0x1000e9c, 0x10020ad ]};
+ key <AB02> { [ 0x1000e9b, parenleft ]};
+ key <AB03> { [ 0x1000ec1, 0x1000eaf ]};
+ key <AB04> { [ 0x1000ead ]};
+ key <AB05> { [ 0x1000eb6 ]};
+ key <AB06> { [ 0x1000eb7 ]};
+ key <AB07> { [ 0x1000e97, 0x1000ec6 ]};
+ key <AB08> { [ 0x1000ea1, quoteleft ]};
+ key <AB09> { [ 0x1000ec3, dollar ]};
+ key <AB10> { [ 0x1000e9d, parenright ]};
+
+override key <LFSH> {
+ type[Group1]="PC_ALT_LEVEL2",
+ [ Shift_L, ISO_First_Group ]
+ };
+override key <RTSH> {
+ type[Group1]="PC_ALT_LEVEL2",
+ [ Shift_R, ISO_Last_Group ]
+ };
+};
+
+partial
+xkb_symbols "stea" {
+
+ // Describes the differences between a very simple US/ASCII
+ // keyboard and a Lao keyboard
+ // This keymap uses the proposed Lao keyboard standard by the
+ // PAN Localization Project
+ // Science Technology and Environment Agency of Lao PDR
+ // National University Computer and Emergency Science of Pakistan
+ // International Development Research Center
+ // Caveat: assigning multiple codepoints to a single key doesn't
+ // work in XKB. Therefor the combining codepoint assignments
+ // have been omitted.
+
+
+ name[Group1]= "Laos - STEA (proposed standard layout)";
+
+ // Alphanumeric section
+ key <TLDE> { [ quotedbl, apostrophe ]};
+ key <AE01> { [ 0x1000ea2, 1, 0x1000ed1 ]};
+ key <AE02> { [ 0x1000e9f, 2, 0x1000ed2 ]};
+ key <AE03> { [ 0x1000ec2, 3, 0x1000ed3 ]};
+ key <AE04> { [ 0x1000e96, 4, 0x1000ed4 ]};
+ key <AE05> { [ 0x1000eb8, 0x1000ecc, 0x1000ed5 ]};
+ key <AE06> { [ 0x1000eb9, 0x1000ebc, 0x1000ed6 ]};
+ key <AE07> { [ 0x1000e84, 5, 0x1000ed7 ]};
+ key <AE08> { [ 0x1000e95, 6, 0x1000ed8 ]};
+ key <AE09> { [ 0x1000e88, 7, 0x1000ed9 ]};
+ key <AE10> { [ 0x1000e82, 8, 0x1000ed0 ]};
+ key <AE11> { [ 0x1000e8a, 9 ]};
+ key <AE12> { [ 0x1000ecd ]};
+
+ key <AD01> { [ 0x1000ebb ]};
+ key <AD02> { [ 0x1000ec4, 0 ]};
+ key <AD03> { [ 0x1000eb3, asterisk ]};
+ key <AD04> { [ 0x1000e9e, underscore ]};
+ key <AD05> { [ 0x1000eb0, plus ]};
+ key <AD06> { [ 0x1000eb4 ]};
+ key <AD07> { [ 0x1000eb5 ]};
+ key <AD08> { [ 0x1000eae, 0x1000ea3 ]};
+ key <AD09> { [ 0x1000e99, 0x1000edc ]};
+ key <AD10> { [ 0x1000e8d, 0x1000ebd ]};
+ key <AD11> { [ 0x1000e9a, minus ]};
+ key <AD12> { [ 0x1000ea5 ]};
+ key <BKSL> { [ slash, backslash ]};
+
+ key <AC01> { [ 0x1000eb1 ]};
+ key <AC02> { [ 0x1000eab, semicolon ]};
+ key <AC03> { [ 0x1000e81, period ]};
+ key <AC04> { [ 0x1000e94, comma ]};
+ key <AC05> { [ 0x1000ec0, colon ]};
+ key <AC06> { [ 0x1000ec9, 0x1000eca ]};
+ key <AC07> { [ 0x1000ec8, 0x1000ecb ]};
+ key <AC08> { [ 0x1000eb2, exclam ]};
+ key <AC09> { [ 0x1000eaa, question ]};
+ key <AC10> { [ 0x1000ea7, percent ]};
+ key <AC11> { [ 0x1000e87, equal ]};
+
+ key <AB01> { [ 0x1000e9c, 0x10020ad ]};
+ key <AB02> { [ 0x1000e9b, parenleft ]};
+ key <AB03> { [ 0x1000ec1, 0x1000eaf ]};
+ key <AB04> { [ 0x1000ead, x ]};
+ key <AB05> { [ 0x1000eb6 ]};
+ key <AB06> { [ 0x1000eb7 ]};
+ key <AB07> { [ 0x1000e97, 0x1000ec6 ]};
+ key <AB08> { [ 0x1000ea1, 0x1000edd ]};
+ key <AB09> { [ 0x1000ec3, dollar ]};
+ key <AB10> { [ 0x1000e9d, parenright ]};
+
+ key <SPCE> { [ space, nobreakspace, nobreakspace ]};
+
+ key <KPDL> { [ comma, period ]};
+
+ include "level3(ralt_switch)"
+
+};
diff --git a/xorg-server/xkeyboard-config/symbols/latam b/xorg-server/xkeyboard-config/symbols/latam
index ffd1ca8bc..de20f2109 100644
--- a/xorg-server/xkeyboard-config/symbols/latam
+++ b/xorg-server/xkeyboard-config/symbols/latam
@@ -1,9 +1,5 @@
-// $XKeyboardConfig$
-
// based on a keyboard
// Modified for a real Latin American Keyboard by Fabian Mandelbaum
-//
-// $XFree86: xc/programs/xkbcomp/symbols/la,v 1.2 2002/11/22 04:03:28 dawes Exp $
partial default alphanumeric_keys
xkb_symbols "basic" {
diff --git a/xorg-server/xkeyboard-config/symbols/latin b/xorg-server/xkeyboard-config/symbols/latin
index 1d8ebbeeb..e8cb03715 100644
--- a/xorg-server/xkeyboard-config/symbols/latin
+++ b/xorg-server/xkeyboard-config/symbols/latin
@@ -1,8 +1,4 @@
-// $XKeyboardConfig$
-
// Common Latin alphabet layout
-//
-// $XFree86: xc/programs/xkbcomp/symbols/latin,v 1.3 2002/12/20 20:18:34 paulo Exp $
default partial
xkb_symbols "basic" {
@@ -177,4 +173,3 @@ xkb_symbols "type4_nodeadkeys" {
key <AB10> { [ minus, underscore, dead_belowdot, abovedot ] };
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/level3 b/xorg-server/xkeyboard-config/symbols/level3
index 6c02d3ddf..20a19a72e 100644
--- a/xorg-server/xkeyboard-config/symbols/level3
+++ b/xorg-server/xkeyboard-config/symbols/level3
@@ -1,200 +1,196 @@
-// $XKeyboardConfig$
-
-// these variants assign various XKB keycodes to ISO_Level3_Shift so that
-// the third shift level can be reached
-//
-// $XFree86: xc/programs/xkbcomp/symbols/level3,v 1.7 2003/09/08 14:25:32 eich Exp $
-//
-
-// the default behavior is for the right Alt key (AltGr) to generate the
-// third engraved symbol
-default partial modifier_keys
-xkb_symbols "ralt_switch" {
- key <RALT> {
- type[Group1]="TWO_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-// Right Alt key never chooses 3rd level.
-// This option attempts to undo the effect of a layout's
-// including ralt_switch. You may also want to select another
-// level3 option that maps the level3 shift to some other key.
-partial modifier_keys
-xkb_symbols "ralt_alt" {
- key <RALT> {
- type[Group1]="TWO_LEVEL",
- type[Group2]="TWO_LEVEL",
- type[Group3]="TWO_LEVEL",
- type[Group4]="TWO_LEVEL",
- symbols[Group1] = [ Alt_R, Meta_R ],
- symbols[Group2] = [ Alt_R, Meta_R ],
- symbols[Group3] = [ Alt_R, Meta_R ],
- symbols[Group4] = [ Alt_R, Meta_R ]
- };
- modifier_map Mod1 { <RALT> };
-};
-
-partial modifier_keys
-xkb_symbols "ralt_switch_multikey" {
- key <RALT> {
- type[Group1]="TWO_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift, Multi_key ]
- };
-};
-
-// special case or right Alt switch - for use with grp:alts_toggle
-//
-partial hidden modifier_keys
-xkb_symbols "ralt_switch_for_alts_toggle" {
- virtual_modifiers LAlt, AlGr;
- key <LALT> {
- type[Group1]="PC_RALT_LEVEL2",
- symbols[Group1] = [ Alt_L, ISO_Prev_Group, ISO_Prev_Group ],
- virtualMods= LAlt
- };
- key <RALT> {
- type[Group1]="PC_ALT_LEVEL2",
- symbols[Group1] = [ ISO_Level3_Shift, ISO_Next_Group ],
- virtualMods= AltGr
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-// using the level(alt_switch) map, either Alt key temporarily chooses
-// the third shift level. (Mostly be used to imitate Mac OS functionality.)
-partial modifier_keys
-xkb_symbols "alt_switch" {
- include "level3(lalt_switch)"
- include "level3(ralt_switch)"
-};
-
-partial modifier_keys
-xkb_symbols "lalt_switch" {
- key <LALT> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { <LALT> };
-};
-
-// using the level(switch) map, the right Control key temporarily
-// chooses the third shift level (until it is released).
-partial modifier_keys
-xkb_symbols "switch" {
- key <RCTL> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-// using the level(menu_switch) map, the Menu key temporarily
-// chooses the third shift level (until it is released).
-partial modifier_keys
-xkb_symbols "menu_switch" {
- key <MENU> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-// using the level3(win_switch) map, the either Windows' logo key
-// temporarily chooses the third shift level.
-partial modifier_keys
-xkb_symbols "win_switch" {
- include "level3(lwin_switch)"
- include "level3(rwin_switch)"
-};
-
-// using the level3(lwin_switch) map, the left Windows' logo key
-// temporarily chooses the third shift level.
-partial modifier_keys
-xkb_symbols "lwin_switch" {
- key <LWIN> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-// using the level(rwin_switch) map, the right Windows' logo key
-// temporarily chooses the third shift level. If you use this map,
-// you should define your keyboard as pc101 or pc102 instead of pc104
-// or pc105.
-partial modifier_keys
-xkb_symbols "rwin_switch" {
- key <RWIN> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-// using the level3(enter_switch) map, the Enter key on the keypad
-// temporarily chooses the third shift level. This is especially
-// useful for Mac laptops which miss the right Alt key.
-partial modifier_keys
-xkb_symbols "enter_switch" {
- key <KPEN> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-partial modifier_keys
-xkb_symbols "caps_switch" {
- key <CAPS> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-partial modifier_keys
-xkb_symbols "bksl_switch" {
- key <BKSL> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-partial modifier_keys
-xkb_symbols "lsgt_switch" {
- key <LSGT> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-partial modifier_keys
-xkb_symbols "caps_switch_latch" {
- key <CAPS> {
- type[Group1]="THREE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-partial modifier_keys
-xkb_symbols "bksl_switch_latch" {
- key <BKSL> {
- type[Group1]="THREE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-partial modifier_keys
-xkb_symbols "lsgt_switch_latch" {
- key <LSGT> {
- type[Group1]="THREE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
+// these variants assign various XKB keycodes to ISO_Level3_Shift so that
+// the third shift level can be reached
+//
+
+// the default behavior is for the right Alt key (AltGr) to generate the
+// third engraved symbol
+default partial modifier_keys
+xkb_symbols "ralt_switch" {
+ key <RALT> {
+ type[Group1]="TWO_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+// Right Alt key never chooses 3rd level.
+// This option attempts to undo the effect of a layout's
+// including ralt_switch. You may also want to select another
+// level3 option that maps the level3 shift to some other key.
+partial modifier_keys
+xkb_symbols "ralt_alt" {
+ key <RALT> {
+ type[Group1]="TWO_LEVEL",
+ type[Group2]="TWO_LEVEL",
+ type[Group3]="TWO_LEVEL",
+ type[Group4]="TWO_LEVEL",
+ symbols[Group1] = [ Alt_R, Meta_R ],
+ symbols[Group2] = [ Alt_R, Meta_R ],
+ symbols[Group3] = [ Alt_R, Meta_R ],
+ symbols[Group4] = [ Alt_R, Meta_R ]
+ };
+ modifier_map Mod1 { <RALT> };
+};
+
+partial modifier_keys
+xkb_symbols "ralt_switch_multikey" {
+ key <RALT> {
+ type[Group1]="TWO_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift, Multi_key ]
+ };
+};
+
+// special case or right Alt switch - for use with grp:alts_toggle
+//
+partial hidden modifier_keys
+xkb_symbols "ralt_switch_for_alts_toggle" {
+ virtual_modifiers LAlt, AlGr;
+ key <LALT> {
+ type[Group1]="PC_RALT_LEVEL2",
+ symbols[Group1] = [ Alt_L, ISO_Prev_Group, ISO_Prev_Group ],
+ virtualMods= LAlt
+ };
+ key <RALT> {
+ type[Group1]="PC_ALT_LEVEL2",
+ symbols[Group1] = [ ISO_Level3_Shift, ISO_Next_Group ],
+ virtualMods= AltGr
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+// using the level(alt_switch) map, either Alt key temporarily chooses
+// the third shift level. (Mostly be used to imitate Mac OS functionality.)
+partial modifier_keys
+xkb_symbols "alt_switch" {
+ include "level3(lalt_switch)"
+ include "level3(ralt_switch)"
+};
+
+partial modifier_keys
+xkb_symbols "lalt_switch" {
+ key <LALT> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { <LALT> };
+};
+
+// using the level(switch) map, the right Control key temporarily
+// chooses the third shift level (until it is released).
+partial modifier_keys
+xkb_symbols "switch" {
+ key <RCTL> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+// using the level(menu_switch) map, the Menu key temporarily
+// chooses the third shift level (until it is released).
+partial modifier_keys
+xkb_symbols "menu_switch" {
+ key <MENU> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+// using the level3(win_switch) map, the either Windows' logo key
+// temporarily chooses the third shift level.
+partial modifier_keys
+xkb_symbols "win_switch" {
+ include "level3(lwin_switch)"
+ include "level3(rwin_switch)"
+};
+
+// using the level3(lwin_switch) map, the left Windows' logo key
+// temporarily chooses the third shift level.
+partial modifier_keys
+xkb_symbols "lwin_switch" {
+ key <LWIN> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+// using the level(rwin_switch) map, the right Windows' logo key
+// temporarily chooses the third shift level. If you use this map,
+// you should define your keyboard as pc101 or pc102 instead of pc104
+// or pc105.
+partial modifier_keys
+xkb_symbols "rwin_switch" {
+ key <RWIN> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+// using the level3(enter_switch) map, the Enter key on the keypad
+// temporarily chooses the third shift level. This is especially
+// useful for Mac laptops which miss the right Alt key.
+partial modifier_keys
+xkb_symbols "enter_switch" {
+ key <KPEN> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "caps_switch" {
+ key <CAPS> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "bksl_switch" {
+ key <BKSL> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "lsgt_switch" {
+ key <LSGT> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "caps_switch_latch" {
+ key <CAPS> {
+ type[Group1]="THREE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "bksl_switch_latch" {
+ key <BKSL> {
+ type[Group1]="THREE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "lsgt_switch_latch" {
+ key <LSGT> {
+ type[Group1]="THREE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/level5 b/xorg-server/xkeyboard-config/symbols/level5
index 99cb4601c..6e9a693cc 100644
--- a/xorg-server/xkeyboard-config/symbols/level5
+++ b/xorg-server/xkeyboard-config/symbols/level5
@@ -1,10 +1,6 @@
-// $XKeyboardConfig$
-
// these variants assign various XKB keycodes to ISO_Level5_Shift so that
// the third shift level can be reached
//
-// $XFree86: xc/programs/xkbcomp/symbols/level3,v 1.7 2003/09/08 14:25:32 eich Exp $
-//
// using the level(switch) map, the right Control key temporarily
// chooses the fifth shift level (until it is released).
diff --git a/xorg-server/xkeyboard-config/symbols/lk b/xorg-server/xkeyboard-config/symbols/lk
index cfc5b1ff9..8480607de 100644
--- a/xorg-server/xkeyboard-config/symbols/lk
+++ b/xorg-server/xkeyboard-config/symbols/lk
@@ -1,5 +1,3 @@
-// $XKeyboardConfig$
-
// X Keyboard Extension file for Sinhala (Sri Lanka) (2004-04-22)
// Maintainer : Harshula Jayasuriya <harshula@gmail.com>
// Last Updated: 2007-06-29
@@ -90,4 +88,3 @@ xkb_symbols "tam_TAB" {
include "in(tam_TAB)"
name[Group1]= "Sri Lanka - Tamil TAB Typewriter";
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/lt b/xorg-server/xkeyboard-config/symbols/lt
index 76da16409..5a19dc265 100644
--- a/xorg-server/xkeyboard-config/symbols/lt
+++ b/xorg-server/xkeyboard-config/symbols/lt
@@ -1,8 +1,4 @@
-// $XKeyboardConfig$
-
// Separate keymaps merged into one file by Nerijus Baliūnas, 2002
-//
-// $XFree86: xc/programs/xkbcomp/symbols/lt,v 1.3 2002/12/14 22:26:11 dawes Exp $
// Lithuanian Numeric layout - Lithuanian letters on the numeric row
// based on Lithuanian keyboard map by Ričardas Čepas <rch@richard.eu.org>
@@ -298,4 +294,3 @@ xkb_symbols "lekpa" {
key <AB09> {[ aogonek, Aogonek, greater ]};
key <AB10> {[ h, H ]};
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/lv b/xorg-server/xkeyboard-config/symbols/lv
index 556be6c66..960622486 100644
--- a/xorg-server/xkeyboard-config/symbols/lv
+++ b/xorg-server/xkeyboard-config/symbols/lv
@@ -1,129 +1,127 @@
-// $XKeyboardConfig$
-
-// Latvian keymap version 1.1
-// Copyright (C) Dmitry Golubev <lastguru@mail.ru>, 2003-2004
-//
-// Reworked to get rid of dead_keys (use of which in this case
-// is a dirty hack). It is now not dependent on locale settings
-// and GTK_IM_MODULES in Gnome. The map is also providing some of
-// ISO9995-3 alternate characters. Note that this version works
-// correctly under Gnome 2.6. This is to be put into symbols/
-// directory, or somewhere else.
-//
-// Permission to use, copy, modify, distribute, and sell this software and its
-// documentation for any purpose is hereby granted without fee, provided that
-// the above copyright notice appear in all copies and that both that
-// copyright notice and this permission notice appear in supporting
-// documentation, and that the name of the copyright holder(s) not be used in
-// advertising or publicity pertaining to distribution of the software without
-// specific, written prior permission. The copyright holder(s) makes no
-// representations about the suitability of this software for any purpose. It
-// is provided "as is" without express or implied warranty.
-//
-// THE COPYRIGHT HOLDER(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-// INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-// EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-// CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-// PERFORMANCE OF THIS SOFTWARE.
-
-partial default alphanumeric_keys modifier_keys
-xkb_symbols "basic" {
-
- name[Group1]= "Latvia";
-
- key <TLDE> {[grave, asciitilde, acute, asciitilde]};
- key <AE01> {[1, exclam, onesuperior, exclamdown]};
- key <AE02> {[2, at, twosuperior, oneeighth]};
- key <AE03> {[3, numbersign, threesuperior, sterling]};
- key <AE04> {[4, dollar, EuroSign, cent]};
- key <AE05> {[5, percent, onehalf, threeeighths]};
- key <AE06> {[6, asciicircum, threequarters, fiveeighths]};
- key <AE07> {[7, ampersand, braceleft, seveneighths]};
- key <AE08> {[8, asterisk, bracketleft, trademark]};
- key <AE09> {[9, parenleft, bracketright, plusminus]};
- key <AE10> {[0, parenright, braceright, degree]};
- key <AE11> {[minus, underscore, backslash, questiondown]};
- key <AE12> {[equal, plus, endash, emdash]};
-
- key <AD01> {[q, Q, q, Q]};
- key <AD02> {[w, W, w, W]};
- key <AD03> {[e, E, emacron, Emacron]};
- key <AD04> {[r, R, rcedilla, Rcedilla]};
- key <AD05> {[t, T, t, T]};
- key <AD06> {[y, Y, y, Y]};
- key <AD07> {[u, U, umacron, Umacron]};
- key <AD08> {[i, I, imacron, Imacron]};
- key <AD09> {[o, O, omacron, Omacron]};
- key <AD10> {[p, P, p, P]};
- key <AD11> {[bracketleft, braceleft, guillemotleft, leftdoublequotemark]};
- key <AD12> {[bracketright, braceright, guillemotright, rightdoublequotemark]};
-
- key <AC01> {[a, A, amacron, Amacron]};
- key <AC02> {[s, S, scaron, Scaron]};
- key <AC03> {[d, D, d, D]};
- key <AC04> {[f, F, f, F]};
- key <AC05> {[g, G, gcedilla, Gcedilla]};
- key <AC06> {[h, H, h, H]};
- key <AC07> {[j, J, j, J]};
- key <AC08> {[k, K, kcedilla, Kcedilla]};
- key <AC09> {[l, L, lcedilla, Lcedilla]};
- key <AC10> {[semicolon, colon, semicolon, colon]};
- key <AC11> {[apostrophe, quotedbl, leftdoublequotemark, doublelowquotemark]};
-
- key <AB01> {[z, Z, zcaron, Zcaron]};
- key <AB02> {[x, X, x, X]};
- key <AB03> {[c, C, ccaron, Ccaron]};
- key <AB04> {[v, V, v, V]};
- key <AB05> {[b, B, b, B]};
- key <AB06> {[n, N, ncedilla, Ncedilla]};
- key <AB07> {[m, M, m, M]};
- key <AB08> {[comma, less, horizconnector, multiply]};
- key <AB09> {[period, greater, periodcentered, division]};
- key <AB10> {[slash, question, slash, abovedot]};
- key <BKSL> {[backslash, bar, grave, breve]};
-
- key <SPCE> {[space, space, space, space]};
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys modifier_keys
-xkb_symbols "apostrophe" {
-
- include "lv(basic)"
-
- name[Group1]= "Latvia - Apostrophe (') variant";
-
- key <AC11> {[ISO_Level3_Latch, quotedbl, apostrophe, quotedbl]};
- key <SPCE> {[space, space, apostrophe]};
- modifier_map Mod5 { <AC11> };
-
-};
-
-partial alphanumeric_keys modifier_keys
-xkb_symbols "tilde" {
-
- include "lv(basic)"
-
- name[Group1]= "Latvia - Tilde (~) variant";
-
- key <TLDE> {[ISO_Level3_Latch, asciitilde, grave, acute]};
- key <SPCE> {[space, space, asciitilde]};
- modifier_map Mod5 { <TLDE> };
-
-};
-
-partial alphanumeric_keys modifier_keys
-xkb_symbols "fkey" {
-
- include "lv(basic)"
-
- name[Group1]= "Latvia - F-letter (F) variant";
-
- key <AC04> {[ISO_Level3_Latch, ISO_Level3_Latch, f, F]};
- key <SPCE> {[space, space, f, F]};
- modifier_map Mod5 { <AC04> };
-
-};
+// Latvian keymap version 1.1
+// Copyright (C) Dmitry Golubev <lastguru@mail.ru>, 2003-2004
+//
+// Reworked to get rid of dead_keys (use of which in this case
+// is a dirty hack). It is now not dependent on locale settings
+// and GTK_IM_MODULES in Gnome. The map is also providing some of
+// ISO9995-3 alternate characters. Note that this version works
+// correctly under Gnome 2.6. This is to be put into symbols/
+// directory, or somewhere else.
+//
+// Permission to use, copy, modify, distribute, and sell this software and its
+// documentation for any purpose is hereby granted without fee, provided that
+// the above copyright notice appear in all copies and that both that
+// copyright notice and this permission notice appear in supporting
+// documentation, and that the name of the copyright holder(s) not be used in
+// advertising or publicity pertaining to distribution of the software without
+// specific, written prior permission. The copyright holder(s) makes no
+// representations about the suitability of this software for any purpose. It
+// is provided "as is" without express or implied warranty.
+//
+// THE COPYRIGHT HOLDER(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+// INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+// EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+// CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+// PERFORMANCE OF THIS SOFTWARE.
+
+partial default alphanumeric_keys modifier_keys
+xkb_symbols "basic" {
+
+ name[Group1]= "Latvia";
+
+ key <TLDE> {[grave, asciitilde, acute, asciitilde]};
+ key <AE01> {[1, exclam, onesuperior, exclamdown]};
+ key <AE02> {[2, at, twosuperior, oneeighth]};
+ key <AE03> {[3, numbersign, threesuperior, sterling]};
+ key <AE04> {[4, dollar, EuroSign, cent]};
+ key <AE05> {[5, percent, onehalf, threeeighths]};
+ key <AE06> {[6, asciicircum, threequarters, fiveeighths]};
+ key <AE07> {[7, ampersand, braceleft, seveneighths]};
+ key <AE08> {[8, asterisk, bracketleft, trademark]};
+ key <AE09> {[9, parenleft, bracketright, plusminus]};
+ key <AE10> {[0, parenright, braceright, degree]};
+ key <AE11> {[minus, underscore, backslash, questiondown]};
+ key <AE12> {[equal, plus, endash, emdash]};
+
+ key <AD01> {[q, Q, q, Q]};
+ key <AD02> {[w, W, w, W]};
+ key <AD03> {[e, E, emacron, Emacron]};
+ key <AD04> {[r, R, rcedilla, Rcedilla]};
+ key <AD05> {[t, T, t, T]};
+ key <AD06> {[y, Y, y, Y]};
+ key <AD07> {[u, U, umacron, Umacron]};
+ key <AD08> {[i, I, imacron, Imacron]};
+ key <AD09> {[o, O, omacron, Omacron]};
+ key <AD10> {[p, P, p, P]};
+ key <AD11> {[bracketleft, braceleft, guillemotleft, leftdoublequotemark]};
+ key <AD12> {[bracketright, braceright, guillemotright, rightdoublequotemark]};
+
+ key <AC01> {[a, A, amacron, Amacron]};
+ key <AC02> {[s, S, scaron, Scaron]};
+ key <AC03> {[d, D, d, D]};
+ key <AC04> {[f, F, f, F]};
+ key <AC05> {[g, G, gcedilla, Gcedilla]};
+ key <AC06> {[h, H, h, H]};
+ key <AC07> {[j, J, j, J]};
+ key <AC08> {[k, K, kcedilla, Kcedilla]};
+ key <AC09> {[l, L, lcedilla, Lcedilla]};
+ key <AC10> {[semicolon, colon, semicolon, colon]};
+ key <AC11> {[apostrophe, quotedbl, leftdoublequotemark, doublelowquotemark]};
+
+ key <AB01> {[z, Z, zcaron, Zcaron]};
+ key <AB02> {[x, X, x, X]};
+ key <AB03> {[c, C, ccaron, Ccaron]};
+ key <AB04> {[v, V, v, V]};
+ key <AB05> {[b, B, b, B]};
+ key <AB06> {[n, N, ncedilla, Ncedilla]};
+ key <AB07> {[m, M, m, M]};
+ key <AB08> {[comma, less, horizconnector, multiply]};
+ key <AB09> {[period, greater, periodcentered, division]};
+ key <AB10> {[slash, question, slash, abovedot]};
+ key <BKSL> {[backslash, bar, grave, breve]};
+
+ key <SPCE> {[space, space, space, space]};
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys modifier_keys
+xkb_symbols "apostrophe" {
+
+ include "lv(basic)"
+
+ name[Group1]= "Latvia - Apostrophe (') variant";
+
+ key <AC11> {[ISO_Level3_Latch, quotedbl, apostrophe, quotedbl]};
+ key <SPCE> {[space, space, apostrophe]};
+ modifier_map Mod5 { <AC11> };
+
+};
+
+partial alphanumeric_keys modifier_keys
+xkb_symbols "tilde" {
+
+ include "lv(basic)"
+
+ name[Group1]= "Latvia - Tilde (~) variant";
+
+ key <TLDE> {[ISO_Level3_Latch, asciitilde, grave, acute]};
+ key <SPCE> {[space, space, asciitilde]};
+ modifier_map Mod5 { <TLDE> };
+
+};
+
+partial alphanumeric_keys modifier_keys
+xkb_symbols "fkey" {
+
+ include "lv(basic)"
+
+ name[Group1]= "Latvia - F-letter (F) variant";
+
+ key <AC04> {[ISO_Level3_Latch, ISO_Level3_Latch, f, F]};
+ key <SPCE> {[space, space, f, F]};
+ modifier_map Mod5 { <AC04> };
+
+};
diff --git a/xorg-server/xkeyboard-config/symbols/ma b/xorg-server/xkeyboard-config/symbols/ma
index b36cc9bc7..b49d0c762 100644
--- a/xorg-server/xkeyboard-config/symbols/ma
+++ b/xorg-server/xkeyboard-config/symbols/ma
@@ -322,4 +322,3 @@ xkb_symbols "tifinagh-alt-phonetic" {
include "level3(ralt_switch)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/apple b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/apple
index fc1742c45..cbbf110d3 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/apple
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/apple
@@ -1,7 +1,6 @@
//
// Keyboard modification for Apple keyboards
//
-// $XFree86: xc/programs/xkbcomp/symbols/apple,v 1.2 2003/10/24 20:38:20 tsi Exp $
partial default modifier_keys
xkb_symbols "extended" {
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/ch b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/ch
index 4932eb89a..09c2fb32f 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/ch
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/ch
@@ -1,102 +1,101 @@
-// $XKeyboardConfig$
-//
-// 03.01.2003
-// Andreas Tobler <a.tobler@schweiz.ch>
-// modified for Swiss German Apple Extended Keyboard II
-
-partial alphanumeric_keys
-xkb_symbols "extended" {
-
- name[Group1]= "Switzerland - German, Mac";
-
- // Alphanumeric section
-
- key <AE01> { [ 1, plus, plusminus, infinity ] };
- key <AE02> { [ 2, quotedbl, leftdoublequotemark, rightdoublequotemark ] };
- key <AE03> { [ 3, asterisk, numbersign, leftcaret ] };
- // not displayed here
- key <AE04> { [ 4, ccedilla, Ccedilla, slash ] };
- key <AE05> { [ 5, percent, bracketleft ] };
- key <AE06> { [ 6, ampersand, bracketright ] };
- key <AE07> { [ 7, slash, bar, backslash ] };
- key <AE08> { [ 8, parenleft, braceleft, Ograve ] };
- key <AE09> { [ 9, parenright, braceright, Ocircumflex ] };
- key <AE10> { [ 0, equal, notequal, Uacute ] };
- key <AE11> { [ apostrophe, question, questiondown, NoSymbol ] };
- key <AE12> { [ dead_circumflex,dead_grave, dead_acute, asciicircum ] };
- key <AD01> { [ q, Q, oe, OE ] };
- key <AD02> { [ w, W, Greek_SIGMA, Aacute ] };
- key <AD03> { [ e, E, EuroSign, Ediaeresis ] };
- key <AD04> { [ r, R, registered, Egrave ] };
- key <AD05> { [ t, T, dagger, Icircumflex ] };
- key <AD06> { [ z, Z, Greek_OMEGA, Iacute ] };
- key <AD07> { [ u, U, degree, Ugrave ] };
- key <AD08> { [ i, I, exclamdown, idotless ] };
- key <AD09> { [ o, O, oslash, Ooblique ] };
- key <AD10> { [ p, P, Greek_pi, Greek_PI ] };
- key <AD11> { [ udiaeresis, egrave, section, ydiaeresis ] };
- key <AD12> { [ dead_diaeresis, exclam, grave, apostrophe ] };
- key <AC01> { [ a, A, aring, Aring ] };
- key <AC02> { [ s, S, ssharp, NoSymbol ] };
- // ligature fl
- key <AC03> { [ d, D, Greek_sigma, NoSymbol ] };
- // partialderivative is not available here att
- key <AC04> { [ f, F, function, doubledagger ] };
- key <AC05> { [ g, G, at, comma ] };
- key <AC06> { [ h, H, ordfeminine, periodcentered ] };
- key <AC07> { [ j, J, masculine, eth ] };
- key <AC08> { [ k, K, Greek_DELTA, macron ] };
- key <AC09> { [ l, L, notsign, caret ] };
- key <AC10> { [ odiaeresis, eacute, cent, breve ] };
- key <AC11> { [ adiaeresis, agrave, ae, AE ] };
- key <AB01> { [ y, Y, yen, Ydiaeresis ] };
- key <AB02> { [ x, X, similarequal, trademark ] };
- key <AB03> { [ c, C, copyright, NoSymbol ] };
- key <AB04> { [ v, V, radical, diamond ] };
- key <AB05> { [ b, B, integral, NoSymbol ] };
- key <AB06> { [ n, N, dead_tilde, enopencircbullet ] };
- // to be fixed att
- key <AB07> { [ m, M, mu, dead_abovering ] };
- // not sure att
- key <AB08> { [ comma, semicolon, guillemotleft, guillemotright ] };
- key <AB09> { [ period, colon, ellipsis, division ] };
- key <AB10> { [ minus, underscore, hyphen, emdash ] };
- key <TLDE> { [ section, degree, NoSymbol, NoSymbol ] };
- // ligature fi // per mille
- key <SPCE> { [ space, nobreakspace, nobreakspace ] };
- key <LSGT> { [ less, greater, lessthanequal, greaterthanequal ] };
- key <BKSL> { [ dollar, sterling, paragraph, enfilledcircbullet ] };
-
- include "kpdl(comma)"
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "de" {
- include "macintosh_vndr/ch(extended)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "fr" {
-
- // Describes the differences between a very simple US/ASCII
- // keyboard and a very simple Swiss/French keybaord
-
- include "macintosh_vndr/ch(extended)"
- name[Group1]= "Switzerland - French, Mac";
-
- override key <AD11> {
- [ egrave, udiaeresis, bracketleft ]
- };
- override key <AC10> {
- [ eacute, odiaeresis ]
- };
- override key <AC11> {
- [ agrave, adiaeresis, braceleft ]
- };
-};
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
- include "macintosh_vndr/ch(fr)" // for consistent naming
-};
+//
+// 03.01.2003
+// Andreas Tobler <a.tobler@schweiz.ch>
+// modified for Swiss German Apple Extended Keyboard II
+
+partial alphanumeric_keys
+xkb_symbols "extended" {
+
+ name[Group1]= "Switzerland - German, Mac";
+
+ // Alphanumeric section
+
+ key <AE01> { [ 1, plus, plusminus, infinity ] };
+ key <AE02> { [ 2, quotedbl, leftdoublequotemark, rightdoublequotemark ] };
+ key <AE03> { [ 3, asterisk, numbersign, leftcaret ] };
+ // not displayed here
+ key <AE04> { [ 4, ccedilla, Ccedilla, slash ] };
+ key <AE05> { [ 5, percent, bracketleft ] };
+ key <AE06> { [ 6, ampersand, bracketright ] };
+ key <AE07> { [ 7, slash, bar, backslash ] };
+ key <AE08> { [ 8, parenleft, braceleft, Ograve ] };
+ key <AE09> { [ 9, parenright, braceright, Ocircumflex ] };
+ key <AE10> { [ 0, equal, notequal, Uacute ] };
+ key <AE11> { [ apostrophe, question, questiondown, NoSymbol ] };
+ key <AE12> { [ dead_circumflex,dead_grave, dead_acute, asciicircum ] };
+ key <AD01> { [ q, Q, oe, OE ] };
+ key <AD02> { [ w, W, Greek_SIGMA, Aacute ] };
+ key <AD03> { [ e, E, EuroSign, Ediaeresis ] };
+ key <AD04> { [ r, R, registered, Egrave ] };
+ key <AD05> { [ t, T, dagger, Icircumflex ] };
+ key <AD06> { [ z, Z, Greek_OMEGA, Iacute ] };
+ key <AD07> { [ u, U, degree, Ugrave ] };
+ key <AD08> { [ i, I, exclamdown, idotless ] };
+ key <AD09> { [ o, O, oslash, Ooblique ] };
+ key <AD10> { [ p, P, Greek_pi, Greek_PI ] };
+ key <AD11> { [ udiaeresis, egrave, section, ydiaeresis ] };
+ key <AD12> { [ dead_diaeresis, exclam, grave, apostrophe ] };
+ key <AC01> { [ a, A, aring, Aring ] };
+ key <AC02> { [ s, S, ssharp, NoSymbol ] };
+ // ligature fl
+ key <AC03> { [ d, D, Greek_sigma, NoSymbol ] };
+ // partialderivative is not available here att
+ key <AC04> { [ f, F, function, doubledagger ] };
+ key <AC05> { [ g, G, at, comma ] };
+ key <AC06> { [ h, H, ordfeminine, periodcentered ] };
+ key <AC07> { [ j, J, masculine, eth ] };
+ key <AC08> { [ k, K, Greek_DELTA, macron ] };
+ key <AC09> { [ l, L, notsign, caret ] };
+ key <AC10> { [ odiaeresis, eacute, cent, breve ] };
+ key <AC11> { [ adiaeresis, agrave, ae, AE ] };
+ key <AB01> { [ y, Y, yen, Ydiaeresis ] };
+ key <AB02> { [ x, X, similarequal, trademark ] };
+ key <AB03> { [ c, C, copyright, NoSymbol ] };
+ key <AB04> { [ v, V, radical, diamond ] };
+ key <AB05> { [ b, B, integral, NoSymbol ] };
+ key <AB06> { [ n, N, dead_tilde, enopencircbullet ] };
+ // to be fixed att
+ key <AB07> { [ m, M, mu, dead_abovering ] };
+ // not sure att
+ key <AB08> { [ comma, semicolon, guillemotleft, guillemotright ] };
+ key <AB09> { [ period, colon, ellipsis, division ] };
+ key <AB10> { [ minus, underscore, hyphen, emdash ] };
+ key <TLDE> { [ section, degree, NoSymbol, NoSymbol ] };
+ // ligature fi // per mille
+ key <SPCE> { [ space, nobreakspace, nobreakspace ] };
+ key <LSGT> { [ less, greater, lessthanequal, greaterthanequal ] };
+ key <BKSL> { [ dollar, sterling, paragraph, enfilledcircbullet ] };
+
+ include "kpdl(comma)"
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "de" {
+ include "macintosh_vndr/ch(extended)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "fr" {
+
+ // Describes the differences between a very simple US/ASCII
+ // keyboard and a very simple Swiss/French keybaord
+
+ include "macintosh_vndr/ch(extended)"
+ name[Group1]= "Switzerland - French, Mac";
+
+ override key <AD11> {
+ [ egrave, udiaeresis, bracketleft ]
+ };
+ override key <AC10> {
+ [ eacute, odiaeresis ]
+ };
+ override key <AC11> {
+ [ agrave, adiaeresis, braceleft ]
+ };
+};
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+ include "macintosh_vndr/ch(fr)" // for consistent naming
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/de b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/de
index 92c54916c..4c8bebdf4 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/de
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/de
@@ -1,97 +1,94 @@
-// $XConsortium: de /main/4 1996/08/31 12:19:20 kaleb $
-// $XFree86: xc/programs/xkbcomp/symbols/de,v 3.7.2.2 1999/07/13 07:09:56 hohndel Exp $
-
-// olh@suse.de very close to MacOS map
-
-default partial alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple US/ASCII
- // keyboard and a very simple German keybaord
-
- include "latin"
- name[Group1]= "Germany - Mac";
-
- // Alphanumeric section
- key <TLDE> { [ dead_circumflex, degree, notsign ] };
- key <AE01> { [ 1, exclam, exclamdown, at ] };
- key <AE02> { [ 2, quotedbl, twosuperior ] };
- key <AE03> { [ 3, section, threesuperior,sterling ] };
- key <AE04> { [ 4, dollar, onequarter, currency ] };
- key <AE05> { [ 5, percent, bracketleft ] };
- key <AE06> { [ 6, ampersand, bracketright ] };
- key <AE07> { [ 7, slash, bar, backslash ] };
- key <AE08> { [ 8, parenleft, braceleft, asciitilde ] };
- key <AE09> { [ 9, parenright, braceright ] };
- key <AE10> { [ 0, equal, braceright, degree ] };
- key <AE11> { [ ssharp, question, backslash, questiondown ] };
- key <AE12> { [ dead_acute, dead_grave, dead_cedilla ] };
-
- key <AD01> { [ q, Q, guillemotleft,guillemotright ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD04> { [ r, R, registered ] };
- key <AD05> { [ t, T ] };
- key <AD06> { [ z, Z ] };
- key <AD07> { [ u, U, diaeresis, Aacute ] };
- key <AD08> { [ i, I, slash, Ucircumflex ] };
- key <AD09> { [ o, O, oslash, Ooblique ] };
- key <AD11> { [ udiaeresis, Udiaeresis, periodcentered, degree ] };
- key <AD12> { [ plus, asterisk, asciitilde ] };
- key <AC01> { [ a, A, aring, Aring ] };
- key <AC04> { [ f, F ] };
- key <AC05> { [ g, G, copyright ] };
- key <AC06> { [ h, H, ordfeminine ] };
- key <AC09> { [ l, L, at ] };
- key <AC10> { [ odiaeresis, Odiaeresis, dead_acute ] };
- key <AC11> { [ adiaeresis, Adiaeresis, dead_circumflex ] };
-
- key <LSGT> { [ less, greater, bar ] };
- key <AB01> { [ y, Y, guillemotleft,less ] };
- key <AB06> { [ n, N, asciitilde ] };
- key <AB07> { [ m, M, mu ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon, periodcentered, division ] };
- key <AB10> { [ minus, underscore ] };
- key <BKSL> { [ numbersign, apostrophe, dead_grave ] };
-
- include "kpdl(comma)"
- include "level3(ralt_switch)"
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "Sundeadkeys" {
- // modify the default German layout to use Sun dead keys
- include "macintosh_vndr/de(basic)"
- name[Group1]= "Germany - Mac, Sun dead keys";
-
- key <TLDE> { [ SunFA_Circum, degree, notsign ] };
- key <AE12> { [ SunFA_Acute, SunFA_Grave, SunFA_Cedilla ] };
- key <AD11> { [ udiaeresis, Udiaeresis, SunFA_Diaeresis ] };
- key <AD12> { [ plus, asterisk, SunFA_Tilde, dead_macron ] };
- key <AC10> { [ odiaeresis, Odiaeresis, SunFA_Acute ] };
- key <AC11> { [ adiaeresis, Adiaeresis, SunFA_Circum ] };
-
- key <BKSL> { [ numbersign, acute, SunFA_Grave ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "sundeadkeys" {
- include "macintosh_vndr/de(Sundeadkeys)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
- // modify the default German layout to not have any dead keys
- include "macintosh_vndr/de(basic)"
- name[Group1]= "Germany - Mac, eliminate dead keys";
-
- key <TLDE> { [ asciicircum, degree, notsign ] };
- key <AE12> { [ acute, grave, cedilla ] };
- key <AD11> { [ udiaeresis, Udiaeresis, diaeresis ] };
- key <AD12> { [ plus, asterisk, asciitilde, macron ] };
- key <AC10> { [ odiaeresis, Odiaeresis, acute ] };
- key <AC11> { [ adiaeresis, Adiaeresis, asciicircum ] };
-
- key <BKSL> { [ numbersign, apostrophe, grave ] };
-};
+// olh@suse.de very close to MacOS map
+
+default partial alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple US/ASCII
+ // keyboard and a very simple German keybaord
+
+ include "latin"
+ name[Group1]= "Germany - Mac";
+
+ // Alphanumeric section
+ key <TLDE> { [ dead_circumflex, degree, notsign ] };
+ key <AE01> { [ 1, exclam, exclamdown, at ] };
+ key <AE02> { [ 2, quotedbl, twosuperior ] };
+ key <AE03> { [ 3, section, threesuperior,sterling ] };
+ key <AE04> { [ 4, dollar, onequarter, currency ] };
+ key <AE05> { [ 5, percent, bracketleft ] };
+ key <AE06> { [ 6, ampersand, bracketright ] };
+ key <AE07> { [ 7, slash, bar, backslash ] };
+ key <AE08> { [ 8, parenleft, braceleft, asciitilde ] };
+ key <AE09> { [ 9, parenright, braceright ] };
+ key <AE10> { [ 0, equal, braceright, degree ] };
+ key <AE11> { [ ssharp, question, backslash, questiondown ] };
+ key <AE12> { [ dead_acute, dead_grave, dead_cedilla ] };
+
+ key <AD01> { [ q, Q, guillemotleft,guillemotright ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD04> { [ r, R, registered ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ z, Z ] };
+ key <AD07> { [ u, U, diaeresis, Aacute ] };
+ key <AD08> { [ i, I, slash, Ucircumflex ] };
+ key <AD09> { [ o, O, oslash, Ooblique ] };
+ key <AD11> { [ udiaeresis, Udiaeresis, periodcentered, degree ] };
+ key <AD12> { [ plus, asterisk, asciitilde ] };
+ key <AC01> { [ a, A, aring, Aring ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G, copyright ] };
+ key <AC06> { [ h, H, ordfeminine ] };
+ key <AC09> { [ l, L, at ] };
+ key <AC10> { [ odiaeresis, Odiaeresis, dead_acute ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, dead_circumflex ] };
+
+ key <LSGT> { [ less, greater, bar ] };
+ key <AB01> { [ y, Y, guillemotleft,less ] };
+ key <AB06> { [ n, N, asciitilde ] };
+ key <AB07> { [ m, M, mu ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon, periodcentered, division ] };
+ key <AB10> { [ minus, underscore ] };
+ key <BKSL> { [ numbersign, apostrophe, dead_grave ] };
+
+ include "kpdl(comma)"
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "Sundeadkeys" {
+ // modify the default German layout to use Sun dead keys
+ include "macintosh_vndr/de(basic)"
+ name[Group1]= "Germany - Mac, Sun dead keys";
+
+ key <TLDE> { [ SunFA_Circum, degree, notsign ] };
+ key <AE12> { [ SunFA_Acute, SunFA_Grave, SunFA_Cedilla ] };
+ key <AD11> { [ udiaeresis, Udiaeresis, SunFA_Diaeresis ] };
+ key <AD12> { [ plus, asterisk, SunFA_Tilde, dead_macron ] };
+ key <AC10> { [ odiaeresis, Odiaeresis, SunFA_Acute ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, SunFA_Circum ] };
+
+ key <BKSL> { [ numbersign, acute, SunFA_Grave ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "sundeadkeys" {
+ include "macintosh_vndr/de(Sundeadkeys)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+ // modify the default German layout to not have any dead keys
+ include "macintosh_vndr/de(basic)"
+ name[Group1]= "Germany - Mac, eliminate dead keys";
+
+ key <TLDE> { [ asciicircum, degree, notsign ] };
+ key <AE12> { [ acute, grave, cedilla ] };
+ key <AD11> { [ udiaeresis, Udiaeresis, diaeresis ] };
+ key <AD12> { [ plus, asterisk, asciitilde, macron ] };
+ key <AC10> { [ odiaeresis, Odiaeresis, acute ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, asciicircum ] };
+
+ key <BKSL> { [ numbersign, apostrophe, grave ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/dk b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/dk
index 56ef85bf6..a2ac773e7 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/dk
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/dk
@@ -1,79 +1,76 @@
-// $XConsortium: dk /main/3 1996/08/31 12:19:29 kaleb $
-// $XFree86: xc/programs/xkbcomp/symbols/dk,v 3.3.2.1 1999/12/20 12:56:01 hohndel Exp $
-partial alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple en_US
- // keyboard and a Danish keyboard with dead key support
- // and all of ISO-8859-1 characters available.
-
- include "latin"
- name[Group1]= "Denmark - Mac";
-
- key <TLDE> { [ onehalf, section, threequarters, paragraph ]};
- key <LSGT> { [ less, greater, backslash, notsign ]};
- key <SPCE> { [ space, space, nobreakspace, nobreakspace ]};
- key <AE01> { [ 1, exclam, exclamdown, onesuperior ]};
- key <AE02> { [ 2, quotedbl, at, twosuperior ]};
- key <AE03> { [ 3, numbersign, sterling, threesuperior ]};
- key <AE04> { [ 4, EuroSign, dollar, onequarter ]};
- key <AE05> { [ 5, percent, NoSymbol, cent ]};
- key <AE06> { [ 6, ampersand, yen, NoSymbol ]};
- key <AE07> { [ 7, slash, braceleft, division ]};
- key <AE08> { [ 8, parenleft, bracketleft, guillemotleft ]};
- key <AE09> { [ 9, parenright, bracketright, guillemotright ]};
- key <AE10> { [ 0, equal, braceright, degree ]};
- key <AB08> { [ comma, semicolon, dead_cedilla, dead_ogonek ]};
- key <AB09> { [ period, colon, periodcentered, dead_abovedot ]};
- key <AB03> { [ c, C, copyright, NoSymbol ]};
- key <AB10> { [ minus, underscore, hyphen, macron ]};
- key <AC01> { [ a, A, ordfeminine, masculine ]};
- key <AC03> { [ d, D, eth, ETH ]};
- key <AD03> { [ e, E, EuroSign, cent ]};
- key <AD04> { [ r, R, registered, NoSymbol ]};
- key <AD05> { [ t, T, thorn, THORN ]};
- key <AD08> { [ i, I, NoSymbol, NoSymbol ]};
- key <AD09> { [ o, O, oe, OE ]};
- key <AC10> { [ ae, AE ]};
- key <AE11> { [ plus, question, plusminus, questiondown ]};
- key <AC11> { [ oslash, Ooblique ]};
- key <BKSL> { [ apostrophe, asterisk, dead_doubleacute, multiply ]};
- key <AD11> { [ aring, Aring ]};
- key <AE12> { [ dead_acute, dead_grave, bar, brokenbar ]};
- key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde, dead_caron ]};
-
- // End alphanumeric section
-
- include "eurosign(e)"
- include "level3(ralt_switch)"
-};
-
-
-partial default alphanumeric_keys
-xkb_symbols "full" {
- include "iso9995-3(full)"
- include "dk(basic)"
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
- include "macintosh_vndr/dk(basic)"
- name[Group1]= "Denmark - Mac, eliminate dead keys";
-
- key <AE12> { [ acute, grave, bar, ogonek ] };
- key <AD12> { [ diaeresis, asciicircum, asciitilde, dead_macron ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "macbookpro" {
-
- include "level3(win_switch)"
- include "macintosh_vndr/dk(basic)"
-
- name[Group1]= "Denmark - Mac, MacBook Pro";
-
- key <BKSL> { [apostrophe, asterisk, at, at ] };
- key <TLDE> { [ dollar, section, dollar, dollar ] };
-};
-
+partial alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple en_US
+ // keyboard and a Danish keyboard with dead key support
+ // and all of ISO-8859-1 characters available.
+
+ include "latin"
+ name[Group1]= "Denmark - Mac";
+
+ key <TLDE> { [ onehalf, section, threequarters, paragraph ]};
+ key <LSGT> { [ less, greater, backslash, notsign ]};
+ key <SPCE> { [ space, space, nobreakspace, nobreakspace ]};
+ key <AE01> { [ 1, exclam, exclamdown, onesuperior ]};
+ key <AE02> { [ 2, quotedbl, at, twosuperior ]};
+ key <AE03> { [ 3, numbersign, sterling, threesuperior ]};
+ key <AE04> { [ 4, EuroSign, dollar, onequarter ]};
+ key <AE05> { [ 5, percent, NoSymbol, cent ]};
+ key <AE06> { [ 6, ampersand, yen, NoSymbol ]};
+ key <AE07> { [ 7, slash, braceleft, division ]};
+ key <AE08> { [ 8, parenleft, bracketleft, guillemotleft ]};
+ key <AE09> { [ 9, parenright, bracketright, guillemotright ]};
+ key <AE10> { [ 0, equal, braceright, degree ]};
+ key <AB08> { [ comma, semicolon, dead_cedilla, dead_ogonek ]};
+ key <AB09> { [ period, colon, periodcentered, dead_abovedot ]};
+ key <AB03> { [ c, C, copyright, NoSymbol ]};
+ key <AB10> { [ minus, underscore, hyphen, macron ]};
+ key <AC01> { [ a, A, ordfeminine, masculine ]};
+ key <AC03> { [ d, D, eth, ETH ]};
+ key <AD03> { [ e, E, EuroSign, cent ]};
+ key <AD04> { [ r, R, registered, NoSymbol ]};
+ key <AD05> { [ t, T, thorn, THORN ]};
+ key <AD08> { [ i, I, NoSymbol, NoSymbol ]};
+ key <AD09> { [ o, O, oe, OE ]};
+ key <AC10> { [ ae, AE ]};
+ key <AE11> { [ plus, question, plusminus, questiondown ]};
+ key <AC11> { [ oslash, Ooblique ]};
+ key <BKSL> { [ apostrophe, asterisk, dead_doubleacute, multiply ]};
+ key <AD11> { [ aring, Aring ]};
+ key <AE12> { [ dead_acute, dead_grave, bar, brokenbar ]};
+ key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde, dead_caron ]};
+
+ // End alphanumeric section
+
+ include "eurosign(e)"
+ include "level3(ralt_switch)"
+};
+
+
+partial default alphanumeric_keys
+xkb_symbols "full" {
+ include "iso9995-3(full)"
+ include "dk(basic)"
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+ include "macintosh_vndr/dk(basic)"
+ name[Group1]= "Denmark - Mac, eliminate dead keys";
+
+ key <AE12> { [ acute, grave, bar, ogonek ] };
+ key <AD12> { [ diaeresis, asciicircum, asciitilde, dead_macron ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "macbookpro" {
+
+ include "level3(win_switch)"
+ include "macintosh_vndr/dk(basic)"
+
+ name[Group1]= "Denmark - Mac, MacBook Pro";
+
+ key <BKSL> { [apostrophe, asterisk, at, at ] };
+ key <TLDE> { [ dollar, section, dollar, dollar ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fi b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fi
index 6cb5fa314..177913737 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fi
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fi
@@ -1,18 +1,17 @@
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple mac_US
- // keyboard and a very simple Swedish(Finland) keybaord
-
- include "macintosh_vndr/se(basic)" // for consistent naming
- name[Group1]= "Finland - Mac";
-
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
- include "macintosh_vndr/se(basic)" // for consistent naming
- name[Group1]= "Finland - Mac, eliminate dead keys";
-};
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple mac_US
+ // keyboard and a very simple Swedish(Finland) keybaord
+
+ include "macintosh_vndr/se(basic)" // for consistent naming
+ name[Group1]= "Finland - Mac";
+
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+ include "macintosh_vndr/se(basic)" // for consistent naming
+ name[Group1]= "Finland - Mac, eliminate dead keys";
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/gb b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/gb
index 8eb82eb70..5343673c1 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/gb
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/gb
@@ -1,21 +1,17 @@
-// $XConsortium: gb /main/3 1996/08/31 12:19:51 kaleb $
-// $XFree86: xc/programs/xkbcomp/symbols/gb,v 3.3 1996/12/23 07:13:25 dawes Exp $
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple en_US
- // keyboard and a very simple U.K. keyboard layout
-
- include "latin"
-
- name[Group1]= "United Kingdom - Mac";
-
- key <AE02> { [ 2, at, EuroSign ] };
- key <AE03> { [ 3, sterling, numbersign ] };
-
- // End alphanumeric section
-
- include "level3(ralt_switch)"
-};
-
-
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple en_US
+ // keyboard and a very simple U.K. keyboard layout
+
+ include "latin"
+
+ name[Group1]= "United Kingdom - Mac";
+
+ key <AE02> { [ 2, at, EuroSign ] };
+ key <AE03> { [ 3, sterling, numbersign ] };
+
+ // End alphanumeric section
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/is b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/is
index 000bcdb0b..d16d92f61 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/is
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/is
@@ -1,128 +1,127 @@
-// $XKeyboardConfig$
-//
-// This file describes the differences between a Macintosh US Extended
-// keymap and an Icelandic keyboard layout in the style of Mac OS and Mac OS X
-//
-// Copyright (C) 2004, 2006 Ævar Arnfjörð Bjarmason <avarab@gmail.com>
-//
-// Permission to use, copy, modify, distribute, and sell this software and its
-// documentation for any purpose is hereby granted without fee, provided that
-// the above copyright notice appear in all copies and that both that
-// copyright notice and this permission notice appear in supporting
-// documentation.
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-// IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-//
-// Except as contained in this notice, the name of a copyright holder shall
-// not be used in advertising or otherwise to promote the sale, use or
-// other dealings in this Software without prior written authorization of
-// the copyright holder.
-//
-// = HISTORY
-// * 2004-09-28:
-// Initial cleanroom writing of the keymap, I just booted Mac OS X, opened
-// TextEdit.app and wrote down what the value produced by each key was when I
-// pressed it, a for a, A for shift + a, å for lalt + a etc and made the
-// keymap from that information
-//
-// * 2006-01-14:
-// Revised the comments in the file
-//
-// = NOTES
-// * 20 characters in this keymap have no named character defined in
-// include/keysymdef.h and as a result their Unicode code points in
-// hexadecimal are listed here, these can be generated with the following
-// perl command:
-// $ perl -CA -e 'printf "U%x\n", ord shift' Æ
-// and converted back like:
-// $ perl -CO -le '$_=shift;s/[^a-f0-9]//ig;print chr hex' Uc6
-// * The Apple logo appears twice on this keymap like the Mac OS and Mac OS X
-// keymaps. In the MacRoman encoding it has the code point 0xF0 (240) but it
-// has no assigned code point in Unicode, the code point Apple uses for it is
-// U+F8FF (63743) which is in the BMP's Private Use Area (U+E000–U+F8FF)
-// * This keymap has only been tested on a PowerBook6,5 (iBook G4) but it
-// should work on other Apple laptop models which use the same keyboard
-// layout. It will probably work on standard sized keyboards with little or
-// no modification but it might not support them fully, please report if
-// you're able to get it running with such a keyboard
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
- name[Group1]= "Iceland - Mac";
-
- //-- Row 5 (E) --//
- key <TLDE> { [ sterling, section, UF8FF, apostrophe ] };
- key <AE01> { [ 1, exclam, exclamdown, VoidSymbol ] };
- key <AE02> { [ 2, quotedbl, at, VoidSymbol ] };
- key <AE03> { [ 3, numbersign, U2122, sterling ] };
- key <AE04> { [ 4, dollar, U00A2, EuroSign ] };
- key <AE05> { [ 5, percent, U2030, infinity ] };
- key <AE06> { [ 6, ampersand, asciicircum, U2044 ] };
- key <AE07> { [ 7, slash, backslash, U00F7 ] };
- key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
- key <AE09> { [ 9, parenright, bracketright, braceright ] };
- key <AE10> { [ 0, equal, U2260, U2248 ] };
- key <AE11> { [ odiaeresis, Odiaeresis, oslash, Ooblique ] };
- key <AE12> { [ minus, underscore, endash, emdash ] };
-
-
- //-- Row 4 (D) --//
- key <AD01> { [ q, Q, paragraph, VoidSymbol ] };
- key <AD02> { [ w, W, U2211, VoidSymbol ] };
- key <AD03> { [ e, E, dead_grave, VoidSymbol ] };
- key <AD04> { [ r, R, registered, VoidSymbol ] };
- key <AD05> { [ t, T, degree, VoidSymbol ] };
- key <AD06> { [ y, Y, yen, VoidSymbol ] };
- key <AD07> { [ u, U, dead_diaeresis, VoidSymbol ] };
- key <AD08> { [ i, I, U0131, U00AA ] };
- key <AD09> { [ o, O, dead_circumflex,U00BA ] };
- key <AD10> { [ p, P, Greek_pi, Greek_PI ] };
- key <AD11> { [ eth, Eth, U201e, U201c ] };
- key <AD12> { [ apostrophe, question, questiondown, U00B7 ] };
-
-
- //-- Row 3 (C) --//
- key <AC01> { [ a, A, aring, Aring ] };
- key <AC02> { [ s, S, ssharp, abovedot ] };
- key <AC03> { [ d, D, U2202, U2DA ] };
- key <AC04> { [ f, F, U192, macron ] };
- key <AC05> { [ g, G, copyright, breve ] };
- key <AC06> { [ h, H, bar, VoidSymbol ] };
- key <AC07> { [ j, J, U2206, U2dd ] };
- key <AC08> { [ k, K, U00AC, VoidSymbol ] };
- key <AC09> { [ l, L, U2026, caron ] };
- key <AC10> { [ ae, AE, oe, OE ] };
- key <AC11> { [ dead_acute, dead_diaeresis, U201A, U2018 ] };
- key <BKSL> { [ plus, asterisk, U2022, plusminus ] };
-
-
- //-- Row 2 (B) --//
- key <LSGT> { [ less, greater, section, UF8FF ] };
- key <AB01> { [ z, Z, U3A9, VoidSymbol ] };
- key <AB02> { [ x, X, asciitilde, VoidSymbol ] };
- key <AB03> { [ c, C, ccedilla, Ccedilla ] };
- key <AB04> { [ v, V, U221A, U25CA ] };
- key <AB05> { [ b, B, U222B, VoidSymbol ] };
- key <AB06> { [ n, N, dead_tilde, VoidSymbol ] };
- key <AB07> { [ m, M, U00B5, VoidSymbol ] };
- key <AB08> { [ comma, semicolon, lessthanequal, guillemotleft ] };
- key <AB09> { [ period, colon, greaterthanequal,guillemotright ] };
- key <AB10> { [ thorn, Thorn, U2019, U201d ] };
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
- include "macintosh_vndr/is(basic)" // for consistent naming
- name[Group1]= "Iceland - Mac, eliminate dead keys";
-};
+//
+// This file describes the differences between a Macintosh US Extended
+// keymap and an Icelandic keyboard layout in the style of Mac OS and Mac OS X
+//
+// Copyright (C) 2004, 2006 Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+//
+// Permission to use, copy, modify, distribute, and sell this software and its
+// documentation for any purpose is hereby granted without fee, provided that
+// the above copyright notice appear in all copies and that both that
+// copyright notice and this permission notice appear in supporting
+// documentation.
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+//
+// Except as contained in this notice, the name of a copyright holder shall
+// not be used in advertising or otherwise to promote the sale, use or
+// other dealings in this Software without prior written authorization of
+// the copyright holder.
+//
+// = HISTORY
+// * 2004-09-28:
+// Initial cleanroom writing of the keymap, I just booted Mac OS X, opened
+// TextEdit.app and wrote down what the value produced by each key was when I
+// pressed it, a for a, A for shift + a, å for lalt + a etc and made the
+// keymap from that information
+//
+// * 2006-01-14:
+// Revised the comments in the file
+//
+// = NOTES
+// * 20 characters in this keymap have no named character defined in
+// include/keysymdef.h and as a result their Unicode code points in
+// hexadecimal are listed here, these can be generated with the following
+// perl command:
+// $ perl -CA -e 'printf "U%x\n", ord shift' Æ
+// and converted back like:
+// $ perl -CO -le '$_=shift;s/[^a-f0-9]//ig;print chr hex' Uc6
+// * The Apple logo appears twice on this keymap like the Mac OS and Mac OS X
+// keymaps. In the MacRoman encoding it has the code point 0xF0 (240) but it
+// has no assigned code point in Unicode, the code point Apple uses for it is
+// U+F8FF (63743) which is in the BMP's Private Use Area (U+E000–U+F8FF)
+// * This keymap has only been tested on a PowerBook6,5 (iBook G4) but it
+// should work on other Apple laptop models which use the same keyboard
+// layout. It will probably work on standard sized keyboards with little or
+// no modification but it might not support them fully, please report if
+// you're able to get it running with such a keyboard
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ name[Group1]= "Iceland - Mac";
+
+ //-- Row 5 (E) --//
+ key <TLDE> { [ sterling, section, UF8FF, apostrophe ] };
+ key <AE01> { [ 1, exclam, exclamdown, VoidSymbol ] };
+ key <AE02> { [ 2, quotedbl, at, VoidSymbol ] };
+ key <AE03> { [ 3, numbersign, U2122, sterling ] };
+ key <AE04> { [ 4, dollar, U00A2, EuroSign ] };
+ key <AE05> { [ 5, percent, U2030, infinity ] };
+ key <AE06> { [ 6, ampersand, asciicircum, U2044 ] };
+ key <AE07> { [ 7, slash, backslash, U00F7 ] };
+ key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
+ key <AE09> { [ 9, parenright, bracketright, braceright ] };
+ key <AE10> { [ 0, equal, U2260, U2248 ] };
+ key <AE11> { [ odiaeresis, Odiaeresis, oslash, Ooblique ] };
+ key <AE12> { [ minus, underscore, endash, emdash ] };
+
+
+ //-- Row 4 (D) --//
+ key <AD01> { [ q, Q, paragraph, VoidSymbol ] };
+ key <AD02> { [ w, W, U2211, VoidSymbol ] };
+ key <AD03> { [ e, E, dead_grave, VoidSymbol ] };
+ key <AD04> { [ r, R, registered, VoidSymbol ] };
+ key <AD05> { [ t, T, degree, VoidSymbol ] };
+ key <AD06> { [ y, Y, yen, VoidSymbol ] };
+ key <AD07> { [ u, U, dead_diaeresis, VoidSymbol ] };
+ key <AD08> { [ i, I, U0131, U00AA ] };
+ key <AD09> { [ o, O, dead_circumflex,U00BA ] };
+ key <AD10> { [ p, P, Greek_pi, Greek_PI ] };
+ key <AD11> { [ eth, Eth, U201e, U201c ] };
+ key <AD12> { [ apostrophe, question, questiondown, U00B7 ] };
+
+
+ //-- Row 3 (C) --//
+ key <AC01> { [ a, A, aring, Aring ] };
+ key <AC02> { [ s, S, ssharp, abovedot ] };
+ key <AC03> { [ d, D, U2202, U2DA ] };
+ key <AC04> { [ f, F, U192, macron ] };
+ key <AC05> { [ g, G, copyright, breve ] };
+ key <AC06> { [ h, H, bar, VoidSymbol ] };
+ key <AC07> { [ j, J, U2206, U2dd ] };
+ key <AC08> { [ k, K, U00AC, VoidSymbol ] };
+ key <AC09> { [ l, L, U2026, caron ] };
+ key <AC10> { [ ae, AE, oe, OE ] };
+ key <AC11> { [ dead_acute, dead_diaeresis, U201A, U2018 ] };
+ key <BKSL> { [ plus, asterisk, U2022, plusminus ] };
+
+
+ //-- Row 2 (B) --//
+ key <LSGT> { [ less, greater, section, UF8FF ] };
+ key <AB01> { [ z, Z, U3A9, VoidSymbol ] };
+ key <AB02> { [ x, X, asciitilde, VoidSymbol ] };
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+ key <AB04> { [ v, V, U221A, U25CA ] };
+ key <AB05> { [ b, B, U222B, VoidSymbol ] };
+ key <AB06> { [ n, N, dead_tilde, VoidSymbol ] };
+ key <AB07> { [ m, M, U00B5, VoidSymbol ] };
+ key <AB08> { [ comma, semicolon, lessthanequal, guillemotleft ] };
+ key <AB09> { [ period, colon, greaterthanequal,guillemotright ] };
+ key <AB10> { [ thorn, Thorn, U2019, U201d ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+ include "macintosh_vndr/is(basic)" // for consistent naming
+ name[Group1]= "Iceland - Mac, eliminate dead keys";
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/it b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/it
index 44435201b..889653f8e 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/it
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/it
@@ -1,64 +1,62 @@
-
-xkb_symbols "extended" {
-
- name[Group1]= "Italy - Mac";
-
- // Alphanumeric section
- key <LSGT> { [ less, greater ] };
- key <TLDE> { [ at, numbersign, periodcentered ] };
- key <AE01> { [ ampersand, 1, guillemotleft,guillemotright ] };
- key <AE02> { [ quotedbl, 2 ] };
- key <AE03> { [ apostrophe, 3 ] };
- key <AE04> { [ parenleft, 4, braceleft, bracketleft ] };
- key <AE05> { [ ccedilla, 5, Ccedilla, Iacute ] };
- key <AE06> { [ egrave, 6, paragraph, periodcentered] };
- key <AE07> { [ parenright, 7, braceright, bracketright ] };
- key <AE08> { [ sterling, 8, infinity ] };
- key <AE09> { [ agrave, 9, acute, Ocircumflex ] };
- key <AE10> { [ eacute, 0, grave, Oacute ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus, notequal, plusminus ] };
-
- key <AD01> { [ q, Q ] };
- key <AD02> { [ z, Z ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD04> { [ r, R, registered ] };
- key <AD05> { [ t, T ] };
- key <AD06> { [ y, Y, Uacute, ydiaeresis ] };
- key <AD07> { [ u, U ] };
- key <AD08> { [ i, I, icircumflex, idiaeresis ] };
- key <AD09> { [ o, O ] };
- key <AD10> { [ p, P ] };
- key <AD11> { [ igrave, asciicircum ] };
- key <AD12> { [ dollar, asterisk ] };
- key <BKSL> { [ section, degree, at, numbersign ] };
-
- key <AC01> { [ a, A, aring, Aring ] };
- key <AC02> { [ s, S, ssharp ] };
- key <AC03> { [ d, D ] };
- key <AC04> { [ f, F ] };
- key <AC05> { [ g, G ] };
- key <AC06> { [ h, H, Igrave, Icircumflex ] };
- key <AC07> { [ j, J, Idiaeresis, Iacute ] };
- key <AC08> { [ k, K, Egrave, Ediaeresis ] };
- key <AC09> { [ l, L, ssharp, bar ] };
- key <AC10> { [ m, M, mu, Oacute ] };
- key <AC11> { [ ugrave, percent, ae, AE ] };
-
- key <AB01> { [ w, W ] };
- key <AB02> { [ x, X ] };
- key <AB03> { [ c, C, copyright, copyright ] };
- key <AB04> { [ v, V ] };
- key <AB05> { [ b, B ] };
- key <AB06> { [ n, N, dead_tilde ] };
- key <AB07> { [ comma, question, questiondown ] };
- key <AB08> { [ semicolon, period ] };
- key <AB09> { [ colon, slash, bar, backslash ] };
- key <AB10> { [ ograve, exclam, exclamdown ] };
-
- // End alphanumeric section
-
- include "kpdl(dot)"
- include "level3(ralt_switch)"
-};
-
+xkb_symbols "extended" {
+
+ name[Group1]= "Italy - Mac";
+
+ // Alphanumeric section
+ key <LSGT> { [ less, greater ] };
+ key <TLDE> { [ at, numbersign, periodcentered ] };
+ key <AE01> { [ ampersand, 1, guillemotleft,guillemotright ] };
+ key <AE02> { [ quotedbl, 2 ] };
+ key <AE03> { [ apostrophe, 3 ] };
+ key <AE04> { [ parenleft, 4, braceleft, bracketleft ] };
+ key <AE05> { [ ccedilla, 5, Ccedilla, Iacute ] };
+ key <AE06> { [ egrave, 6, paragraph, periodcentered] };
+ key <AE07> { [ parenright, 7, braceright, bracketright ] };
+ key <AE08> { [ sterling, 8, infinity ] };
+ key <AE09> { [ agrave, 9, acute, Ocircumflex ] };
+ key <AE10> { [ eacute, 0, grave, Oacute ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus, notequal, plusminus ] };
+
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ z, Z ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD04> { [ r, R, registered ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y, Uacute, ydiaeresis ] };
+ key <AD07> { [ u, U ] };
+ key <AD08> { [ i, I, icircumflex, idiaeresis ] };
+ key <AD09> { [ o, O ] };
+ key <AD10> { [ p, P ] };
+ key <AD11> { [ igrave, asciicircum ] };
+ key <AD12> { [ dollar, asterisk ] };
+ key <BKSL> { [ section, degree, at, numbersign ] };
+
+ key <AC01> { [ a, A, aring, Aring ] };
+ key <AC02> { [ s, S, ssharp ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H, Igrave, Icircumflex ] };
+ key <AC07> { [ j, J, Idiaeresis, Iacute ] };
+ key <AC08> { [ k, K, Egrave, Ediaeresis ] };
+ key <AC09> { [ l, L, ssharp, bar ] };
+ key <AC10> { [ m, M, mu, Oacute ] };
+ key <AC11> { [ ugrave, percent, ae, AE ] };
+
+ key <AB01> { [ w, W ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C, copyright, copyright ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N, dead_tilde ] };
+ key <AB07> { [ comma, question, questiondown ] };
+ key <AB08> { [ semicolon, period ] };
+ key <AB09> { [ colon, slash, bar, backslash ] };
+ key <AB10> { [ ograve, exclam, exclamdown ] };
+
+ // End alphanumeric section
+
+ include "kpdl(dot)"
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/latam b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/latam
index 085de0e4b..a588ab27c 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/latam
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/latam
@@ -1,38 +1,37 @@
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple mac_US
- // keyboard and a very simple Spanish keybaord
-
- include "latin"
- name[Group1]= "Latin American - Mac";
-
- key <TLDE> { [ bracketleft, bracketright, braceleft, braceright ] };
- key <LSGT> { [ less, greater, bracketleft, braceleft ] };
- key <AE01> { [ 1, exclamdown ] };
- key <AE02> { [ 2, exclam, at, oneeighth ] };
- key <AE03> { [ 3, numbersign, guillemotleft, guillemotright ] };
- key <AE04> { [ 4, dollar, yen, Icircumflex ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, slash, backslash, Idiaeresis ] };
- key <AE07> { [ 7, ampersand, bar, Iacute ] };
- key <AE08> { [ 8, asterisk, degree ] };
- key <AE09> { [ 9, parenleft, sterling, Ocircumflex ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus, plusminus ] };
- key <AD11> { [ dead_grave, degree ] };
- key <AD12> { [ dead_acute, dead_diaeresis, bar ] };
-
- key <AB08> { [ comma, questiondown ] };
- key <AB09> { [ period, question ] };
- key <AB10> { [ ccedilla, Ccedilla ] };
- key <AC10> { [ ntilde, Ntilde, asciitilde, dead_doubleacute ] };
- key <AC11> { [ semicolon, colon ] };
- key <BKSL> { [ apostrophe, quotedbl ] };
-
- // End alphanumeric section
-
- include "level3(ralt_switch)"
-};
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple mac_US
+ // keyboard and a very simple Spanish keybaord
+
+ include "latin"
+ name[Group1]= "Latin American - Mac";
+
+ key <TLDE> { [ bracketleft, bracketright, braceleft, braceright ] };
+ key <LSGT> { [ less, greater, bracketleft, braceleft ] };
+ key <AE01> { [ 1, exclamdown ] };
+ key <AE02> { [ 2, exclam, at, oneeighth ] };
+ key <AE03> { [ 3, numbersign, guillemotleft, guillemotright ] };
+ key <AE04> { [ 4, dollar, yen, Icircumflex ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, slash, backslash, Idiaeresis ] };
+ key <AE07> { [ 7, ampersand, bar, Iacute ] };
+ key <AE08> { [ 8, asterisk, degree ] };
+ key <AE09> { [ 9, parenleft, sterling, Ocircumflex ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus, plusminus ] };
+ key <AD11> { [ dead_grave, degree ] };
+ key <AD12> { [ dead_acute, dead_diaeresis, bar ] };
+
+ key <AB08> { [ comma, questiondown ] };
+ key <AB09> { [ period, question ] };
+ key <AB10> { [ ccedilla, Ccedilla ] };
+ key <AC10> { [ ntilde, Ntilde, asciitilde, dead_doubleacute ] };
+ key <AC11> { [ semicolon, colon ] };
+ key <BKSL> { [ apostrophe, quotedbl ] };
+
+ // End alphanumeric section
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/nl b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/nl
index b60690e4d..05034701e 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/nl
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/nl
@@ -1,17 +1,15 @@
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple mac_US
- // keyboard and a very simple netherland keybaord
-
- include "latin"
-
- name[Group1]= "Netherlands - Mac";
-
- include "level3(ralt_switch)"
-
-// do just nothing
-
-};
-
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple mac_US
+ // keyboard and a very simple netherland keybaord
+
+ include "latin"
+
+ name[Group1]= "Netherlands - Mac";
+
+ include "level3(ralt_switch)"
+
+// do just nothing
+
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/no b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/no
index d8bf0d650..442aee9af 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/no
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/no
@@ -1,52 +1,50 @@
-// $XConsortium: no /main/3 1996/08/31 12:20:02 kaleb $
-// $XFree86: xc/programs/xkbcomp/symbols/no,v 3.3.2.1 1997/07/26 06:31:01 dawes Exp $
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple en_US
- // keyboard and a very simple Norwegian keybaord
-
- include "latin"
-
- name[Group1]= "Norway - Mac";
-
- key <TLDE> { [ bar, section ] };
- key <AE02> { [ 2, quotedbl, at, oneeighth ] };
- key <AE04> { [ 4, currency, dollar, dollar ] };
- key <AE03> { [ 3, numbersign, sterling, sterling ] };
- key <AE06> { [ 6, ampersand ] };
- key <AE07> { [ 7, slash, bar, backslash ] };
- key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
- key <AE09> { [ 9, parenright, bracketright, braceright ] };
- key <AE10> { [ 0, equal ] };
-
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
- key <AC10> { [ oslash, Ooblique, odiaeresis, Odiaeresis ] };
- key <AE11> { [ plus, question ] };
- key <AC11> { [ ae, AE ] };
- key <AD11> { [ aring, Aring ] };
- key <AE12> { [ dead_grave, dead_acute, acute, dead_ogonek ] };
- key <AD12> { [ diaeresis, asciicircum, asciitilde, dead_macron ] };
- key <BKSL> { [ at, asterisk ] };
- key <LSGT> { [ less, greater ] };
-
- // End alphanumeric section
-
- include "eurosign(e)"
- include "level3(ralt_switch)"
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
-
- // Modifies the basic Norwegian layout to eliminate dead keys
- include "macintosh_vndr/no(basic)"
- name[Group1]= "Norway - Mac, eliminate dead keys";
-
- key <AE12> { [ grave, acute, acute, ogonek ] };
- key <AD12> { [ diaeresis, asciicircum, asciitilde, macron ] };
-
-};
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple en_US
+ // keyboard and a very simple Norwegian keybaord
+
+ include "latin"
+
+ name[Group1]= "Norway - Mac";
+
+ key <TLDE> { [ bar, section ] };
+ key <AE02> { [ 2, quotedbl, at, oneeighth ] };
+ key <AE04> { [ 4, currency, dollar, dollar ] };
+ key <AE03> { [ 3, numbersign, sterling, sterling ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, slash, bar, backslash ] };
+ key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
+ key <AE09> { [ 9, parenright, bracketright, braceright ] };
+ key <AE10> { [ 0, equal ] };
+
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+ key <AC10> { [ oslash, Ooblique, odiaeresis, Odiaeresis ] };
+ key <AE11> { [ plus, question ] };
+ key <AC11> { [ ae, AE ] };
+ key <AD11> { [ aring, Aring ] };
+ key <AE12> { [ dead_grave, dead_acute, acute, dead_ogonek ] };
+ key <AD12> { [ diaeresis, asciicircum, asciitilde, dead_macron ] };
+ key <BKSL> { [ at, asterisk ] };
+ key <LSGT> { [ less, greater ] };
+
+ // End alphanumeric section
+
+ include "eurosign(e)"
+ include "level3(ralt_switch)"
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+
+ // Modifies the basic Norwegian layout to eliminate dead keys
+ include "macintosh_vndr/no(basic)"
+ name[Group1]= "Norway - Mac, eliminate dead keys";
+
+ key <AE12> { [ grave, acute, acute, ogonek ] };
+ key <AD12> { [ diaeresis, asciicircum, asciitilde, macron ] };
+
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/pt b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/pt
index 8f1785742..8c3b7173c 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/pt
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/pt
@@ -1,63 +1,61 @@
-// $XConsortium: pt /main/3 1996/08/31 12:20:08 kaleb $
-// $XFree86: xc/programs/xkbcomp/symbols/pt,v 3.3.2.1 1999/11/18 15:37:37 hohndel Exp $
-// mac version from Ricardo Cabral <bfe00991@mail.telepac.pt>
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple en_US
- // keyboard and a very simple Portuguese keybaord
-
- include "latin"
-
- name[Group1]= "Portugal - Mac";
-
- key <LSGT> { [ less, greater, bar, brokenbar ] };
- key <AE02> { [ 2, quotedbl, at, oneeighth ] };
- key <AE04> { [ 4, dollar, section, dollar ] };
- key <AE03> { [ 3, numbersign, sterling, sterling ] };
- key <AE06> { [ 6, ampersand ] };
- key <AE07> { [ 7, slash ] };
- key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
- key <AE09> { [ 9, parenright, bracketright, braceright ] };
- key <AE10> { [ 0, equal ] };
- key <AE11> { [ apostrophe, question ] };
- key <AE12> { [ plus, asterisk, dead_diaeresis ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
- key <AC10> { [ ccedilla, Ccedilla ] };
- key <AC11> { [ dead_tilde, dead_circumflex ] };
- key <AC12> { [ backslash, bar ] };
- key <AD11> { [ masculine, ordfeminine ] };
- key <AD12> { [ dead_acute, dead_grave ] };
- // End alphanumeric section
-
- include "eurosign(e)"
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "Sundeadkeys" {
- include "macintosh_vndr/pt(basic)" // for consistent naming
- name[Group1]= "Portugal - Mac, Sun dead keys";
-
- key <AE12> { [ plus, asterisk, SunFA_Diaeresis, SunFA_Diaeresis ] };
- key <AC11> { [ SunFA_Tilde, SunFA_Circum ] };
- key <AD12> { [ SunFA_Acute, SunFA_Grave ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "sundeadkeys" {
- include "macintosh_vndr/pt(Sundeadkeys)" // for consistent naming
-};
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
- include "macintosh_vndr/pt(basic)" // for consistent naming
- name[Group1]= "Portugal - Mac, eliminate dead keys";
-
- key <AE12> { [ plus, asterisk, quotedbl, quotedbl ] };
- key <AC11> { [ asciitilde, asciicircum ] };
- key <AD12> { [ acute, grave ] };
-};
+// mac version from Ricardo Cabral <bfe00991@mail.telepac.pt>
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple en_US
+ // keyboard and a very simple Portuguese keybaord
+
+ include "latin"
+
+ name[Group1]= "Portugal - Mac";
+
+ key <LSGT> { [ less, greater, bar, brokenbar ] };
+ key <AE02> { [ 2, quotedbl, at, oneeighth ] };
+ key <AE04> { [ 4, dollar, section, dollar ] };
+ key <AE03> { [ 3, numbersign, sterling, sterling ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, slash ] };
+ key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
+ key <AE09> { [ 9, parenright, bracketright, braceright ] };
+ key <AE10> { [ 0, equal ] };
+ key <AE11> { [ apostrophe, question ] };
+ key <AE12> { [ plus, asterisk, dead_diaeresis ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+ key <AC10> { [ ccedilla, Ccedilla ] };
+ key <AC11> { [ dead_tilde, dead_circumflex ] };
+ key <AC12> { [ backslash, bar ] };
+ key <AD11> { [ masculine, ordfeminine ] };
+ key <AD12> { [ dead_acute, dead_grave ] };
+ // End alphanumeric section
+
+ include "eurosign(e)"
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "Sundeadkeys" {
+ include "macintosh_vndr/pt(basic)" // for consistent naming
+ name[Group1]= "Portugal - Mac, Sun dead keys";
+
+ key <AE12> { [ plus, asterisk, SunFA_Diaeresis, SunFA_Diaeresis ] };
+ key <AC11> { [ SunFA_Tilde, SunFA_Circum ] };
+ key <AD12> { [ SunFA_Acute, SunFA_Grave ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "sundeadkeys" {
+ include "macintosh_vndr/pt(Sundeadkeys)" // for consistent naming
+};
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+ include "macintosh_vndr/pt(basic)" // for consistent naming
+ name[Group1]= "Portugal - Mac, eliminate dead keys";
+
+ key <AE12> { [ plus, asterisk, quotedbl, quotedbl ] };
+ key <AC11> { [ asciitilde, asciicircum ] };
+ key <AD12> { [ acute, grave ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/se b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/se
index d5d8c1c4c..56d77bd0f 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/se
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/se
@@ -1,46 +1,44 @@
-// $XConsortium: se /main/3 1996/08/31 12:20:15 kaleb $
-// $XFree86: xc/programs/xkbcomp/symbols/macintosh/se,v 1.1 2000/09/19 12:46:26 eich Exp $
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple en_US
- // keyboard and a very simple Swedish(Sweden) keybaord
-
- include "latin"
-
- name[Group1]= "Sweden - Mac";
-
- key <TLDE> { [ section, degree ] };
-
- key <AE01> { [ 1, exclam, copyright, exclamdown ] };
- key <AE02> { [ 2, quotedbl, at, oneeighth ] };
- key <AE03> { [ 3, numbersign, sterling, yen ] };
- key <AE04> { [ 4, currency, dollar, cent ] };
- key <AE06> { [ 6, ampersand ] };
- key <AE07> { [ 7, slash, bar, backslash ] };
- key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
- key <AE09> { [ 9, parenright, bracketright, braceright ] };
- key <AB08> { [ comma, semicolon ] };
- key <AE10> { [ 0, equal ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
- key <AC10> { [ odiaeresis, Odiaeresis, oslash, Ooblique ] };
- key <AE11> { [ plus, question ] };
- key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] };
- key <AD11> { [ aring, Aring ] };
- key <AE12> { [ acute, grave ] };
- key <AD12> { [ diaeresis, asciicircum, asciitilde ] };
- key <BKSL> { [ apostrophe, asterisk, at ] };
- key <LSGT> { [ less, greater, bar, brokenbar ] };
-
- include "kpdl(comma)"
- include "eurosign(e)"
- include "level3(ralt_switch)"
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
- include "macintosh_vndr/se(basic)" // for consistent naming
- name[Group1]= "Sweden - Mac, eliminate dead keys";
-};
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple en_US
+ // keyboard and a very simple Swedish(Sweden) keybaord
+
+ include "latin"
+
+ name[Group1]= "Sweden - Mac";
+
+ key <TLDE> { [ section, degree ] };
+
+ key <AE01> { [ 1, exclam, copyright, exclamdown ] };
+ key <AE02> { [ 2, quotedbl, at, oneeighth ] };
+ key <AE03> { [ 3, numbersign, sterling, yen ] };
+ key <AE04> { [ 4, currency, dollar, cent ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, slash, bar, backslash ] };
+ key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
+ key <AE09> { [ 9, parenright, bracketright, braceright ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AE10> { [ 0, equal ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+ key <AC10> { [ odiaeresis, Odiaeresis, oslash, Ooblique ] };
+ key <AE11> { [ plus, question ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] };
+ key <AD11> { [ aring, Aring ] };
+ key <AE12> { [ acute, grave ] };
+ key <AD12> { [ diaeresis, asciicircum, asciitilde ] };
+ key <BKSL> { [ apostrophe, asterisk, at ] };
+ key <LSGT> { [ less, greater, bar, brokenbar ] };
+
+ include "kpdl(comma)"
+ include "eurosign(e)"
+ include "level3(ralt_switch)"
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+ include "macintosh_vndr/se(basic)" // for consistent naming
+ name[Group1]= "Sweden - Mac, eliminate dead keys";
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/us b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/us
index fed3253cf..6da1c67bf 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/us
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/us
@@ -1,151 +1,148 @@
-// $XConsortium: macintosh /main/10 1996/01/29 19:54:54 kaleb $
-// $XFree86: xc/programs/xkbcomp/symbols/macintosh/us,v 1.8 2003/08/04 10:32:31 eich Exp $
-
-// symbols definition for a Macintosh "Extended" keyboard
-
-xkb_symbols "extended" {
-
- name[Group1]= "USA";
- key <ESC> { [ Escape ] };
-
- // Alphanumeric section
- key <TLDE> { [ quoteleft, asciitilde ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, asciicircum ] };
- key <AE07> { [ 7, ampersand ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
-
- key <AD01> { [ q, Q ] };
- key <AD02> { [ w, W ] };
- key <AD03> { [ e, E ] };
- key <AD04> { [ r, R ] };
- key <AD05> { [ t, T ] };
- key <AD06> { [ y, Y ] };
- key <AD07> { [ u, U ] };
- key <AD08> { [ i, I ] };
- key <AD09> { [ o, O ] };
- key <AD10> { [ p, P ] };
- key <AD11> { [ bracketleft, braceleft ] };
- key <AD12> { [ bracketright, braceright ] };
- key <BKSL> { [ backslash, bar ] };
-
- key <AC01> { [ a, A ] };
- key <AC02> { [ s, S ] };
- key <AC03> { [ d, D ] };
- key <AC04> { [ f, F ] };
- key <AC05> { [ g, G ] };
- key <AC06> { [ h, H ] };
- key <AC07> { [ j, J ] };
- key <AC08> { [ k, K ] };
- key <AC09> { [ l, L ] };
- key <AC10> { [ semicolon, colon ] };
- key <AC11> { [ quoteright, quotedbl ] };
-
- key <AB01> { [ z, Z ] };
- key <AB02> { [ x, X ] };
- key <AB03> { [ c, C ] };
- key <AB04> { [ v, V ] };
- key <AB05> { [ b, B ] };
- key <AB06> { [ n, N ] };
- key <AB07> { [ m, M ] };
- key <AB08> { [ comma, less ] };
- key <AB09> { [ period, greater ] };
- key <AB10> { [ slash, question ] };
-
- key <SPCE> { [ space ] };
- // End alphanumeric section
-
-
- include "eurosign(e)"
- include "keypad"
-
- key <KPEQ> { [ equal ] };
-};
-
-hidden
-xkb_symbols "oldmac" {
-
- include "macintosh_vndr/us(extended)"
-
- // Begin "Function" section
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ F11 ] };
- key <FK12> { [ F12 ] };
- key <FK13> { [ Print ] };
- key <FK14> { [ Scroll_Lock ] };
- key <FK15> { [ Pause ] };
- // End "Function" section
-
- // Begin "Editing" section
- key <INS> { [ Insert ] };
- key <HOME> { [ Home ] };
- key <PGUP> { [ Prior ] };
- key <DELE> { [ Delete ] };
- key <END> { [ End ] };
- key <PGDN> { [ Next ] };
-
- key <UP> { [ Up ] };
- key <LEFT> { [ Left ] };
- key <DOWN> { [ Down ] };
- key <RGHT> { [ Right ] };
- // End "Editing" section
-
- key <BKSP> { [ BackSpace ] };
- key <TAB> { [ Tab, ISO_Left_Tab ] };
- key <RTRN> { [ Return ] };
- key <CAPS> { [ Caps_Lock ] };
- key <NMLK> { [ Num_Lock, Pointer_EnableKeys ] };
-
- // Begin "Modifier" section
- key <LFSH> { [ Shift_L ] };
- key <RTSH> { [ Shift_R ] };
- key <LCTL> { [ Control_L ] };
- key <RCTL> { [ Control_R ] };
- key <LALT> { [ Alt_L, Meta_L ] };
- key <RALT> { [ Alt_R, Meta_R ] };
- key <LWIN> { [ Super_L ] };
- key <RWIN> { [ Super_R ] };
- // End "Modifier" section
-
- // begin modifier mappings
- modifier_map Shift { Shift_L, Shift_R };
- modifier_map Lock { Caps_Lock, ISO_Lock };
- modifier_map Control{ Control_L, Control_R };
- modifier_map Mod2 { Num_Lock };
-
- // Fake keys for virtual<->real modifiers mapping
- key <LVL3> { [ ISO_Level3_Shift ] };
- key <MDSW> { [ Mode_switch ] };
- modifier_map Mod5 { <LVL3>, <MDSW> };
-
- key <ALT> { [ NoSymbol, Alt_L ] };
- modifier_map Mod1 { <ALT>, <LALT> };
-
- key <META> { [ NoSymbol, Meta_L ] };
- modifier_map Mod1 { <META> };
-
- key <SUPR> { [ NoSymbol, Super_L ] };
- modifier_map Mod4 { <SUPR> };
-
- key <HYPR> { [ NoSymbol, Hyper_L ] };
- modifier_map Mod4 { <HYPR> };
- // end modifier mappings
-
-};
+// symbols definition for a Macintosh "Extended" keyboard
+
+xkb_symbols "extended" {
+
+ name[Group1]= "USA";
+ key <ESC> { [ Escape ] };
+
+ // Alphanumeric section
+ key <TLDE> { [ quoteleft, asciitilde ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E ] };
+ key <AD04> { [ r, R ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y ] };
+ key <AD07> { [ u, U ] };
+ key <AD08> { [ i, I ] };
+ key <AD09> { [ o, O ] };
+ key <AD10> { [ p, P ] };
+ key <AD11> { [ bracketleft, braceleft ] };
+ key <AD12> { [ bracketright, braceright ] };
+ key <BKSL> { [ backslash, bar ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ s, S ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K ] };
+ key <AC09> { [ l, L ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ quoteright, quotedbl ] };
+
+ key <AB01> { [ z, Z ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
+
+ key <SPCE> { [ space ] };
+ // End alphanumeric section
+
+
+ include "eurosign(e)"
+ include "keypad"
+
+ key <KPEQ> { [ equal ] };
+};
+
+hidden
+xkb_symbols "oldmac" {
+
+ include "macintosh_vndr/us(extended)"
+
+ // Begin "Function" section
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ F11 ] };
+ key <FK12> { [ F12 ] };
+ key <FK13> { [ Print ] };
+ key <FK14> { [ Scroll_Lock ] };
+ key <FK15> { [ Pause ] };
+ // End "Function" section
+
+ // Begin "Editing" section
+ key <INS> { [ Insert ] };
+ key <HOME> { [ Home ] };
+ key <PGUP> { [ Prior ] };
+ key <DELE> { [ Delete ] };
+ key <END> { [ End ] };
+ key <PGDN> { [ Next ] };
+
+ key <UP> { [ Up ] };
+ key <LEFT> { [ Left ] };
+ key <DOWN> { [ Down ] };
+ key <RGHT> { [ Right ] };
+ // End "Editing" section
+
+ key <BKSP> { [ BackSpace ] };
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <RTRN> { [ Return ] };
+ key <CAPS> { [ Caps_Lock ] };
+ key <NMLK> { [ Num_Lock, Pointer_EnableKeys ] };
+
+ // Begin "Modifier" section
+ key <LFSH> { [ Shift_L ] };
+ key <RTSH> { [ Shift_R ] };
+ key <LCTL> { [ Control_L ] };
+ key <RCTL> { [ Control_R ] };
+ key <LALT> { [ Alt_L, Meta_L ] };
+ key <RALT> { [ Alt_R, Meta_R ] };
+ key <LWIN> { [ Super_L ] };
+ key <RWIN> { [ Super_R ] };
+ // End "Modifier" section
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_L, Shift_R };
+ modifier_map Lock { Caps_Lock, ISO_Lock };
+ modifier_map Control{ Control_L, Control_R };
+ modifier_map Mod2 { Num_Lock };
+
+ // Fake keys for virtual<->real modifiers mapping
+ key <LVL3> { [ ISO_Level3_Shift ] };
+ key <MDSW> { [ Mode_switch ] };
+ modifier_map Mod5 { <LVL3>, <MDSW> };
+
+ key <ALT> { [ NoSymbol, Alt_L ] };
+ modifier_map Mod1 { <ALT>, <LALT> };
+
+ key <META> { [ NoSymbol, Meta_L ] };
+ modifier_map Mod1 { <META> };
+
+ key <SUPR> { [ NoSymbol, Super_L ] };
+ modifier_map Mod4 { <SUPR> };
+
+ key <HYPR> { [ NoSymbol, Hyper_L ] };
+ modifier_map Mod4 { <HYPR> };
+ // end modifier mappings
+
+};
diff --git a/xorg-server/xkeyboard-config/symbols/mao b/xorg-server/xkeyboard-config/symbols/mao
index 30c039a0c..b62994b2c 100644
--- a/xorg-server/xkeyboard-config/symbols/mao
+++ b/xorg-server/xkeyboard-config/symbols/mao
@@ -1,23 +1,21 @@
-// $XKeyboardConfig$
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Adds the macrons needed for the Maori language to
- // a simple us keyboard layout.
-
- include "latin"
-
- name[Group1]="Maori";
-
- key <AC01> { [ a, A, amacron, Amacron ] };
- key <AD03> { [ e, E, emacron, Emacron ] };
- key <AD08> { [ i, I, imacron, Imacron ] };
-
- key <AD09> { [ o, O, omacron, Omacron ] };
- key <AD07> { [ u, U, umacron, Umacron ] };
-
- key <RALT> { type[Group1]="TWO_LEVEL",
- [ ISO_Level3_Shift, Multi_key ] };
- modifier_map Mod5 { <RALT> };
-};
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Adds the macrons needed for the Maori language to
+ // a simple us keyboard layout.
+
+ include "latin"
+
+ name[Group1]="Maori";
+
+ key <AC01> { [ a, A, amacron, Amacron ] };
+ key <AD03> { [ e, E, emacron, Emacron ] };
+ key <AD08> { [ i, I, imacron, Imacron ] };
+
+ key <AD09> { [ o, O, omacron, Omacron ] };
+ key <AD07> { [ u, U, umacron, Umacron ] };
+
+ key <RALT> { type[Group1]="TWO_LEVEL",
+ [ ISO_Level3_Shift, Multi_key ] };
+ modifier_map Mod5 { <RALT> };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/me b/xorg-server/xkeyboard-config/symbols/me
index a4b407376..3f1733199 100644
--- a/xorg-server/xkeyboard-config/symbols/me
+++ b/xorg-server/xkeyboard-config/symbols/me
@@ -1,53 +1,52 @@
-// Montenegro keyboard mapping
-//
-// Initially, a copy of Serbian variants
-//
-// $XKeyboardConfig$
-
-default partial alphanumeric_keys
-xkb_symbols "basic" {
- include "rs(latin)"
- name[Group1]= "Montenegro";
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "cyrillic" {
- include "rs(basic)"
- name[Group1]= "Montenegro - Cyrillic";
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "cyrillicyz" {
- include "rs(yz)"
- name[Group1]= "Montenegro - Cyrillic, Z and ZHE swapped";
-};
-
-partial alphanumeric_keys
-xkb_symbols "latinunicode" {
- include "rs(latinunicode)"
- name[Group1]= "Montenegro - Latin unicode";
-};
-
-partial alphanumeric_keys
-xkb_symbols "latinyz" {
- include "rs(latinyz)"
- name[Group1]= "Montenegro - Latin qwerty";
-};
-
-partial alphanumeric_keys
-xkb_symbols "latinunicodeyz" {
- include "rs(latinunicodeyz)"
- name[Group1]= "Montenegro - Latin unicode qwerty";
-};
-
-xkb_symbols "cyrillicalternatequotes" {
- include "rs(alternatequotes)"
- name[Group1]= "Montenegro - Cyrillic with guillemets";
-};
-
-xkb_symbols "latinalternatequotes" {
- include "rs(latinalternatequotes)"
- name[Group1]= "Montenegro - Latin with guillemets";
-};
+// Montenegro keyboard mapping
+//
+// Initially, a copy of Serbian variants
+//
+
+default partial alphanumeric_keys
+xkb_symbols "basic" {
+ include "rs(latin)"
+ name[Group1]= "Montenegro";
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "cyrillic" {
+ include "rs(basic)"
+ name[Group1]= "Montenegro - Cyrillic";
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "cyrillicyz" {
+ include "rs(yz)"
+ name[Group1]= "Montenegro - Cyrillic, Z and ZHE swapped";
+};
+
+partial alphanumeric_keys
+xkb_symbols "latinunicode" {
+ include "rs(latinunicode)"
+ name[Group1]= "Montenegro - Latin unicode";
+};
+
+partial alphanumeric_keys
+xkb_symbols "latinyz" {
+ include "rs(latinyz)"
+ name[Group1]= "Montenegro - Latin qwerty";
+};
+
+partial alphanumeric_keys
+xkb_symbols "latinunicodeyz" {
+ include "rs(latinunicodeyz)"
+ name[Group1]= "Montenegro - Latin unicode qwerty";
+};
+
+xkb_symbols "cyrillicalternatequotes" {
+ include "rs(alternatequotes)"
+ name[Group1]= "Montenegro - Cyrillic with guillemets";
+};
+
+xkb_symbols "latinalternatequotes" {
+ include "rs(latinalternatequotes)"
+ name[Group1]= "Montenegro - Latin with guillemets";
+};
diff --git a/xorg-server/xkeyboard-config/symbols/mk b/xorg-server/xkeyboard-config/symbols/mk
index c69439c5d..c8acb1e39 100644
--- a/xorg-server/xkeyboard-config/symbols/mk
+++ b/xorg-server/xkeyboard-config/symbols/mk
@@ -1,67 +1,65 @@
-
-// based on keyboard map:
-// Author: Damjan Georgievski <penguinista AT mail.net.mk>
-// Revision: 1.5
-// $XKeyboardConfig$
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
- name[Group1]= "Macedonia";
-
- key <AB01> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <AC02> { [ Cyrillic_es, Cyrillic_ES ] };
- key <AC01> { [ Cyrillic_a, Cyrillic_A ] };
- key <AD01> { [ Cyrillic_lje, Cyrillic_LJE ] };
- key <AD02> { [ Cyrillic_nje, Cyrillic_NJE ] };
- key <AB03> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <AB02> { [ Cyrillic_dzhe, Cyrillic_DZHE ] };
- key <AC03> { [ Cyrillic_de, Cyrillic_DE ] };
- key <AD03> { [ Cyrillic_ie, Cyrillic_IE ] };
- key <AB04> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <AC04> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <AD05> { [ Cyrillic_te, Cyrillic_TE ] };
- key <AD04> { [ Cyrillic_er, Cyrillic_ER ] };
- key <AB06> { [ Cyrillic_en, Cyrillic_EN ] };
- key <AB05> { [ Cyrillic_be, Cyrillic_BE ] };
- key <AC06> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <AC05> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <AD06> { [ Macedonia_dse, Macedonia_DSE ] };
- key <AB07> { [ Cyrillic_em, Cyrillic_EM ] };
- key <AC07> { [ Cyrillic_je, Cyrillic_JE ] };
- key <AD07> { [ Cyrillic_u, Cyrillic_U ] };
- key <AC08> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <AD08> { [ Cyrillic_i, Cyrillic_I ] };
- key <AD09> { [ Cyrillic_o, Cyrillic_O ] };
- key <AC09> { [ Cyrillic_el, Cyrillic_EL ] };
- key <AC10> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AD10> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <AC11> { [ Macedonia_kje, Macedonia_KJE ] };
- key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AD12> { [ Macedonia_gje, Macedonia_GJE ] };
- key <BKSL> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <AE12> { [ equal, plus ] };
- key <AE11> { [ minus, underscore ] };
- key <TLDE> { [ dead_grave, asciitilde ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, doublelowquotemark ] };
- key <AE03> { [ 3, leftdoublequotemark ] };
- key <AE04> { [ 4, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, asciicircum ] };
- key <AE07> { [ 7, ampersand ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ slash, question ] };
-
- include "kpdl(comma)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
- include "mk(basic)"
- name[Group1]= "Macedonia - Eliminate dead keys";
- key <TLDE> { [ grave, asciitilde ] };
-};
+// based on keyboard map:
+// Author: Damjan Georgievski <penguinista AT mail.net.mk>
+// Revision: 1.5
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ name[Group1]= "Macedonia";
+
+ key <AB01> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <AC02> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <AC01> { [ Cyrillic_a, Cyrillic_A ] };
+ key <AD01> { [ Cyrillic_lje, Cyrillic_LJE ] };
+ key <AD02> { [ Cyrillic_nje, Cyrillic_NJE ] };
+ key <AB03> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AB02> { [ Cyrillic_dzhe, Cyrillic_DZHE ] };
+ key <AC03> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <AD03> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <AB04> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <AC04> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <AD05> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <AD04> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <AB06> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <AB05> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <AC06> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <AC05> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <AD06> { [ Macedonia_dse, Macedonia_DSE ] };
+ key <AB07> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <AC07> { [ Cyrillic_je, Cyrillic_JE ] };
+ key <AD07> { [ Cyrillic_u, Cyrillic_U ] };
+ key <AC08> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <AD08> { [ Cyrillic_i, Cyrillic_I ] };
+ key <AD09> { [ Cyrillic_o, Cyrillic_O ] };
+ key <AC09> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <AC10> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AD10> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <AC11> { [ Macedonia_kje, Macedonia_KJE ] };
+ key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD12> { [ Macedonia_gje, Macedonia_GJE ] };
+ key <BKSL> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AE12> { [ equal, plus ] };
+ key <AE11> { [ minus, underscore ] };
+ key <TLDE> { [ dead_grave, asciitilde ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, doublelowquotemark ] };
+ key <AE03> { [ 3, leftdoublequotemark ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ slash, question ] };
+
+ include "kpdl(comma)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+ include "mk(basic)"
+ name[Group1]= "Macedonia - Eliminate dead keys";
+ key <TLDE> { [ grave, asciitilde ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/ml b/xorg-server/xkeyboard-config/symbols/ml
index 1cac28c41..741d6a206 100644
--- a/xorg-server/xkeyboard-config/symbols/ml
+++ b/xorg-server/xkeyboard-config/symbols/ml
@@ -1,5 +1,3 @@
-// $XKeyboardConfig$
-
partial default alphanumeric_keys
xkb_symbols "basic" {
diff --git a/xorg-server/xkeyboard-config/symbols/mm b/xorg-server/xkeyboard-config/symbols/mm
index 2f5319c42..43218ead5 100644
--- a/xorg-server/xkeyboard-config/symbols/mm
+++ b/xorg-server/xkeyboard-config/symbols/mm
@@ -1,65 +1,63 @@
-// $XKeyboardConfig$
-
-// based on a keyboard map from an 'xkb/symbols/mm' file
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
- name[Group1]= "Myanmar";
-
-// Mainly numbers.
- key <AE01> { [ 0x1001041, exclam ] };
- key <AE02> { [ 0x1001042 ] };
- key <AE03> { [ 0x1001043 ] };
- key <AE04> { [ 0x1001044 ] };
- key <AE05> { [ 0x1001045 ] };
- key <AE06> { [ 0x1001046 ] };
- key <AE07> { [ 0x1001047 ] };
- key <AE08> { [ 0x1001048 ] };
- key <AE09> { [ 0x1001049, parenleft ] };
- key <AE10> { [ 0x1001040, parenright ] };
- key <AE11> { [ minus, 0x1001038 ] };
- key <AE12> { [ 0x1001052, 0x1001056 ] };
-
-// Mainly long vowels
- key <AD01> { [ 0x100102A, 0x100102A ] };
- key <AD02> { [ 0x1001032, 0x1001032 ] };
- key <AD03> { [ 0x100102C, 0x1001021 ] };
- key <AD04> { [ 0x100102E, 0x1001024 ] };
- key <AD05> { [ 0x1001030, 0x1001026 ] };
-
-// Mainly voiced consonants
- key <AD06> { [ 0x1001017, 0x1001018 ] };
- key <AD07> { [ 0x100101F, 0x1001004 ] };
- key <AD08> { [ 0x1001002, 0x1001003 ] };
- key <AD09> { [ 0x1001012, 0x1001013 ] };
- key <AD10> { [ 0x1001007, 0x1001008 ] };
- key <AD11> { [ 0x100100d, 0x100100e ] };
- key <AD12> { [ 0x100100a, 0x1001009 ] };
-
-// Mainly short vowels
- key <AC01> { [ 0x1001029, 0x1001029 ] };
- key <AC02> { [ 0x1001027, 0x1001027 ] };
- key <AC03> { [ 0x1001039, 0x1001021 ] };
- key <AC04> { [ 0x100102D, 0x1001023 ] };
- key <AC05> { [ 0x100102F, 0x1001025 ] };
-
-// Mainly unvoiced consonants
- key <AC06> { [ 0x1001015, 0x1001016 ] };
- key <AC07> { [ 0x100101B, 0x100101B ] };
- key <AC08> { [ 0x1001000, 0x1001001 ] };
- key <AC09> { [ 0x1001010, 0x1001011 ] };
- key <AC10> { [ 0x1001005, 0x1001006 ] };
- key <AC11> { [ 0x100100b, 0x100100c ] };
- key <BKSL> { [ 0x100104E, 0x100104F ] };
-
- key <AB01> { [ 0x100104C, 0x100104D ] };
- key <AB02> { [ 0x1001037, 0x1001036 ] };
- key <AB03> { [ 0x1001019, 0x100100f ] };
- key <AB04> { [ 0x1001014, 0x1001014 ] };
- key <AB05> { [ 0x1001017, 0x1001017 ] };
- key <AB06> { [ 0x100101C, 0x100101C ] };
- key <AB07> { [ 0x100101E, 0x1001050 ] };
- key <AB08> { [ comma, 0x1001051 ] };
- key <AB09> { [ period, 0x100104A ] };
- key <AB10> { [ slash, 0x100101A ] };
-};
+// based on a keyboard map from an 'xkb/symbols/mm' file
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ name[Group1]= "Myanmar";
+
+// Mainly numbers.
+ key <AE01> { [ 0x1001041, exclam ] };
+ key <AE02> { [ 0x1001042 ] };
+ key <AE03> { [ 0x1001043 ] };
+ key <AE04> { [ 0x1001044 ] };
+ key <AE05> { [ 0x1001045 ] };
+ key <AE06> { [ 0x1001046 ] };
+ key <AE07> { [ 0x1001047 ] };
+ key <AE08> { [ 0x1001048 ] };
+ key <AE09> { [ 0x1001049, parenleft ] };
+ key <AE10> { [ 0x1001040, parenright ] };
+ key <AE11> { [ minus, 0x1001038 ] };
+ key <AE12> { [ 0x1001052, 0x1001056 ] };
+
+// Mainly long vowels
+ key <AD01> { [ 0x100102A, 0x100102A ] };
+ key <AD02> { [ 0x1001032, 0x1001032 ] };
+ key <AD03> { [ 0x100102C, 0x1001021 ] };
+ key <AD04> { [ 0x100102E, 0x1001024 ] };
+ key <AD05> { [ 0x1001030, 0x1001026 ] };
+
+// Mainly voiced consonants
+ key <AD06> { [ 0x1001017, 0x1001018 ] };
+ key <AD07> { [ 0x100101F, 0x1001004 ] };
+ key <AD08> { [ 0x1001002, 0x1001003 ] };
+ key <AD09> { [ 0x1001012, 0x1001013 ] };
+ key <AD10> { [ 0x1001007, 0x1001008 ] };
+ key <AD11> { [ 0x100100d, 0x100100e ] };
+ key <AD12> { [ 0x100100a, 0x1001009 ] };
+
+// Mainly short vowels
+ key <AC01> { [ 0x1001029, 0x1001029 ] };
+ key <AC02> { [ 0x1001027, 0x1001027 ] };
+ key <AC03> { [ 0x1001039, 0x1001021 ] };
+ key <AC04> { [ 0x100102D, 0x1001023 ] };
+ key <AC05> { [ 0x100102F, 0x1001025 ] };
+
+// Mainly unvoiced consonants
+ key <AC06> { [ 0x1001015, 0x1001016 ] };
+ key <AC07> { [ 0x100101B, 0x100101B ] };
+ key <AC08> { [ 0x1001000, 0x1001001 ] };
+ key <AC09> { [ 0x1001010, 0x1001011 ] };
+ key <AC10> { [ 0x1001005, 0x1001006 ] };
+ key <AC11> { [ 0x100100b, 0x100100c ] };
+ key <BKSL> { [ 0x100104E, 0x100104F ] };
+
+ key <AB01> { [ 0x100104C, 0x100104D ] };
+ key <AB02> { [ 0x1001037, 0x1001036 ] };
+ key <AB03> { [ 0x1001019, 0x100100f ] };
+ key <AB04> { [ 0x1001014, 0x1001014 ] };
+ key <AB05> { [ 0x1001017, 0x1001017 ] };
+ key <AB06> { [ 0x100101C, 0x100101C ] };
+ key <AB07> { [ 0x100101E, 0x1001050 ] };
+ key <AB08> { [ comma, 0x1001051 ] };
+ key <AB09> { [ period, 0x100104A ] };
+ key <AB10> { [ slash, 0x100101A ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/mn b/xorg-server/xkeyboard-config/symbols/mn
index 08109b781..44e5e4e67 100644
--- a/xorg-server/xkeyboard-config/symbols/mn
+++ b/xorg-server/xkeyboard-config/symbols/mn
@@ -1,83 +1,80 @@
-// $XKeyboardConfig$
-
-// based on:
-// Mongolian standard keyboard
-// Author Sanlig Badral <badral@chinggis.com>
-// 2002/12/7 Version 1.0
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- name[Group1]= "Mongolia";
-
- key <TLDE> { [ equal, plus, degree ] };
- key <AE01> { [ 1, numerosign, multiply ] };
- key <AE02> { [ 2, minus, division ] };
- key <AE03> { [ 3, quotedbl, plusminus ] };
- key <AE04> { [ 4, U20ae, notsign ] }; // Tugrik sign
- key <AE05> { [ 5, colon, NoSymbol ] };
- key <AE06> { [ 6, period, notequal ] };
- key <AE07> { [ 7, underscore, ampersand ] };
- key <AE08> { [ 8, comma, asterisk ] };
- key <AE09> { [ 9, percent, bracketleft ] };
- key <AE10> { [ 0, question, bracketright ] };
- key <AE11> { [ Cyrillic_ie, Cyrillic_IE, X ] };
- key <AE12> { [ Cyrillic_shcha, Cyrillic_SHCHA, L ] };
-
- key <AD01> { [ Cyrillic_ef, Cyrillic_EF, apostrophe ] };
- key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, grave ] };
- key <AD03> { [ Cyrillic_u, Cyrillic_U, EuroSign ] };
- key <AD04> { [ Cyrillic_zhe, Cyrillic_ZHE, registered ] };
- key <AD05> { [ Cyrillic_e, Cyrillic_E, trademark ] };
- key <AD06> { [ Cyrillic_en, Cyrillic_EN, yen ] };
- key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, doublelowquotemark ] };
- key <AD08> { [ Cyrillic_sha, Cyrillic_SHA, leftdoublequotemark ] };
- key <AD09> { [ Cyrillic_u_straight,Cyrillic_U_straight,rightdoublequotemark] };
- key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, NoSymbol ] };
- key <AD11> { [ Cyrillic_ka, Cyrillic_KA, braceleft ] };
- key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, braceright ] };
-
- key <AC01> { [ Cyrillic_shorti, Cyrillic_SHORTI, mu ] };
- key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU, sterling ] };
- key <AC03> { [ Cyrillic_be, Cyrillic_BE, dollar ] };
- key <AC04> { [ Cyrillic_o_bar, Cyrillic_O_bar, rightdoublequotemark ] };
- key <AC05> { [ Cyrillic_a, Cyrillic_A, Cyrillic_yeru ] };
- key <AC06> { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_YERU ] };
- key <AC07> { [ Cyrillic_er, Cyrillic_ER, Cyrillic_e ] };
- key <AC08> { [ Cyrillic_o, Cyrillic_O, Cyrillic_E ] };
- key <AC09> { [ Cyrillic_el, Cyrillic_EL, numerosign ] };
- key <AC10> { [ Cyrillic_de, Cyrillic_DE, section ] };
- key <AC11> { [ Cyrillic_pe, Cyrillic_PE, ellipsis ] };
- key <BKSL> { [ exclam, bar, bar ] };
-
- key <LSGT> { [ parenleft, parenright, NoSymbol ] };
- key <AB01> { [ Cyrillic_ya, Cyrillic_YA, emdash ] };
- key <AB02> { [ Cyrillic_che, Cyrillic_CHE, endash ] };
- key <AB03> { [ Cyrillic_io, Cyrillic_IO, copyright ] };
- key <AB04> { [ Cyrillic_es, Cyrillic_ES, NoSymbol ] };
- key <AB05> { [ Cyrillic_em, Cyrillic_EM, NoSymbol ] };
- key <AB06> { [ Cyrillic_i, Cyrillic_I, less ] };
- key <AB07> { [ Cyrillic_te, Cyrillic_TE, greater ] };
- key <AB08> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, guillemotleft ] };
- key <AB09> { [ Cyrillic_ve, Cyrillic_VE, guillemotright ] };
- key <AB10> { [ Cyrillic_yu, Cyrillic_YU, backslash ] };
-
- // End alphanumeric section
-
- key <SPCE> { [ space, space, nobreakspace ] };
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "olpc" {
-
-// Contact: Walter Bender <walter@laptop.org>
-
- include "mn(basic)"
-
- key <BKSL> { [ backslash, bar, exclam ] };
-
- include "group(olpc)"
-};
-
+// based on:
+// Mongolian standard keyboard
+// Author Sanlig Badral <badral@chinggis.com>
+// 2002/12/7 Version 1.0
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ name[Group1]= "Mongolia";
+
+ key <TLDE> { [ equal, plus, degree ] };
+ key <AE01> { [ 1, numerosign, multiply ] };
+ key <AE02> { [ 2, minus, division ] };
+ key <AE03> { [ 3, quotedbl, plusminus ] };
+ key <AE04> { [ 4, U20ae, notsign ] }; // Tugrik sign
+ key <AE05> { [ 5, colon, NoSymbol ] };
+ key <AE06> { [ 6, period, notequal ] };
+ key <AE07> { [ 7, underscore, ampersand ] };
+ key <AE08> { [ 8, comma, asterisk ] };
+ key <AE09> { [ 9, percent, bracketleft ] };
+ key <AE10> { [ 0, question, bracketright ] };
+ key <AE11> { [ Cyrillic_ie, Cyrillic_IE, X ] };
+ key <AE12> { [ Cyrillic_shcha, Cyrillic_SHCHA, L ] };
+
+ key <AD01> { [ Cyrillic_ef, Cyrillic_EF, apostrophe ] };
+ key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, grave ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U, EuroSign ] };
+ key <AD04> { [ Cyrillic_zhe, Cyrillic_ZHE, registered ] };
+ key <AD05> { [ Cyrillic_e, Cyrillic_E, trademark ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN, yen ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, doublelowquotemark ] };
+ key <AD08> { [ Cyrillic_sha, Cyrillic_SHA, leftdoublequotemark ] };
+ key <AD09> { [ Cyrillic_u_straight,Cyrillic_U_straight,rightdoublequotemark] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, NoSymbol ] };
+ key <AD11> { [ Cyrillic_ka, Cyrillic_KA, braceleft ] };
+ key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, braceright ] };
+
+ key <AC01> { [ Cyrillic_shorti, Cyrillic_SHORTI, mu ] };
+ key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU, sterling ] };
+ key <AC03> { [ Cyrillic_be, Cyrillic_BE, dollar ] };
+ key <AC04> { [ Cyrillic_o_bar, Cyrillic_O_bar, rightdoublequotemark ] };
+ key <AC05> { [ Cyrillic_a, Cyrillic_A, Cyrillic_yeru ] };
+ key <AC06> { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_YERU ] };
+ key <AC07> { [ Cyrillic_er, Cyrillic_ER, Cyrillic_e ] };
+ key <AC08> { [ Cyrillic_o, Cyrillic_O, Cyrillic_E ] };
+ key <AC09> { [ Cyrillic_el, Cyrillic_EL, numerosign ] };
+ key <AC10> { [ Cyrillic_de, Cyrillic_DE, section ] };
+ key <AC11> { [ Cyrillic_pe, Cyrillic_PE, ellipsis ] };
+ key <BKSL> { [ exclam, bar, bar ] };
+
+ key <LSGT> { [ parenleft, parenright, NoSymbol ] };
+ key <AB01> { [ Cyrillic_ya, Cyrillic_YA, emdash ] };
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE, endash ] };
+ key <AB03> { [ Cyrillic_io, Cyrillic_IO, copyright ] };
+ key <AB04> { [ Cyrillic_es, Cyrillic_ES, NoSymbol ] };
+ key <AB05> { [ Cyrillic_em, Cyrillic_EM, NoSymbol ] };
+ key <AB06> { [ Cyrillic_i, Cyrillic_I, less ] };
+ key <AB07> { [ Cyrillic_te, Cyrillic_TE, greater ] };
+ key <AB08> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, guillemotleft ] };
+ key <AB09> { [ Cyrillic_ve, Cyrillic_VE, guillemotright ] };
+ key <AB10> { [ Cyrillic_yu, Cyrillic_YU, backslash ] };
+
+ // End alphanumeric section
+
+ key <SPCE> { [ space, space, nobreakspace ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "olpc" {
+
+// Contact: Walter Bender <walter@laptop.org>
+
+ include "mn(basic)"
+
+ key <BKSL> { [ backslash, bar, exclam ] };
+
+ include "group(olpc)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/mt b/xorg-server/xkeyboard-config/symbols/mt
index 5069aa4ed..87307cadb 100644
--- a/xorg-server/xkeyboard-config/symbols/mt
+++ b/xorg-server/xkeyboard-config/symbols/mt
@@ -1,80 +1,76 @@
-// $XKeyboardConfig$
-
-// Maltese keyboard map (based on MSA Standard DMS100)
-// by Ramon Casha (ramon.casha@linux.org.mt)
-//
-// $XFree86: xc/programs/xkbcomp/symbols/mt,v 1.3 2002/12/13 04:18:04 dawes Exp $
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- include "latin"
-
- name[Group1]="Malta";
-
- // Copied from GB layout
- key <AE02> { [ 2, quotedbl, twosuperior, oneeighth ] };
- key <AE04> { [ 4, dollar, EuroSign, onequarter ] };
- key <AC11> { [apostrophe, at, dead_circumflex, dead_caron] };
- key <BKSL> { [numbersign, asciitilde, dead_grave, dead_breve ] };
-
- // The following four sets are the four additional letters, with the UK
- // equivalents
- key <TLDE> { [ cabovedot, Cabovedot, grave, notsign ] };
- key <AD11> { [ gabovedot, Gabovedot, bracketleft, braceleft ] };
- key <AD12> { [ hstroke, Hstroke, bracketright, braceright ] };
- key <LSGT> { [ zabovedot, Zabovedot, backslash, bar ] };
-
- // Euro symbol
- key <AE03> { [ 3, EuroSign, sterling ] };
-
- // Long accent
- key <AE06> { [ 6, asciicircum, dead_circumflex, dead_circumflex ] };
-
- // Normal accented vowels
- key <AD03> { [ e, E, egrave, Egrave ] };
- key <AD07> { [ u, U, ugrave, Ugrave ] };
- key <AD08> { [ i, I, igrave, Igrave ] };
- key <AD09> { [ o, O, ograve, Ograve ] };
- key <AC01> { [ a, A, agrave, Agrave ] };
-
- include "level3(ralt_switch)"
-};
-
-// Maltese keyboard map (based on MSA Standard DMS100, annex A)
-// by Ramon Casha (ramon.casha@linux.org.mt)
-
-partial alphanumeric_keys
-xkb_symbols "us" {
-
- include "latin"
-
- // Describes the differences between the mt
- // keyboard and a US-based physical keyboard
-
- name[Group1]="Malta - Maltese keyboard with US layout";
-
- // The following four sets are the four additional letters, with the US
- // equivalents
- key <TLDE> { [ cabovedot, Cabovedot, grave, asciitilde ] };
- key <AD11> { [ gabovedot, Gabovedot, bracketleft, braceleft ] };
- key <AD12> { [ hstroke, Hstroke, bracketright, braceright ] };
- key <LSGT> { [ zabovedot, Zabovedot, backslash, bar ] };
- key <BKSL> { [ zabovedot, Zabovedot, backslash, bar ] };
-
- // Euro symbol
- key <AE03> { [ 3, EuroSign, numbersign ] };
-
- // Long accent
- key <AE06> { [ 6, asciicircum, dead_circumflex, dead_circumflex ] };
-
- // Normal accented vowels
- key <AD03> { [ e, E, egrave, Egrave ] };
- key <AD07> { [ u, U, ugrave, Ugrave ] };
- key <AD08> { [ i, I, igrave, Igrave ] };
- key <AD09> { [ o, O, ograve, Ograve ] };
- key <AC01> { [ a, A, agrave, Agrave ] };
-
- include "level3(ralt_switch)"
-
-};
+// Maltese keyboard map (based on MSA Standard DMS100)
+// by Ramon Casha (ramon.casha@linux.org.mt)
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ include "latin"
+
+ name[Group1]="Malta";
+
+ // Copied from GB layout
+ key <AE02> { [ 2, quotedbl, twosuperior, oneeighth ] };
+ key <AE04> { [ 4, dollar, EuroSign, onequarter ] };
+ key <AC11> { [apostrophe, at, dead_circumflex, dead_caron] };
+ key <BKSL> { [numbersign, asciitilde, dead_grave, dead_breve ] };
+
+ // The following four sets are the four additional letters, with the UK
+ // equivalents
+ key <TLDE> { [ cabovedot, Cabovedot, grave, notsign ] };
+ key <AD11> { [ gabovedot, Gabovedot, bracketleft, braceleft ] };
+ key <AD12> { [ hstroke, Hstroke, bracketright, braceright ] };
+ key <LSGT> { [ zabovedot, Zabovedot, backslash, bar ] };
+
+ // Euro symbol
+ key <AE03> { [ 3, EuroSign, sterling ] };
+
+ // Long accent
+ key <AE06> { [ 6, asciicircum, dead_circumflex, dead_circumflex ] };
+
+ // Normal accented vowels
+ key <AD03> { [ e, E, egrave, Egrave ] };
+ key <AD07> { [ u, U, ugrave, Ugrave ] };
+ key <AD08> { [ i, I, igrave, Igrave ] };
+ key <AD09> { [ o, O, ograve, Ograve ] };
+ key <AC01> { [ a, A, agrave, Agrave ] };
+
+ include "level3(ralt_switch)"
+};
+
+// Maltese keyboard map (based on MSA Standard DMS100, annex A)
+// by Ramon Casha (ramon.casha@linux.org.mt)
+
+partial alphanumeric_keys
+xkb_symbols "us" {
+
+ include "latin"
+
+ // Describes the differences between the mt
+ // keyboard and a US-based physical keyboard
+
+ name[Group1]="Malta - Maltese keyboard with US layout";
+
+ // The following four sets are the four additional letters, with the US
+ // equivalents
+ key <TLDE> { [ cabovedot, Cabovedot, grave, asciitilde ] };
+ key <AD11> { [ gabovedot, Gabovedot, bracketleft, braceleft ] };
+ key <AD12> { [ hstroke, Hstroke, bracketright, braceright ] };
+ key <LSGT> { [ zabovedot, Zabovedot, backslash, bar ] };
+ key <BKSL> { [ zabovedot, Zabovedot, backslash, bar ] };
+
+ // Euro symbol
+ key <AE03> { [ 3, EuroSign, numbersign ] };
+
+ // Long accent
+ key <AE06> { [ 6, asciicircum, dead_circumflex, dead_circumflex ] };
+
+ // Normal accented vowels
+ key <AD03> { [ e, E, egrave, Egrave ] };
+ key <AD07> { [ u, U, ugrave, Ugrave ] };
+ key <AD08> { [ i, I, igrave, Igrave ] };
+ key <AD09> { [ o, O, ograve, Ograve ] };
+ key <AC01> { [ a, A, agrave, Agrave ] };
+
+ include "level3(ralt_switch)"
+
+};
diff --git a/xorg-server/xkeyboard-config/symbols/mv b/xorg-server/xkeyboard-config/symbols/mv
index 22aa33986..1cbea3586 100644
--- a/xorg-server/xkeyboard-config/symbols/mv
+++ b/xorg-server/xkeyboard-config/symbols/mv
@@ -1,82 +1,81 @@
-// $XKeyboardConfig$
-//
-// NOTES:
-//
-//Keymap for thaana/divehi script (divehi language)
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- name[Group1]="Maldives";
-
-// The key <TLDE> should have the same values as US_en keyboard
-
- key <TLDE> { [ quoteleft, asciitilde ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, asciicircum ] };
- key <AE07> { [ 7, ampersand ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
-
- key <AD01> { [ 0x10007B0, 0x10007A4 ] };
- key <AD02> { [ 0x1000787, 0x10007A2 ] };
- key <AD03> { [ 0x10007AC, 0x10007AD ] };
- key <AD04> { [ 0x1000783, 0x100079C ] };
- key <AD05> { [ 0x100078C, 0x1000793 ] };
- key <AD06> { [ 0x1000794, 0x10007A0 ] };
- key <AD07> { [ 0x10007AA, 0x10007AB ] };
- key <AD08> { [ 0x10007A8, 0x10007A9 ] };
- key <AD09> { [ 0x10007AE, 0x10007AF ] };
- key <AD10> { [ 0x1000795, division ] };
-// The following brackets are as they appear on the US_en keyboard.
-//Please verify whether the names used are correct. I referred to keysymdef.h
- key <AD11> { [ bracketleft, braceleft ] };
- key <AD12> { [ bracketright, braceright ] };
-
-
- key <AC01> { [ 0x10007A6, 0x10007A7 ] };
- key <AC02> { [ 0x1000790, 0x1000781 ] };
- key <AC03> { [ 0x100078B, 0x1000791 ] };
- key <AC04> { [ 0x100078A, 0x100fdf2 ] };
- key <AC05> { [ 0x100078E, 0x10007A3 ] };
- key <AC06> { [ 0x1000780, 0x1000799 ] };
- key <AC07> { [ 0x1000796, 0x100079B ] };
- key <AC08> { [ 0x1000786, 0x100079A ] };
- key <AC09> { [ 0x100078D, 0x1000785 ] };
- key <AC10> { [ semicolon, colon ] };
-//I used singleloquotemark- if this is the wrong name, please replace with the name for the
-//standard US_en keyboard format- its the same in the Thaana phonetic keyboard
- key <AC11> { [ quoteright, quotedbl ] };
- key <BKSL> { [ backslash, bar ] };
-
- key <LSGT> { [ bar, brokenbar ] };
- key <AB01> { [ 0x1000792, 0x10007A1 ] };
-//multiply sign is the same as the algebraic symbol which looks like an italicized x. I am presuming its the same thing here. If not, please substitute an 'x' instead
- key <AB02> { [ multiply, 0x1000798 ] };
- key <AB03> { [ 0x1000797, 0x100079D ] };
- key <AB04> { [ 0x1000788, 0x10007A5 ] };
- key <AB05> { [ 0x1000784, 0x100079E ] };
- key <AB06> { [ 0x1000782, 0x100078F ] };
- key <AB07> { [ 0x1000789, 0x100079F ] };
- key <AB08> { [ Arabic_comma, less ] };
- key <AB09> { [ period, greater ] };
- key <AB10> { [ slash, Arabic_question_mark ] };
-
- // End alphanumeric section
-
- // Begin modifier mappings
-
- modifier_map Shift { Shift_L };
- modifier_map Lock { Caps_Lock, ISO_Lock };
- modifier_map Control{ Control_L };
- modifier_map Mod3 { Mode_switch };
-};
-
-// Any additional keys (if need be added) should appear and function exactly as it does on the US_en keyboard.
+//
+// NOTES:
+//
+//Keymap for thaana/divehi script (divehi language)
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ name[Group1]="Maldives";
+
+// The key <TLDE> should have the same values as US_en keyboard
+
+ key <TLDE> { [ quoteleft, asciitilde ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+
+ key <AD01> { [ 0x10007B0, 0x10007A4 ] };
+ key <AD02> { [ 0x1000787, 0x10007A2 ] };
+ key <AD03> { [ 0x10007AC, 0x10007AD ] };
+ key <AD04> { [ 0x1000783, 0x100079C ] };
+ key <AD05> { [ 0x100078C, 0x1000793 ] };
+ key <AD06> { [ 0x1000794, 0x10007A0 ] };
+ key <AD07> { [ 0x10007AA, 0x10007AB ] };
+ key <AD08> { [ 0x10007A8, 0x10007A9 ] };
+ key <AD09> { [ 0x10007AE, 0x10007AF ] };
+ key <AD10> { [ 0x1000795, division ] };
+// The following brackets are as they appear on the US_en keyboard.
+//Please verify whether the names used are correct. I referred to keysymdef.h
+ key <AD11> { [ bracketleft, braceleft ] };
+ key <AD12> { [ bracketright, braceright ] };
+
+
+ key <AC01> { [ 0x10007A6, 0x10007A7 ] };
+ key <AC02> { [ 0x1000790, 0x1000781 ] };
+ key <AC03> { [ 0x100078B, 0x1000791 ] };
+ key <AC04> { [ 0x100078A, 0x100fdf2 ] };
+ key <AC05> { [ 0x100078E, 0x10007A3 ] };
+ key <AC06> { [ 0x1000780, 0x1000799 ] };
+ key <AC07> { [ 0x1000796, 0x100079B ] };
+ key <AC08> { [ 0x1000786, 0x100079A ] };
+ key <AC09> { [ 0x100078D, 0x1000785 ] };
+ key <AC10> { [ semicolon, colon ] };
+//I used singleloquotemark- if this is the wrong name, please replace with the name for the
+//standard US_en keyboard format- its the same in the Thaana phonetic keyboard
+ key <AC11> { [ quoteright, quotedbl ] };
+ key <BKSL> { [ backslash, bar ] };
+
+ key <LSGT> { [ bar, brokenbar ] };
+ key <AB01> { [ 0x1000792, 0x10007A1 ] };
+//multiply sign is the same as the algebraic symbol which looks like an italicized x. I am presuming its the same thing here. If not, please substitute an 'x' instead
+ key <AB02> { [ multiply, 0x1000798 ] };
+ key <AB03> { [ 0x1000797, 0x100079D ] };
+ key <AB04> { [ 0x1000788, 0x10007A5 ] };
+ key <AB05> { [ 0x1000784, 0x100079E ] };
+ key <AB06> { [ 0x1000782, 0x100078F ] };
+ key <AB07> { [ 0x1000789, 0x100079F ] };
+ key <AB08> { [ Arabic_comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, Arabic_question_mark ] };
+
+ // End alphanumeric section
+
+ // Begin modifier mappings
+
+ modifier_map Shift { Shift_L };
+ modifier_map Lock { Caps_Lock, ISO_Lock };
+ modifier_map Control{ Control_L };
+ modifier_map Mod3 { Mode_switch };
+};
+
+// Any additional keys (if need be added) should appear and function exactly as it does on the US_en keyboard.
diff --git a/xorg-server/xkeyboard-config/symbols/nbsp b/xorg-server/xkeyboard-config/symbols/nbsp
index 8ba5afe23..220dae460 100644
--- a/xorg-server/xkeyboard-config/symbols/nbsp
+++ b/xorg-server/xkeyboard-config/symbols/nbsp
@@ -1,5 +1,3 @@
-// $XKeyboardConfig$
-
// Let Space key provide No-Break Space (NBSP), Narrow No-Break Space (NNBSP),
// Zero-Width Non-Joiner (ZWNJ), and Zero-Width Joiner (ZWJ) for the desired
// levels.
@@ -194,4 +192,3 @@ xkb_symbols "zwnj3zwj4" {
symbols[Group1]= [ space, space, 0x100200c, 0x100200d ]
};
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/nec_vndr/jp b/xorg-server/xkeyboard-config/symbols/nec_vndr/jp
index 0439677e4..10477a43c 100644
--- a/xorg-server/xkeyboard-config/symbols/nec_vndr/jp
+++ b/xorg-server/xkeyboard-config/symbols/nec_vndr/jp
@@ -1,167 +1,163 @@
-// $Xorg: jp,v 1.4 2001/02/09 02:05:53 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-// $XFree86: xc/programs/xkbcomp/symbols/nec/jp,v 3.9 2001/01/17 23:46:03 dawes Exp $
-//
-// symbols for a NEC PC98 keyboard
-default xkb_symbols "pc98" {
-
- key <ESC> { [ Escape ] };
-
- // Alphanumeric section
- key <AE01> { [ 1, exclam ], [ kana_NU ] };
- key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
- key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
- key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
- key <AE05> { [ 5, percent ], [ kana_E, kana_e ] };
- key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
- key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ] };
- key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ] };
- key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ] };
- key <AE10> { [ 0 ], [ kana_WA, kana_WO ] };
- key <AE11> { [ minus, equal ], [ kana_HO ] };
- key <AE12> { [ asciicircum, quoteleft ], [ kana_HE ] };
- key <BKSL> { [ backslash, bar ], [ prolongedsound ] };
- key <BKSP> { [ BackSpace ] };
-
- key <TAB> { [ Tab, ISO_Left_Tab ] };
- key <AD01> { [ q, Q ], [ kana_TA ] };
- key <AD02> { [ w, W ], [ kana_TE ] };
- key <AD03> { [ e, E ], [ kana_I, kana_i ] };
- key <AD04> { [ r, R ], [ kana_SU ] };
- key <AD05> { [ t, T ], [ kana_KA ] };
- key <AD06> { [ y, Y ], [ kana_N ] };
- key <AD07> { [ u, U ], [ kana_NA ] };
- key <AD08> { [ i, I ], [ kana_NI ] };
- key <AD09> { [ o, O ], [ kana_RA ] };
- key <AD10> { [ p, P ], [ kana_SE ] };
- key <AD11> { [ at, asciitilde ], [ voicedsound ] };
- key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
- key <RTRN> { [ Return ] };
-
- key <LCTL> { [ Control_L ] };
- key <CAPS> { [ Caps_Lock ] };
- key <AC01> { [ a, A ], [ kana_CHI ] };
- key <AC02> { [ s, S ], [ kana_TO ] };
- key <AC03> { [ d, D ], [ kana_SHI ] };
- key <AC04> { [ f, F ], [ kana_HA ] };
- key <AC05> { [ g, G ], [ kana_KI ] };
- key <AC06> { [ h, H ], [ kana_KU ] };
- key <AC07> { [ j, J ], [ kana_MA ] };
- key <AC08> { [ k, K ], [ kana_NO ] };
- key <AC09> { [ l, L ], [ kana_RI ] };
- key <AC10> { [ semicolon, plus ], [ kana_RE ] };
- key <AC11> { [ colon, asterisk ], [ kana_KE ] };
- key <AC12> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
-
- key <LFSH> { [ Shift_L ] };
- key <AB01> { [ z, Z ], [ kana_TSU, kana_tsu ] };
- key <AB02> { [ x, X ], [ kana_SA ] };
- key <AB03> { [ c, C ], [ kana_SO ] };
- key <AB04> { [ v, V ], [ kana_HI ] };
- key <AB05> { [ b, B ], [ kana_KO ] };
- key <AB06> { [ n, N ], [ kana_MI ] };
- key <AB07> { [ m, M ], [ kana_MO ] };
- key <AB08> { [ comma, less ], [ kana_NE, kana_comma ] };
- key <AB09> { [ period, greater ], [ kana_RU, kana_fullstop ] };
- key <AB10> { [ slash, question ], [ kana_ME, kana_middledot ] };
- key <AB11> { [ NoSymbol, underscore ], [ kana_RO ] };
-// key <RTSH> { [ Shift_R ] };
-
- key <ALGR> { [ Mode_switch ] };
- key <LALT> { [ Alt_L ] };
- key <NFER> { [ Muhenkan ] };
- key <SPCE> { [ space ] };
- key <XFER> { [ Henkan, Kanji ] };
-
- // End alphanumeric section
-
- // Begin "Function" section
- key <BRK> { [ Break ] };
- key <PRSC> { [ Print ] };
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ F11 ] };
- key <FK12> { [ F12 ] };
- key <FK13> { [ F13 ] };
- key <FK14> { [ F14 ] };
- key <FK15> { [ F15 ] };
- // End "Function" section
-
- // Begin "Editing" section
- key <INS> { [ Insert ] };
- key <DELE> { [ Delete ] };
- key <PGUP> { [ Prior ] };
- key <PGDN> { [ Next ] };
- key <UP> { [ Up ] };
- key <LEFT> { [ Left ] };
- key <RGHT> { [ Right ] };
- key <DOWN> { [ Down ] };
- // End "Editing" section
-
- // Begin "Keypad" section
- key <HOME> { [ Clear, Home ] };
- key <HELP> { [ Help ] };
- key <KPSU> { [ KP_Subtract ] };
- key <KPDV> { [ KP_Divide ] };
-
- key <KP7> { [ KP_7 ] };
- key <KP8> { [ KP_8 ] };
- key <KP9> { [ KP_9 ] };
- key <KPMU> { [ KP_Multiply ] };
-
- key <KP4> { [ KP_4 ] };
- key <KP5> { [ KP_5 ] };
- key <KP6> { [ KP_6 ] };
- key <KPAD> { [ KP_Add ] };
-
- key <KP1> { [ KP_1 ] };
- key <KP2> { [ KP_2 ] };
- key <KP3> { [ KP_3 ] };
- key <KPEQ> { [ KP_Equal ] };
-
- key <KP0> { [ KP_0 ] };
- key <KPSP> { [ KP_Separator ] };
- key <KPDC> { [ KP_Decimal ] };
-// key <KPEN> { [ KP_Enter ] };
- // End "Keypad" section
-
- // begin modifier mappings
- modifier_map Shift { Shift_L };
- modifier_map Lock { Caps_Lock };
- modifier_map Control{ Control_L };
- modifier_map Mod1 { Alt_L };
- modifier_map Mod2 { Mode_switch };
-};
-
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+// symbols for a NEC PC98 keyboard
+default xkb_symbols "pc98" {
+
+ key <ESC> { [ Escape ] };
+
+ // Alphanumeric section
+ key <AE01> { [ 1, exclam ], [ kana_NU ] };
+ key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
+ key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
+ key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
+ key <AE05> { [ 5, percent ], [ kana_E, kana_e ] };
+ key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
+ key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ] };
+ key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ] };
+ key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ] };
+ key <AE10> { [ 0 ], [ kana_WA, kana_WO ] };
+ key <AE11> { [ minus, equal ], [ kana_HO ] };
+ key <AE12> { [ asciicircum, quoteleft ], [ kana_HE ] };
+ key <BKSL> { [ backslash, bar ], [ prolongedsound ] };
+ key <BKSP> { [ BackSpace ] };
+
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [ q, Q ], [ kana_TA ] };
+ key <AD02> { [ w, W ], [ kana_TE ] };
+ key <AD03> { [ e, E ], [ kana_I, kana_i ] };
+ key <AD04> { [ r, R ], [ kana_SU ] };
+ key <AD05> { [ t, T ], [ kana_KA ] };
+ key <AD06> { [ y, Y ], [ kana_N ] };
+ key <AD07> { [ u, U ], [ kana_NA ] };
+ key <AD08> { [ i, I ], [ kana_NI ] };
+ key <AD09> { [ o, O ], [ kana_RA ] };
+ key <AD10> { [ p, P ], [ kana_SE ] };
+ key <AD11> { [ at, asciitilde ], [ voicedsound ] };
+ key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
+ key <RTRN> { [ Return ] };
+
+ key <LCTL> { [ Control_L ] };
+ key <CAPS> { [ Caps_Lock ] };
+ key <AC01> { [ a, A ], [ kana_CHI ] };
+ key <AC02> { [ s, S ], [ kana_TO ] };
+ key <AC03> { [ d, D ], [ kana_SHI ] };
+ key <AC04> { [ f, F ], [ kana_HA ] };
+ key <AC05> { [ g, G ], [ kana_KI ] };
+ key <AC06> { [ h, H ], [ kana_KU ] };
+ key <AC07> { [ j, J ], [ kana_MA ] };
+ key <AC08> { [ k, K ], [ kana_NO ] };
+ key <AC09> { [ l, L ], [ kana_RI ] };
+ key <AC10> { [ semicolon, plus ], [ kana_RE ] };
+ key <AC11> { [ colon, asterisk ], [ kana_KE ] };
+ key <AC12> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
+
+ key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ z, Z ], [ kana_TSU, kana_tsu ] };
+ key <AB02> { [ x, X ], [ kana_SA ] };
+ key <AB03> { [ c, C ], [ kana_SO ] };
+ key <AB04> { [ v, V ], [ kana_HI ] };
+ key <AB05> { [ b, B ], [ kana_KO ] };
+ key <AB06> { [ n, N ], [ kana_MI ] };
+ key <AB07> { [ m, M ], [ kana_MO ] };
+ key <AB08> { [ comma, less ], [ kana_NE, kana_comma ] };
+ key <AB09> { [ period, greater ], [ kana_RU, kana_fullstop ] };
+ key <AB10> { [ slash, question ], [ kana_ME, kana_middledot ] };
+ key <AB11> { [ NoSymbol, underscore ], [ kana_RO ] };
+// key <RTSH> { [ Shift_R ] };
+
+ key <ALGR> { [ Mode_switch ] };
+ key <LALT> { [ Alt_L ] };
+ key <NFER> { [ Muhenkan ] };
+ key <SPCE> { [ space ] };
+ key <XFER> { [ Henkan, Kanji ] };
+
+ // End alphanumeric section
+
+ // Begin "Function" section
+ key <BRK> { [ Break ] };
+ key <PRSC> { [ Print ] };
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ F11 ] };
+ key <FK12> { [ F12 ] };
+ key <FK13> { [ F13 ] };
+ key <FK14> { [ F14 ] };
+ key <FK15> { [ F15 ] };
+ // End "Function" section
+
+ // Begin "Editing" section
+ key <INS> { [ Insert ] };
+ key <DELE> { [ Delete ] };
+ key <PGUP> { [ Prior ] };
+ key <PGDN> { [ Next ] };
+ key <UP> { [ Up ] };
+ key <LEFT> { [ Left ] };
+ key <RGHT> { [ Right ] };
+ key <DOWN> { [ Down ] };
+ // End "Editing" section
+
+ // Begin "Keypad" section
+ key <HOME> { [ Clear, Home ] };
+ key <HELP> { [ Help ] };
+ key <KPSU> { [ KP_Subtract ] };
+ key <KPDV> { [ KP_Divide ] };
+
+ key <KP7> { [ KP_7 ] };
+ key <KP8> { [ KP_8 ] };
+ key <KP9> { [ KP_9 ] };
+ key <KPMU> { [ KP_Multiply ] };
+
+ key <KP4> { [ KP_4 ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_6 ] };
+ key <KPAD> { [ KP_Add ] };
+
+ key <KP1> { [ KP_1 ] };
+ key <KP2> { [ KP_2 ] };
+ key <KP3> { [ KP_3 ] };
+ key <KPEQ> { [ KP_Equal ] };
+
+ key <KP0> { [ KP_0 ] };
+ key <KPSP> { [ KP_Separator ] };
+ key <KPDC> { [ KP_Decimal ] };
+// key <KPEN> { [ KP_Enter ] };
+ // End "Keypad" section
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_L };
+ modifier_map Lock { Caps_Lock };
+ modifier_map Control{ Control_L };
+ modifier_map Mod1 { Alt_L };
+ modifier_map Mod2 { Mode_switch };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/ng b/xorg-server/xkeyboard-config/symbols/ng
index 5b3a19e27..96a569d3a 100644
--- a/xorg-server/xkeyboard-config/symbols/ng
+++ b/xorg-server/xkeyboard-config/symbols/ng
@@ -1,117 +1,114 @@
-// $XKeyboardConfig$
-//
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- include "us"
-
- name[Group1]= "Nigeria";
- key <AE04> { [ 4, 0x010020A6, dollar, cent ] };
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "yoruba" {
- include "ng(basic)"
-
- name[Group1]= "Nigeria - Yoruba";
-
- key <AD01> { [ 0x01001EB9, 0x01001EB8, q, Q ] };
- key <AB02> { [ 0x01001ECD, 0x01001ECC, x, X ] };
- key <AB04> { [ 0x01001E63, 0x01001E62, v, V ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "igbo" {
- include "ng(basic)"
-
- name[Group1]= "Nigeria - Igbo";
-
- key <AD01> { [ 0x01001ECB, 0x01001ECA, q, Q ] };
- key <AB02> { [ 0x01001E45, 0x01001E44, x, X ] };
- key <AC10> { [ 0x01001EE5, 0x01001EE4, semicolon, colon ] };
- key <AD11> { [ 0x01001ECD, 0x01001ECC, bracketleft, braceleft ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "hausa" {
- include "ng(basic)"
-
- name[Group1]= "Nigeria - Hausa";
-
- key <AD01> { [ 0x01000071, 0x01000051, q, Q ] };
- key <AD02> { [ udiaeresis, Udiaeresis, w, W ] };
- key <AD03> { [ e, E, EuroSign, cent ] };
- key <AD11> { [ 0x010001B4, 0x010001B3,bracketleft, braceleft ] };
- key <AD12> { [ gcaron, Gcaron,bracketright, braceright] };
- key <AC03> { [ 0x01000257, 0x0100018A, d, D ] };
- key <AC10> { [ 0x01000131, 0x01000130, semicolon, colon ] };
- key <AC11> { [ 0x010001DD, 0x0100018E,apostrophe, quotedbl ] };
- key <AB01> { [ 0x01000272, 0x0100019D, z, Z ] };
- key <AB07> { [ ntilde, Ntilde, m, M ] };
- key <AB09> { [ ccedilla, Ccedilla, period, greater ] };
- key <AB10> { [ scedilla, Scedilla, slash, question ] };
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "olpc" {
-
- include "ng(basic)"
-
- // OLPC West Africa keyboard layout
- // See: http://wiki.laptop.org/go/Image:Nigeria-B3.png
-
- key <TLDE> { [ grave, asciitilde, exclamdown, exclamdown ] };
- key <AE01> { [ 1, exclam, sterling, sterling ] };
- key <AE02> { [ 2, at, EuroSign, EuroSign ] };
- key <AE03> { [ 3, numbersign, dollar, dollar ] };
- key <AE04> { [ 4, 0x10020A6, 0x1000301, 0x1000301 ] }; // Naira, combining acute
- key <AE05> { [ 5, percent, 0x1000300, 0x1000300 ] }; // combining grave
- key <AE06> { [ 6,asciicircum, 0x100030A, 0x100030A ] }; // combining ring above
- key <AE07> { [ 7, ampersand, 0x1000302, 0x1000302 ] }; // combining circumflex above
- key <AE08> { [ 8, asterisk, 0x1000324, 0x1000324 ] }; // combining caron above
- key <AE09> { [ 9, parenleft, 0x1000307, 0x1000307 ] }; // combining dot above
- key <AE10> { [ 0, parenright, 0x1000308, 0x1000308 ] }; // combining diaeresis above
- key <AE11> { [ minus, underscore, 0x1000304, 0x1000304 ] }; // combining macron above
- key <AE12> { [ equal, plus, 0x1000303, 0x1000303 ] }; // combining tilde above
-
- key <AD02> { [ w, W, 0x1001EB9, 0x1001EB8 ] }; // E with dot below
- key <AD03> { [ e, E, 0x10001DD, 0x100018E ] }; // reversed E
- key <AD04> { [ r, R, 0x10001B4, 0x10001B3 ] }; // Y with hook
- key <AD05> { [ t, T, 0x1000327, 0x1000327 ] }; // combining cedilla
- key <AD06> { [ y, Y, 0x1000325, 0x1000325 ] }; // combining ring below
- key <AD07> { [ u, U, 0x100032D, 0x100032D ] }; // combining circumflex below
- key <AD08> { [ i, I, 0x100032C, 0x100032C ] }; // combining caron below
- key <AD09> { [ o, O, 0x1000323, 0x1000323 ] }; // combining dot below
- key <AD10> { [ p, P, 0x1000304, 0x1000304 ] }; // combining diaeresis below
- key <AD11> { [ bracketleft, braceleft, 0x1000331, 0x1000331 ] }; // combining macron below
- key <AD12> { [bracketright, braceright, 0x1000330, 0x1000330 ] }; // combining tilde below
-
- key <AC01> { [ a, A, Greek_iota, Greek_IOTA ] };
- key <AC02> { [ s, S, 0x1001E63, 0x1001E62 ] }; // S with dot below
- key <AC03> { [ d, D, 0x1000257, 0x100018A ] }; // D with hook
- key <AC04> { [ f, F, 0x1001E0D, 0x1001E0C ] }; // D with dot below
- key <AC05> { [ g, G, 0x1000272, 0x100019D ] }; // N with left hook
- key <AC06> { [ h, H, 0x1001EE5, 0x1001EE4 ] }; // U with dot below
- key <AC07> { [ j, J, 0x1001ECB, 0x1001ECA ] }; // I with dot below
- key <AC08> { [ k, K, 0x1000199, 0x1000198 ] }; // K with hook
- key <AC09> { [ l, L, 0x1001E37, 0x1001E36 ] }; // L with dot below
- key <AC10> { [ semicolon, colon, masculine, ordfeminine ] };
- key <AC11> { [ apostrophe, quotedbl, currency, currency ] };
- key <BKSL> { [ backslash, bar, section, section ] };
-
- key <AB03> { [ c, C, 0x1000254, 0x1000186 ] }; // open O
- key <AB04> { [ v, V, 0x100028B, 0x10001B2 ] }; // V with hook
- key <AB05> { [ b, B, 0x1000253, 0x1000181 ] }; // B with hook
- key <AB06> { [ n, N, eng, ENG ] };
- key <AB07> { [ m, M, 0x1001E45, 0x1001E44 ] }; // N with dot above
- key <AB08> { [ comma, less, guillemotleft, guillemotleft ] };
- key <AB09> { [ period, greater, guillemotright, guillemotright ] };
- key <AB10> { [ slash, question, questiondown, questiondown ] };
-
- key <I219> { [ multiply, division, ISO_Next_Group, ISO_Prev_Group ] };
-
- include "level3(ralt_switch)"
-};
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ include "us"
+
+ name[Group1]= "Nigeria";
+ key <AE04> { [ 4, 0x010020A6, dollar, cent ] };
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "yoruba" {
+ include "ng(basic)"
+
+ name[Group1]= "Nigeria - Yoruba";
+
+ key <AD01> { [ 0x01001EB9, 0x01001EB8, q, Q ] };
+ key <AB02> { [ 0x01001ECD, 0x01001ECC, x, X ] };
+ key <AB04> { [ 0x01001E63, 0x01001E62, v, V ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "igbo" {
+ include "ng(basic)"
+
+ name[Group1]= "Nigeria - Igbo";
+
+ key <AD01> { [ 0x01001ECB, 0x01001ECA, q, Q ] };
+ key <AB02> { [ 0x01001E45, 0x01001E44, x, X ] };
+ key <AC10> { [ 0x01001EE5, 0x01001EE4, semicolon, colon ] };
+ key <AD11> { [ 0x01001ECD, 0x01001ECC, bracketleft, braceleft ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "hausa" {
+ include "ng(basic)"
+
+ name[Group1]= "Nigeria - Hausa";
+
+ key <AD01> { [ 0x01000071, 0x01000051, q, Q ] };
+ key <AD02> { [ udiaeresis, Udiaeresis, w, W ] };
+ key <AD03> { [ e, E, EuroSign, cent ] };
+ key <AD11> { [ 0x010001B4, 0x010001B3,bracketleft, braceleft ] };
+ key <AD12> { [ gcaron, Gcaron,bracketright, braceright] };
+ key <AC03> { [ 0x01000257, 0x0100018A, d, D ] };
+ key <AC10> { [ 0x01000131, 0x01000130, semicolon, colon ] };
+ key <AC11> { [ 0x010001DD, 0x0100018E,apostrophe, quotedbl ] };
+ key <AB01> { [ 0x01000272, 0x0100019D, z, Z ] };
+ key <AB07> { [ ntilde, Ntilde, m, M ] };
+ key <AB09> { [ ccedilla, Ccedilla, period, greater ] };
+ key <AB10> { [ scedilla, Scedilla, slash, question ] };
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "olpc" {
+
+ include "ng(basic)"
+
+ // OLPC West Africa keyboard layout
+ // See: http://wiki.laptop.org/go/Image:Nigeria-B3.png
+
+ key <TLDE> { [ grave, asciitilde, exclamdown, exclamdown ] };
+ key <AE01> { [ 1, exclam, sterling, sterling ] };
+ key <AE02> { [ 2, at, EuroSign, EuroSign ] };
+ key <AE03> { [ 3, numbersign, dollar, dollar ] };
+ key <AE04> { [ 4, 0x10020A6, 0x1000301, 0x1000301 ] }; // Naira, combining acute
+ key <AE05> { [ 5, percent, 0x1000300, 0x1000300 ] }; // combining grave
+ key <AE06> { [ 6,asciicircum, 0x100030A, 0x100030A ] }; // combining ring above
+ key <AE07> { [ 7, ampersand, 0x1000302, 0x1000302 ] }; // combining circumflex above
+ key <AE08> { [ 8, asterisk, 0x1000324, 0x1000324 ] }; // combining caron above
+ key <AE09> { [ 9, parenleft, 0x1000307, 0x1000307 ] }; // combining dot above
+ key <AE10> { [ 0, parenright, 0x1000308, 0x1000308 ] }; // combining diaeresis above
+ key <AE11> { [ minus, underscore, 0x1000304, 0x1000304 ] }; // combining macron above
+ key <AE12> { [ equal, plus, 0x1000303, 0x1000303 ] }; // combining tilde above
+
+ key <AD02> { [ w, W, 0x1001EB9, 0x1001EB8 ] }; // E with dot below
+ key <AD03> { [ e, E, 0x10001DD, 0x100018E ] }; // reversed E
+ key <AD04> { [ r, R, 0x10001B4, 0x10001B3 ] }; // Y with hook
+ key <AD05> { [ t, T, 0x1000327, 0x1000327 ] }; // combining cedilla
+ key <AD06> { [ y, Y, 0x1000325, 0x1000325 ] }; // combining ring below
+ key <AD07> { [ u, U, 0x100032D, 0x100032D ] }; // combining circumflex below
+ key <AD08> { [ i, I, 0x100032C, 0x100032C ] }; // combining caron below
+ key <AD09> { [ o, O, 0x1000323, 0x1000323 ] }; // combining dot below
+ key <AD10> { [ p, P, 0x1000304, 0x1000304 ] }; // combining diaeresis below
+ key <AD11> { [ bracketleft, braceleft, 0x1000331, 0x1000331 ] }; // combining macron below
+ key <AD12> { [bracketright, braceright, 0x1000330, 0x1000330 ] }; // combining tilde below
+
+ key <AC01> { [ a, A, Greek_iota, Greek_IOTA ] };
+ key <AC02> { [ s, S, 0x1001E63, 0x1001E62 ] }; // S with dot below
+ key <AC03> { [ d, D, 0x1000257, 0x100018A ] }; // D with hook
+ key <AC04> { [ f, F, 0x1001E0D, 0x1001E0C ] }; // D with dot below
+ key <AC05> { [ g, G, 0x1000272, 0x100019D ] }; // N with left hook
+ key <AC06> { [ h, H, 0x1001EE5, 0x1001EE4 ] }; // U with dot below
+ key <AC07> { [ j, J, 0x1001ECB, 0x1001ECA ] }; // I with dot below
+ key <AC08> { [ k, K, 0x1000199, 0x1000198 ] }; // K with hook
+ key <AC09> { [ l, L, 0x1001E37, 0x1001E36 ] }; // L with dot below
+ key <AC10> { [ semicolon, colon, masculine, ordfeminine ] };
+ key <AC11> { [ apostrophe, quotedbl, currency, currency ] };
+ key <BKSL> { [ backslash, bar, section, section ] };
+
+ key <AB03> { [ c, C, 0x1000254, 0x1000186 ] }; // open O
+ key <AB04> { [ v, V, 0x100028B, 0x10001B2 ] }; // V with hook
+ key <AB05> { [ b, B, 0x1000253, 0x1000181 ] }; // B with hook
+ key <AB06> { [ n, N, eng, ENG ] };
+ key <AB07> { [ m, M, 0x1001E45, 0x1001E44 ] }; // N with dot above
+ key <AB08> { [ comma, less, guillemotleft, guillemotleft ] };
+ key <AB09> { [ period, greater, guillemotright, guillemotright ] };
+ key <AB10> { [ slash, question, questiondown, questiondown ] };
+
+ key <I219> { [ multiply, division, ISO_Next_Group, ISO_Prev_Group ] };
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/nl b/xorg-server/xkeyboard-config/symbols/nl
index f4e698a94..727410545 100644
--- a/xorg-server/xkeyboard-config/symbols/nl
+++ b/xorg-server/xkeyboard-config/symbols/nl
@@ -1,155 +1,150 @@
-// $XKeyboardConfig$
-
-// Basic layout based on converted file, from keytable file to xkb/symbols/ file
-// with mk_xkb by root@linux.chanae.stben.be Tue Sep 30 00:53:29 MET DST 1997
-
-// Converted from the nl-latin.map of the Linux kbd package by
-// Pablo Saratxaga <srtxg@f2219.n293.z2.fidonet.org>
-//
-// $XFree86: xc/programs/xkbcomp/symbols/nl,v 1.2 2002/11/22 04:03:28 dawes Exp $
-
-// Official layout by Benno Schulenberg <bensberg@justemail.net>, January 2007,
-// based on http://www.xs4all.nl/~koospol/public/Xmodmap-nl-deadkeys.gz
-
-
-default partial alphanumeric_keys
-xkb_symbols "basic" {
-
- include "latin"
-
- name[Group1]="Netherlands";
-
- key <AE02> { [ 2, quotedbl, twosuperior, oneeighth ] };
- key <AE06> { [ 6, ampersand, threequarters, fiveeighths ] };
- key <AE07> { [ 7, underscore, sterling, seveneighths ] };
- key <AE08> { [ 8, parenleft, braceleft, bracketleft ] };
- key <AE09> { [ 9, parenright, braceright, bracketright ] };
- key <AE10> { [ 0, apostrophe, degree, trademark ] };
- key <AE11> { [ slash, question, backslash, questiondown ] };
- key <AE12> { [ degree, dead_tilde, dead_cedilla, dead_ogonek ] };
-
- key <AD03> { [ e, E, EuroSign, cent ] };
- key <AD05> { [ t, T, thorn, THORN ] };
- key <AD06> { [ y, Y, ydiaeresis, yen ] };
- key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
- key <AD08> { [ i, I, idiaeresis, Idiaeresis ] };
- key <AD09> { [ o, O, ograve, Ograve ] };
- key <AD10> { [ p, P, paragraph, THORN ] };
- key <AD11> { [dead_diaeresis, dead_circumflex, asciitilde, asciicircum] };
- key <AD12> { [ asterisk, bar, dead_tilde, dead_macron ] };
-
- key <AC01> { [ a, A, aacute, Aacute ] };
- key <AC04> { [ f, F, ordfeminine, ordfeminine ] };
- key <AC10> { [ plus, plusminus, dead_acute, dead_doubleacute ] };
- key <AC11> { [dead_acute, dead_grave, apostrophe, grave ] };
- key <TLDE> { [ at, section, notsign, notsign ] };
-
- key <BKSL> { [ less, greater, dead_grave, dead_breve ] };
- key <AB06> { [ n, N, ntilde, Ntilde ] };
- key <AB07> { [ m, M, Greek_mu, masculine ] };
- key <AB08> { [ comma, semicolon, cedilla, guillemotleft] };
- key <AB09> { [ period, colon, periodcentered, guillemotright ] };
- key <AB10> { [ minus, equal, hyphen, dead_abovedot] };
-
- key <LSGT> { [bracketright, bracketleft, bar, brokenbar ] };
-
- include "level3(ralt_switch)"
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "std" {
-
- name[Group1]= "Netherlands - Standard";
-
- key <TLDE> { [ at, section, notsign ] };
- key <AE01> { [ 1, exclam, onesuperior ] };
- key <AE02> { [ 2, quotedbl, twosuperior ] };
- key <AE03> { [ 3, numbersign, threesuperior ] };
- key <AE04> { [ 4, dollar, onequarter ] };
- key <AE05> { [ 5, percent, onehalf ] };
- key <AE06> { [ 6, ampersand, threequarters ] };
- key <AE07> { [ 7, underscore, sterling ] };
- key <AE08> { [ 8, parenleft, braceleft ] };
- key <AE09> { [ 9, parenright, braceright ] };
- key <AE10> { [ 0, apostrophe ] };
- key <AE11> { [ slash, question, backslash ] };
- key <AE12> { [ degree, dead_tilde, dead_cedilla ] };
-
- key <AD01> { [ q, Q ] };
- key <AD02> { [ w, W ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD04> { [ r, R, paragraph ] };
- key <AD05> { [ t, T ] };
- key <AD06> { [ y, Y ] };
- key <AD07> { [ u, U ] };
- key <AD08> { [ i, I ] };
- key <AD09> { [ o, O ] };
- key <AD10> { [ p, P ] };
- key <AD11> { [ dead_diaeresis, dead_circumflex ] };
- key <AD12> { [ asterisk, bar ] };
- key <BKSL> { [ less, greater ] };
-
- key <AC01> { [ a, A ] };
- key <AC02> { [ s, S, ssharp ] };
- key <AC03> { [ d, D ] };
- key <AC04> { [ f, F ] };
- key <AC05> { [ g, G ] };
- key <AC06> { [ h, H ] };
- key <AC07> { [ j, J ] };
- key <AC08> { [ k, K ] };
- key <AC09> { [ l, L ] };
- key <AC10> { [ plus, plusminus ] };
- key <AC11> { [ dead_acute, dead_grave ] };
-
- key <LSGT> { [ bracketright, bracketleft, bar ] };
- key <AB01> { [ z, Z, guillemotleft ] };
- key <AB02> { [ x, X, guillemotright ] };
- key <AB03> { [ c, C, cent ] };
- key <AB04> { [ v, V ] };
- key <AB05> { [ b, B ] };
- key <AB06> { [ n, N ] };
- key <AB07> { [ m, M, mu ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon, periodcentered ] };
- key <AB10> { [ minus, equal ] };
-
- include "level3(ralt_switch)"
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "Sundeadkeys" {
-
- // For naming consistency
-
- include "nl(basic)"
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "sundeadkeys" {
-
- // For naming consistency
-
- include "nl(Sundeadkeys)"
- name[Group1]="Netherlands - Sun dead keys";
-};
-
-// Copied from macintosh_vndr/nl
-partial alphanumeric_keys
-xkb_symbols "mac" {
-
- // Describes the differences between a very simple mac_US
- // keyboard and a very simple netherland keybaord
-
- include "latin"
-
- name[Group1]= "Netherlands - Macintosh";
-
- include "level3(ralt_switch)"
-
-// do just nothing
-
-};
-
+// Basic layout based on converted file, from keytable file to xkb/symbols/ file
+// with mk_xkb by root@linux.chanae.stben.be Tue Sep 30 00:53:29 MET DST 1997
+
+// Converted from the nl-latin.map of the Linux kbd package by
+// Pablo Saratxaga <srtxg@f2219.n293.z2.fidonet.org>
+
+// Official layout by Benno Schulenberg <bensberg@justemail.net>, January 2007,
+// based on http://www.xs4all.nl/~koospol/public/Xmodmap-nl-deadkeys.gz
+
+
+default partial alphanumeric_keys
+xkb_symbols "basic" {
+
+ include "latin"
+
+ name[Group1]="Netherlands";
+
+ key <AE02> { [ 2, quotedbl, twosuperior, oneeighth ] };
+ key <AE06> { [ 6, ampersand, threequarters, fiveeighths ] };
+ key <AE07> { [ 7, underscore, sterling, seveneighths ] };
+ key <AE08> { [ 8, parenleft, braceleft, bracketleft ] };
+ key <AE09> { [ 9, parenright, braceright, bracketright ] };
+ key <AE10> { [ 0, apostrophe, degree, trademark ] };
+ key <AE11> { [ slash, question, backslash, questiondown ] };
+ key <AE12> { [ degree, dead_tilde, dead_cedilla, dead_ogonek ] };
+
+ key <AD03> { [ e, E, EuroSign, cent ] };
+ key <AD05> { [ t, T, thorn, THORN ] };
+ key <AD06> { [ y, Y, ydiaeresis, yen ] };
+ key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
+ key <AD08> { [ i, I, idiaeresis, Idiaeresis ] };
+ key <AD09> { [ o, O, ograve, Ograve ] };
+ key <AD10> { [ p, P, paragraph, THORN ] };
+ key <AD11> { [dead_diaeresis, dead_circumflex, asciitilde, asciicircum] };
+ key <AD12> { [ asterisk, bar, dead_tilde, dead_macron ] };
+
+ key <AC01> { [ a, A, aacute, Aacute ] };
+ key <AC04> { [ f, F, ordfeminine, ordfeminine ] };
+ key <AC10> { [ plus, plusminus, dead_acute, dead_doubleacute ] };
+ key <AC11> { [dead_acute, dead_grave, apostrophe, grave ] };
+ key <TLDE> { [ at, section, notsign, notsign ] };
+
+ key <BKSL> { [ less, greater, dead_grave, dead_breve ] };
+ key <AB06> { [ n, N, ntilde, Ntilde ] };
+ key <AB07> { [ m, M, Greek_mu, masculine ] };
+ key <AB08> { [ comma, semicolon, cedilla, guillemotleft] };
+ key <AB09> { [ period, colon, periodcentered, guillemotright ] };
+ key <AB10> { [ minus, equal, hyphen, dead_abovedot] };
+
+ key <LSGT> { [bracketright, bracketleft, bar, brokenbar ] };
+
+ include "level3(ralt_switch)"
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "std" {
+
+ name[Group1]= "Netherlands - Standard";
+
+ key <TLDE> { [ at, section, notsign ] };
+ key <AE01> { [ 1, exclam, onesuperior ] };
+ key <AE02> { [ 2, quotedbl, twosuperior ] };
+ key <AE03> { [ 3, numbersign, threesuperior ] };
+ key <AE04> { [ 4, dollar, onequarter ] };
+ key <AE05> { [ 5, percent, onehalf ] };
+ key <AE06> { [ 6, ampersand, threequarters ] };
+ key <AE07> { [ 7, underscore, sterling ] };
+ key <AE08> { [ 8, parenleft, braceleft ] };
+ key <AE09> { [ 9, parenright, braceright ] };
+ key <AE10> { [ 0, apostrophe ] };
+ key <AE11> { [ slash, question, backslash ] };
+ key <AE12> { [ degree, dead_tilde, dead_cedilla ] };
+
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD04> { [ r, R, paragraph ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y ] };
+ key <AD07> { [ u, U ] };
+ key <AD08> { [ i, I ] };
+ key <AD09> { [ o, O ] };
+ key <AD10> { [ p, P ] };
+ key <AD11> { [ dead_diaeresis, dead_circumflex ] };
+ key <AD12> { [ asterisk, bar ] };
+ key <BKSL> { [ less, greater ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ s, S, ssharp ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K ] };
+ key <AC09> { [ l, L ] };
+ key <AC10> { [ plus, plusminus ] };
+ key <AC11> { [ dead_acute, dead_grave ] };
+
+ key <LSGT> { [ bracketright, bracketleft, bar ] };
+ key <AB01> { [ z, Z, guillemotleft ] };
+ key <AB02> { [ x, X, guillemotright ] };
+ key <AB03> { [ c, C, cent ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M, mu ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon, periodcentered ] };
+ key <AB10> { [ minus, equal ] };
+
+ include "level3(ralt_switch)"
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "Sundeadkeys" {
+
+ // For naming consistency
+
+ include "nl(basic)"
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "sundeadkeys" {
+
+ // For naming consistency
+
+ include "nl(Sundeadkeys)"
+ name[Group1]="Netherlands - Sun dead keys";
+};
+
+// Copied from macintosh_vndr/nl
+partial alphanumeric_keys
+xkb_symbols "mac" {
+
+ // Describes the differences between a very simple mac_US
+ // keyboard and a very simple netherland keybaord
+
+ include "latin"
+
+ name[Group1]= "Netherlands - Macintosh";
+
+ include "level3(ralt_switch)"
+
+// do just nothing
+
+};
diff --git a/xorg-server/xkeyboard-config/symbols/no b/xorg-server/xkeyboard-config/symbols/no
index 56c3d2c42..9515be154 100644
--- a/xorg-server/xkeyboard-config/symbols/no
+++ b/xorg-server/xkeyboard-config/symbols/no
@@ -1,230 +1,225 @@
-
-// based on a keyboard map from an 'xkb/symbols/no' file
-//
-// $XKeyboardConfig$
-// $XFree86: xc/programs/xkbcomp/symbols/no,v 1.3 2002/12/19 01:07:56 dawes Exp $
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple en_US
- // keyboard and a Norwegian keyboard with dead key support
- // and all of ISO-8859-1 characters available.
-
- include "latin(type2)"
-
- name[Group1]="Norway";
-
- key <AB09> { [ period, colon, ellipsis, periodcentered ] };
- key <AB10> { [ minus, underscore, endash, emdash ] };
- key <AD04> { [ r, R, registered, trademark ] };
- key <AD10> { [ p, P, Greek_pi, Greek_PI ] };
- key <AE05> { [ 5, percent, onehalf, 0x1002030 ] };
-
- key <AE11> { [ plus, question, plusminus, questiondown ] };
- key <AE12> { [ backslash, dead_grave, dead_acute, notsign ] };
-
-
- key <AC10> { [ oslash, Ooblique, dead_acute, dead_doubleacute ] };
- key <AC11> { [ ae, AE, dead_circumflex, dead_caron] };
- key <TLDE> { [ bar, section, brokenbar, paragraph ] };
-
- key <BKSL> { [apostrophe, asterisk, dead_doubleacute, multiply ] };
- key <LSGT> { [ less, greater, onehalf, threequarters] };
-
- include "nbsp(level3n)"
- include "keypad(ossmath)"
- include "kpdl(comma)"
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
-
- // Modifies the basic Norwegian layout to eliminate dead keys
-
- include "no(basic)"
-
- name[Group1]="Norway - Eliminate dead keys";
-
- key <AE12> { [ backslash, grave, acute, ogonek ] };
- key <AD12> { [ diaeresis, asciicircum, asciitilde, macron ] };
- key <AC10> { [ oslash, Ooblique, acute, doubleacute ] };
- key <AC11> { [ ae, AE, asciicircum, caron ] };
- key <AB08> { [ comma, semicolon, cedilla, ogonek ] };
- key <AB09> { [ period, colon, periodcentered, abovedot ] };
-};
-
-// Norwegian Dvorak
-partial alphanumeric_keys
-xkb_symbols "dvorak" {
- include "us(dvorak)"
-
- name[Group1]="Norway - Dvorak";
-
- key <TLDE> { [ bar, section, brokenbar, paragraph ] };
-
- key <AE01> { [ 1, exclam, exclamdown, onesuperior ] };
- key <AE02> { [ 2, quotedbl, at, twosuperior ] };
- key <AE03> { [ 3, numbersign, sterling, threesuperior ] };
- key <AE04> { [ 4, dollar, currency,onequarter ] };
- key <AE05> { [ 5, percent, onehalf, onehalf ] };
- key <AE06> { [ 6, ampersand, threequarters, threequarters ] };
- key <AE07> { [ 7, slash, braceleft, division ] };
- key <AE08> { [ 8, parenleft, bracketleft ] };
- key <AE09> { [ 9, parenright, bracketright ] };
- key <AE10> { [ 0, equal, braceright ] };
- key <AE11> { [ plus, question, plusminus, questiondown ] };
- key <AE12> { [ backslash, grave, dead_acute, dead_grave ] };
-
- key <AD01> { [ aring, Aring, braceright, bracketright ] };
- key <AD02> { [ comma, semicolon, dead_cedilla, cedilla ] };
- key <AD03> { [ period, colon, periodcentered ] };
- key <AD04> { [ p, P, thorn, THORN ] };
- key <AD05> { [ y, Y, yen ] };
- key <AD06> { [ f, F, ordfeminine ] };
- key <AD08> { [ c, C, ccedilla, copyright ] };
- key <AD09> { [ r, R, registered ] };
- key <AD11> { [ apostrophe, asterisk, dead_circumflex, acute ] };
- key <AD12> { [ asciitilde, asciicircum, dead_diaeresis, dead_tilde ] };
-
- key <AC03> { [ e, E, EuroSign, cent ] };
- key <AC05> { [ i, I, idotless, Iabovedot] };
- key <AC06> { [ d, D, eth, ETH ] };
- key <AC10> { [ s, S, ssharp ] };
- key <AC11> { [ minus, underscore, hyphen, diaeresis] };
-
- key <AB01> { [ ae, AE, braceleft, bracketleft] };
- key <AB05> { [ x, X, multiply ] };
- key <AB07> { [ m, M, mu ] };
- key <BKSL> { [ less, greater, guillemotleft, guillemotright ] };
-
- key <SPCE> { [ space, space, nobreakspace, nobreakspace] };
-
- key <LSGT> { [ oslash, Ooblique, bar, backslash ] };
-
- // fixed https://bugs.freedesktop.org/show_bug.cgi?id=4397
- include "level3(ralt_switch)"
-};
-
-// based on
-// Northern Sami keyboards for Finland, Norway and Sweden
-//
-// Describes the differences between a very simple en_US
-// keyboard and a Norwegian Northern Sami keyboard (with
-// dead key support) according to the spec on
-// http://www.hum.uit.no/a/trond/se-lat9-no-keys.html
-// Written by Børre Gaup <boerre.gaup@pc.nu>
-//
-// $XFree86: xc/programs/xkbcomp/symbols/sapmi,v 1.2 2002/11/22 04:03:28 dawes Exp $
-
-partial alphanumeric_keys
-xkb_symbols "smi" {
- include "latin"
-
- name[Group1]= "Norway - Northern Saami";
-
- key <AE01> { [ 1, exclam, copyright, exclamdown ] };
- key <AE02> { [ 2, quotedbl, at, registered ] };
- key <AE03> { [ 3, numbersign, sterling, less ] };
- key <AE04> { [ 4, dollar, dollar, greater ] };
- key <AE05> { [ 5, percent, U2022, U2030 ] };
- key <AE06> { [ 6, ampersand, section, paragraph ] };
- key <AE07> { [ 7, slash, braceleft, bar ] };
- key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
- key <AE09> { [ 9, parenright, bracketright, braceright ] };
- key <AE10> { [ 0, equal, braceright, notequal ] };
- key <AE11> { [ plus, question, division, questiondown ] };
- key <AE12> { [ backslash, grave, acute, asciitilde ] };
-
- key <AD01> { [ aacute, Aacute, q, Q ] };
- key <AD02> { [ scaron, Scaron, w, W ] };
- key <AD03> { [ e, E, eacute, Eacute ] };
- key <AD04> { [ r, R, registered, trademark ] };
- key <AD06> { [ y, Y, yacute, Yacute ] };
- key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
- key <AD08> { [ i, I, idiaeresis, Idiaeresis ] };
- key <AD09> { [ o, O, oe, OE ] };
- key <AD11> { [ aring, Aring, acircumflex, Acircumflex ] };
- key <AD12> { [ eng, ENG, quotedbl, asciicircum ] };
-
- key <AC01> { [ a, A, agrave, Agrave ] };
- key <AC02> { [ s, S, ssharp, apostrophe ] };
- key <AC04> { [ f, F, ordfeminine, ordfeminine ] };
- key <AC05> { [ g, G, gcaron, Gcaron ] };
- key <AC06> { [ h, H, U01E5, U01E4 ] };
- key <AC07> { [ j, J, notsign, multiply ] };
- key <AC08> { [ k, K, U01E9, U01E8 ] };
- key <AC09> { [ l, L, degree, hyphen ] };
- key <AC10> { [ oslash, Ooblique, odiaeresis, Odiaeresis ] };
- key <AC11> { [ ae, AE, adiaeresis, Adiaeresis ] };
- key <TLDE> { [ bar, section, brokenbar, paragraph ] };
-
- key <BKSL> { [ dstroke, Dstroke, apostrophe, asterisk ] };
- key <AB01> { [ z, Z, U0292, U01B7 ] };
- key <AB02> { [ ccaron, Ccaron, x, X ] };
- key <AB03> { [ c, C, ccedilla, Ccedilla ] };
- key <AB04> { [ v, V, lessthanequal, guillemotleft ] };
- key <AB05> { [ b, B, greaterthanequal, guillemotright ] };
- key <AB06> { [ n, N, leftsinglequotemark, leftdoublequotemark ] };
- key <AB07> { [ m, M, rightsinglequotemark, rightdoublequotemark ] };
- key <AB08> { [ comma, semicolon, singlelowquotemark, doublelowquotemark ] };
- key <AB09> { [ period, colon, ellipsis, periodcentered ] };
- key <AB10> { [ minus, underscore, endash, emdash ] };
-
- key <LSGT> { type[Group1] = "FOUR_LEVEL",
- [ zcaron, Zcaron, U01EF, U01EE ] };
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "smi_nodeadkeys" {
-
- // Modifies the basic Norwegian layout to eliminate dead keys
-
- include "no(smi)"
-
- name[Group1]= "Norway - Northern Saami, eliminate dead keys";
-
- key <AE12> { [ backslash, grave, acute, ogonek ] };
-};
-
-// Copied from macintosh_vndr/no
-partial alphanumeric_keys
-xkb_symbols "mac" {
-
- // Describes the differences between a very simple en_US
- // keyboard and a very simple Norwegian keybaord
-
- include "latin(type4)"
- name[Group1]= "Norway - Macintosh";
-
- key <TLDE> { [ bar, section ] };
- key <AE03> { [ 3, numbersign, sterling, sterling ] };
- key <AE04> { [ 4, currency, dollar, dollar ] };
- key <AE06> { [ 6, ampersand, threequarters, fiveeighths ] };
- key <AE07> { [ 7, slash, bar, backslash ] };
- key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
- key <AE09> { [ 9, parenright, bracketright, braceright ] };
- key <AC10> { [ oslash, Ooblique, odiaeresis, Odiaeresis ] };
- key <AE11> { [ plus, question ] };
- key <AC11> { [ ae, AE ] };
- key <AD11> { [ aring, Aring ] };
- key <AE12> { [ dead_grave, dead_acute, acute, dead_ogonek ] };
- key <AD12> { [ diaeresis, asciicircum, asciitilde, dead_macron ] };
- key <BKSL> { [ at, asterisk ] };
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "mac_nodeadkeys" {
-
- // Modifies the basic Norwegian layout to eliminate dead keys
- include "no(mac)"
- name[Group1]= "Norway - Macintosh, eliminate dead keys";
-
- key <AE12> { [ grave, acute, acute, ogonek ] };
- key <AD12> { [ diaeresis, asciicircum, asciitilde, macron ] };
-};
+// based on a keyboard map from an 'xkb/symbols/no' file
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple en_US
+ // keyboard and a Norwegian keyboard with dead key support
+ // and all of ISO-8859-1 characters available.
+
+ include "latin(type2)"
+
+ name[Group1]="Norway";
+
+ key <AB09> { [ period, colon, ellipsis, periodcentered ] };
+ key <AB10> { [ minus, underscore, endash, emdash ] };
+ key <AD04> { [ r, R, registered, trademark ] };
+ key <AD10> { [ p, P, Greek_pi, Greek_PI ] };
+ key <AE05> { [ 5, percent, onehalf, 0x1002030 ] };
+
+ key <AE11> { [ plus, question, plusminus, questiondown ] };
+ key <AE12> { [ backslash, dead_grave, dead_acute, notsign ] };
+
+
+ key <AC10> { [ oslash, Ooblique, dead_acute, dead_doubleacute ] };
+ key <AC11> { [ ae, AE, dead_circumflex, dead_caron] };
+ key <TLDE> { [ bar, section, brokenbar, paragraph ] };
+
+ key <BKSL> { [apostrophe, asterisk, dead_doubleacute, multiply ] };
+ key <LSGT> { [ less, greater, onehalf, threequarters] };
+
+ include "nbsp(level3n)"
+ include "keypad(ossmath)"
+ include "kpdl(comma)"
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+
+ // Modifies the basic Norwegian layout to eliminate dead keys
+
+ include "no(basic)"
+
+ name[Group1]="Norway - Eliminate dead keys";
+
+ key <AE12> { [ backslash, grave, acute, ogonek ] };
+ key <AD12> { [ diaeresis, asciicircum, asciitilde, macron ] };
+ key <AC10> { [ oslash, Ooblique, acute, doubleacute ] };
+ key <AC11> { [ ae, AE, asciicircum, caron ] };
+ key <AB08> { [ comma, semicolon, cedilla, ogonek ] };
+ key <AB09> { [ period, colon, periodcentered, abovedot ] };
+};
+
+// Norwegian Dvorak
+partial alphanumeric_keys
+xkb_symbols "dvorak" {
+ include "us(dvorak)"
+
+ name[Group1]="Norway - Dvorak";
+
+ key <TLDE> { [ bar, section, brokenbar, paragraph ] };
+
+ key <AE01> { [ 1, exclam, exclamdown, onesuperior ] };
+ key <AE02> { [ 2, quotedbl, at, twosuperior ] };
+ key <AE03> { [ 3, numbersign, sterling, threesuperior ] };
+ key <AE04> { [ 4, dollar, currency,onequarter ] };
+ key <AE05> { [ 5, percent, onehalf, onehalf ] };
+ key <AE06> { [ 6, ampersand, threequarters, threequarters ] };
+ key <AE07> { [ 7, slash, braceleft, division ] };
+ key <AE08> { [ 8, parenleft, bracketleft ] };
+ key <AE09> { [ 9, parenright, bracketright ] };
+ key <AE10> { [ 0, equal, braceright ] };
+ key <AE11> { [ plus, question, plusminus, questiondown ] };
+ key <AE12> { [ backslash, grave, dead_acute, dead_grave ] };
+
+ key <AD01> { [ aring, Aring, braceright, bracketright ] };
+ key <AD02> { [ comma, semicolon, dead_cedilla, cedilla ] };
+ key <AD03> { [ period, colon, periodcentered ] };
+ key <AD04> { [ p, P, thorn, THORN ] };
+ key <AD05> { [ y, Y, yen ] };
+ key <AD06> { [ f, F, ordfeminine ] };
+ key <AD08> { [ c, C, ccedilla, copyright ] };
+ key <AD09> { [ r, R, registered ] };
+ key <AD11> { [ apostrophe, asterisk, dead_circumflex, acute ] };
+ key <AD12> { [ asciitilde, asciicircum, dead_diaeresis, dead_tilde ] };
+
+ key <AC03> { [ e, E, EuroSign, cent ] };
+ key <AC05> { [ i, I, idotless, Iabovedot] };
+ key <AC06> { [ d, D, eth, ETH ] };
+ key <AC10> { [ s, S, ssharp ] };
+ key <AC11> { [ minus, underscore, hyphen, diaeresis] };
+
+ key <AB01> { [ ae, AE, braceleft, bracketleft] };
+ key <AB05> { [ x, X, multiply ] };
+ key <AB07> { [ m, M, mu ] };
+ key <BKSL> { [ less, greater, guillemotleft, guillemotright ] };
+
+ key <SPCE> { [ space, space, nobreakspace, nobreakspace] };
+
+ key <LSGT> { [ oslash, Ooblique, bar, backslash ] };
+
+ // fixed https://bugs.freedesktop.org/show_bug.cgi?id=4397
+ include "level3(ralt_switch)"
+};
+
+// based on
+// Northern Sami keyboards for Finland, Norway and Sweden
+//
+// Describes the differences between a very simple en_US
+// keyboard and a Norwegian Northern Sami keyboard (with
+// dead key support) according to the spec on
+// http://www.hum.uit.no/a/trond/se-lat9-no-keys.html
+// Written by Børre Gaup <boerre.gaup@pc.nu>
+//
+
+partial alphanumeric_keys
+xkb_symbols "smi" {
+ include "latin"
+
+ name[Group1]= "Norway - Northern Saami";
+
+ key <AE01> { [ 1, exclam, copyright, exclamdown ] };
+ key <AE02> { [ 2, quotedbl, at, registered ] };
+ key <AE03> { [ 3, numbersign, sterling, less ] };
+ key <AE04> { [ 4, dollar, dollar, greater ] };
+ key <AE05> { [ 5, percent, U2022, U2030 ] };
+ key <AE06> { [ 6, ampersand, section, paragraph ] };
+ key <AE07> { [ 7, slash, braceleft, bar ] };
+ key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
+ key <AE09> { [ 9, parenright, bracketright, braceright ] };
+ key <AE10> { [ 0, equal, braceright, notequal ] };
+ key <AE11> { [ plus, question, division, questiondown ] };
+ key <AE12> { [ backslash, grave, acute, asciitilde ] };
+
+ key <AD01> { [ aacute, Aacute, q, Q ] };
+ key <AD02> { [ scaron, Scaron, w, W ] };
+ key <AD03> { [ e, E, eacute, Eacute ] };
+ key <AD04> { [ r, R, registered, trademark ] };
+ key <AD06> { [ y, Y, yacute, Yacute ] };
+ key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
+ key <AD08> { [ i, I, idiaeresis, Idiaeresis ] };
+ key <AD09> { [ o, O, oe, OE ] };
+ key <AD11> { [ aring, Aring, acircumflex, Acircumflex ] };
+ key <AD12> { [ eng, ENG, quotedbl, asciicircum ] };
+
+ key <AC01> { [ a, A, agrave, Agrave ] };
+ key <AC02> { [ s, S, ssharp, apostrophe ] };
+ key <AC04> { [ f, F, ordfeminine, ordfeminine ] };
+ key <AC05> { [ g, G, gcaron, Gcaron ] };
+ key <AC06> { [ h, H, U01E5, U01E4 ] };
+ key <AC07> { [ j, J, notsign, multiply ] };
+ key <AC08> { [ k, K, U01E9, U01E8 ] };
+ key <AC09> { [ l, L, degree, hyphen ] };
+ key <AC10> { [ oslash, Ooblique, odiaeresis, Odiaeresis ] };
+ key <AC11> { [ ae, AE, adiaeresis, Adiaeresis ] };
+ key <TLDE> { [ bar, section, brokenbar, paragraph ] };
+
+ key <BKSL> { [ dstroke, Dstroke, apostrophe, asterisk ] };
+ key <AB01> { [ z, Z, U0292, U01B7 ] };
+ key <AB02> { [ ccaron, Ccaron, x, X ] };
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+ key <AB04> { [ v, V, lessthanequal, guillemotleft ] };
+ key <AB05> { [ b, B, greaterthanequal, guillemotright ] };
+ key <AB06> { [ n, N, leftsinglequotemark, leftdoublequotemark ] };
+ key <AB07> { [ m, M, rightsinglequotemark, rightdoublequotemark ] };
+ key <AB08> { [ comma, semicolon, singlelowquotemark, doublelowquotemark ] };
+ key <AB09> { [ period, colon, ellipsis, periodcentered ] };
+ key <AB10> { [ minus, underscore, endash, emdash ] };
+
+ key <LSGT> { type[Group1] = "FOUR_LEVEL",
+ [ zcaron, Zcaron, U01EF, U01EE ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "smi_nodeadkeys" {
+
+ // Modifies the basic Norwegian layout to eliminate dead keys
+
+ include "no(smi)"
+
+ name[Group1]= "Norway - Northern Saami, eliminate dead keys";
+
+ key <AE12> { [ backslash, grave, acute, ogonek ] };
+};
+
+// Copied from macintosh_vndr/no
+partial alphanumeric_keys
+xkb_symbols "mac" {
+
+ // Describes the differences between a very simple en_US
+ // keyboard and a very simple Norwegian keybaord
+
+ include "latin(type4)"
+ name[Group1]= "Norway - Macintosh";
+
+ key <TLDE> { [ bar, section ] };
+ key <AE03> { [ 3, numbersign, sterling, sterling ] };
+ key <AE04> { [ 4, currency, dollar, dollar ] };
+ key <AE06> { [ 6, ampersand, threequarters, fiveeighths ] };
+ key <AE07> { [ 7, slash, bar, backslash ] };
+ key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
+ key <AE09> { [ 9, parenright, bracketright, braceright ] };
+ key <AC10> { [ oslash, Ooblique, odiaeresis, Odiaeresis ] };
+ key <AE11> { [ plus, question ] };
+ key <AC11> { [ ae, AE ] };
+ key <AD11> { [ aring, Aring ] };
+ key <AE12> { [ dead_grave, dead_acute, acute, dead_ogonek ] };
+ key <AD12> { [ diaeresis, asciicircum, asciitilde, dead_macron ] };
+ key <BKSL> { [ at, asterisk ] };
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "mac_nodeadkeys" {
+
+ // Modifies the basic Norwegian layout to eliminate dead keys
+ include "no(mac)"
+ name[Group1]= "Norway - Macintosh, eliminate dead keys";
+
+ key <AE12> { [ grave, acute, acute, ogonek ] };
+ key <AD12> { [ diaeresis, asciicircum, asciitilde, macron ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/np b/xorg-server/xkeyboard-config/symbols/np
index 26085c010..635fa348a 100644
--- a/xorg-server/xkeyboard-config/symbols/np
+++ b/xorg-server/xkeyboard-config/symbols/np
@@ -1,124 +1,120 @@
-// $XKeyboardConfig$
-
-// based on a keyboard map from an 'xkb/symbols/dev' file
-//
-// $XFree86: xc/programs/xkbcomp/symbols/pc/dev,v 1.2 2002/11/22 04:03:28 dawes Exp $
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- name[Group1]= "Nepal";
-
-// `,1,2,3,4,5,6,7,8,9,0,-,=
-
- key <TLDE> { [ 0x100093D,0x100093C ] };
- key <AE01> { [ 0x1000967 ] };
- key <AE02> { [ 0x1000968 ] };
- key <AE03> { [ 0x1000969 ] };
- key <AE04> { [ 0x100096A ] };
- key <AE05> { [ 0x100096B ] };
- key <AE06> { [ 0x100096C ] };
- key <AE07> { [ 0x100096D ] };
- key <AE08> { [ 0x100096e ] };
- key <AE09> { [ 0x100096F ] };
- key <AE10> { [ 0x1000966,0x1000970 ] };
- key <AE11> { [ minus, 0x1000952 ] };
- key <AE12> { [ equal, 0x100200C ] };
-
-// q,w,e,r,t,y,u,i,o,p,[,]
-
- key <AD01> { [ 0x100091F, 0x1000920 ] };
- key <AD02> { [ 0x100094C, 0x1000914 ] };
- key <AD03> { [ 0x1000947, 0x1000948 ] };
- key <AD04> { [ 0x1000930, 0x1000943 ] };
- key <AD05> { [ 0x1000924, 0x1000925 ] };
- key <AD06> { [ 0x100092F, 0x100091E ] };
- key <AD07> { [ 0x1000941, 0x1000942 ] };
- key <AD08> { [ 0x100093F, 0x1000940 ] };
- key <AD09> { [ 0x100094B, 0x1000913 ] };
- key <AD10> { [ 0x100092A, 0x100092B ] };
- key <AD11> { [ 0x1000907, 0x1000908 ] };
- key <AD12> { [ 0x100090F, 0x1000910 ] };
-
-// a,s,d,f,g,h,j,k,l,;,',Backslash
- key <AC01> { [ 0x100093E, 0x1000906 ] };
- key <AC02> { [ 0x1000938, 0x1000936 ] };
- key <AC03> { [ 0x1000926, 0x1000927 ] };
- key <AC04> { [ 0x1000909, 0x100090A ] };
- key <AC05> { [ 0x1000917, 0x1000918 ] };
- key <AC06> { [ 0x1000939, 0x1000905 ] };
- key <AC07> { [ 0x100091C, 0x100091D ] };
- key <AC08> { [ 0x1000915, 0x1000916 ] };
- key <AC09> { [ 0x1000932, 0x1000933 ] };
- key <AC10> { [ semicolon, colon ] };
- key <AC11> { [ quoteright, quotedbl ] };
- key <BKSL> { [ 0x1000950, 0x1000903 ] };
-
-
-// z,x,c,v,b,n,m,,,.,/
- key <AB01> { [ 0x1000937, 0x100090B ] };
- key <AB02> { [ 0x1000921, 0x1000922 ] };
- key <AB03> { [ 0x100091B, 0x100091A ] };
- key <AB04> { [ 0x1000935, 0x1000901 ] };
- key <AB05> { [ 0x100092C, 0x100092D ] };
- key <AB06> { [ 0x1000928, 0x1000923 ] };
- key <AB07> { [ 0x100092E, 0x1000902 ] };
- key <AB08> { [ comma, 0x1000919 ] };
- key <AB09> { [ 0x1000964, 0x1000965 ] };
- key <AB10> { [ 0x100094D, question ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "olpc" {
-
-// Contact: Walter Bender <walter@laptop.org>
-
- include "np"
- key <TLDE> { [ grave, asciitilde ] };
- key <AE01> { [ 0x1000967 ] }; // Nepali digit one
- key <AE02> { [ 0x1000968 ] }; // Nepali digit two
- key <AE03> { [ 0x1000969 ] }; // Nepali digit three
- key <AE04> { [ 0x100096A ] }; // Nepali digit four
- key <AE05> { [ 0x100096B ] }; // Nepali digit five
- key <AE06> { [ 0x100096C, sterling ] }; // Nepali digit six
- key <AE07> { [ 0x100096D, eurosign ] }; // Nepali digit seven
- key <AE08> { [ 0x100096e ] }; // Nepali digit eight
- key <AE09> { [ 0x100096F ] }; // Nepali digit nine
- key <AE10> { [ 0x1000966 ] }; // Nepali digit zero
- key <AE12> { [ 0x1000950, 0x1000903 ] }; // OM, SIGN VISARGA
-
- key <AD01> { [ 0x100091C, 0x100091D ] }; // JA, JHA
- key <AD02> { [ 0x1000917, 0x1000918 ] }; // GA, GHA
- key <AD03> { [ 0x100092F, 0x100091E ] }; // YA, YNA
- key <AD04> { [ 0x1000938, 0x1000936 ] }; // SA, SHA
- key <AD05> { [ 0x100090F, 0x1000910 ] }; // E, AI
- key <AD06> { [ 0x100091B, 0x100091A ] }; // CHHA, CHA
- key <AD07> { [ 0x100092A, 0x100092B ] }; // PA, PHA
- key <AD08> { [ 0x1000947, 0x1000948 ] }; // VOWEL SIGN E, VOWEL SIGN AI
- key <AD09> { [ 0x100094B, 0x100093E ] }; // VOWEL SIGN O, VOWEL SIGN AA
- key <AD10> { [ 0x1000924, 0x1000925 ] }; // TA, THA
- key <AD11> { [ 0x1000909, 0x100090A ] }; // HRSHWA U, DIRGHA UU
- key <AD12> { [ 0x100093F, 0x1000940 ] }; // VOWEL SIGN HRSHWA I, VOWEL SIGN DIRGHA II
-
- key <AC01> { [ 0x100092E, 0x1000902 ] }; // MA, SIGN ANUSVARA
- key <AC02> { [ 0x1000907, 0x1000908 ] }; // HRSHWA I, DIRGHA II
- key <AC03> { [ 0x1000928, 0x1000923 ] }; // NA, NNA
- key <AC04> { [ 0x100094D, 0x1000921 ] }; // VIRAMA (HALANTA?), DDA
- key <AC05> { [ 0x100091F, 0x1000920 ] }; // TTA, TTHA
- key <AC06> { [ 0x1000926, 0x1000927 ] }; // DA, DHA
- key <AC07> { [ 0x100093E, 0x1000901 ] }; // SIGN AA, SIGN CANDRABINDU
- key <AC08> { [ 0x1000930, 0x1000943 ] }; // RA, VOWEL SIGN VOCALIC R
- key <AC09> { [ 0x1000915, 0x1000916 ] }; // KA, KHA
-
- key <AB01> { [ 0x1000937, 0x100090B ] }; // SSA, VOCALIC R (RRI)
- key <AB02> { [ 0x100092C, 0x100092D ] }; // BA, BHA
- key <AB03> { [ 0x1000941, 0x1000942 ] }; // VOWEL SIGN HRSHWA U, VOWEL SIGN DIRGHA U (UU)
- key <AB04> { [ 0x1000939, 0x1000922 ] }; // HA, DDHA
- key <AB05> { [ 0x1000913, 0x1000914 ] }; // O, AU
- key <AB06> { [ 0x1000905, 0x1000906 ] }; // A, AA
- key <AB07> { [ 0x1000932, 0x1000919 ] }; // LA, NGA
- key <AB08> { [ comma, 0x1000935 ] }; // VA
- key <AB09> { [ 0x1000964, 0x1000965 ] }; // PURNA VIRAM, DIRGHA VIRAM
-
- include "group(olpc)"
-};
+// based on a keyboard map from an 'xkb/symbols/dev' file
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ name[Group1]= "Nepal";
+
+// `,1,2,3,4,5,6,7,8,9,0,-,=
+
+ key <TLDE> { [ 0x100093D,0x100093C ] };
+ key <AE01> { [ 0x1000967 ] };
+ key <AE02> { [ 0x1000968 ] };
+ key <AE03> { [ 0x1000969 ] };
+ key <AE04> { [ 0x100096A ] };
+ key <AE05> { [ 0x100096B ] };
+ key <AE06> { [ 0x100096C ] };
+ key <AE07> { [ 0x100096D ] };
+ key <AE08> { [ 0x100096e ] };
+ key <AE09> { [ 0x100096F ] };
+ key <AE10> { [ 0x1000966,0x1000970 ] };
+ key <AE11> { [ minus, 0x1000952 ] };
+ key <AE12> { [ equal, 0x100200C ] };
+
+// q,w,e,r,t,y,u,i,o,p,[,]
+
+ key <AD01> { [ 0x100091F, 0x1000920 ] };
+ key <AD02> { [ 0x100094C, 0x1000914 ] };
+ key <AD03> { [ 0x1000947, 0x1000948 ] };
+ key <AD04> { [ 0x1000930, 0x1000943 ] };
+ key <AD05> { [ 0x1000924, 0x1000925 ] };
+ key <AD06> { [ 0x100092F, 0x100091E ] };
+ key <AD07> { [ 0x1000941, 0x1000942 ] };
+ key <AD08> { [ 0x100093F, 0x1000940 ] };
+ key <AD09> { [ 0x100094B, 0x1000913 ] };
+ key <AD10> { [ 0x100092A, 0x100092B ] };
+ key <AD11> { [ 0x1000907, 0x1000908 ] };
+ key <AD12> { [ 0x100090F, 0x1000910 ] };
+
+// a,s,d,f,g,h,j,k,l,;,',Backslash
+ key <AC01> { [ 0x100093E, 0x1000906 ] };
+ key <AC02> { [ 0x1000938, 0x1000936 ] };
+ key <AC03> { [ 0x1000926, 0x1000927 ] };
+ key <AC04> { [ 0x1000909, 0x100090A ] };
+ key <AC05> { [ 0x1000917, 0x1000918 ] };
+ key <AC06> { [ 0x1000939, 0x1000905 ] };
+ key <AC07> { [ 0x100091C, 0x100091D ] };
+ key <AC08> { [ 0x1000915, 0x1000916 ] };
+ key <AC09> { [ 0x1000932, 0x1000933 ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ quoteright, quotedbl ] };
+ key <BKSL> { [ 0x1000950, 0x1000903 ] };
+
+
+// z,x,c,v,b,n,m,,,.,/
+ key <AB01> { [ 0x1000937, 0x100090B ] };
+ key <AB02> { [ 0x1000921, 0x1000922 ] };
+ key <AB03> { [ 0x100091B, 0x100091A ] };
+ key <AB04> { [ 0x1000935, 0x1000901 ] };
+ key <AB05> { [ 0x100092C, 0x100092D ] };
+ key <AB06> { [ 0x1000928, 0x1000923 ] };
+ key <AB07> { [ 0x100092E, 0x1000902 ] };
+ key <AB08> { [ comma, 0x1000919 ] };
+ key <AB09> { [ 0x1000964, 0x1000965 ] };
+ key <AB10> { [ 0x100094D, question ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "olpc" {
+
+// Contact: Walter Bender <walter@laptop.org>
+
+ include "np"
+ key <TLDE> { [ grave, asciitilde ] };
+ key <AE01> { [ 0x1000967 ] }; // Nepali digit one
+ key <AE02> { [ 0x1000968 ] }; // Nepali digit two
+ key <AE03> { [ 0x1000969 ] }; // Nepali digit three
+ key <AE04> { [ 0x100096A ] }; // Nepali digit four
+ key <AE05> { [ 0x100096B ] }; // Nepali digit five
+ key <AE06> { [ 0x100096C, sterling ] }; // Nepali digit six
+ key <AE07> { [ 0x100096D, eurosign ] }; // Nepali digit seven
+ key <AE08> { [ 0x100096e ] }; // Nepali digit eight
+ key <AE09> { [ 0x100096F ] }; // Nepali digit nine
+ key <AE10> { [ 0x1000966 ] }; // Nepali digit zero
+ key <AE12> { [ 0x1000950, 0x1000903 ] }; // OM, SIGN VISARGA
+
+ key <AD01> { [ 0x100091C, 0x100091D ] }; // JA, JHA
+ key <AD02> { [ 0x1000917, 0x1000918 ] }; // GA, GHA
+ key <AD03> { [ 0x100092F, 0x100091E ] }; // YA, YNA
+ key <AD04> { [ 0x1000938, 0x1000936 ] }; // SA, SHA
+ key <AD05> { [ 0x100090F, 0x1000910 ] }; // E, AI
+ key <AD06> { [ 0x100091B, 0x100091A ] }; // CHHA, CHA
+ key <AD07> { [ 0x100092A, 0x100092B ] }; // PA, PHA
+ key <AD08> { [ 0x1000947, 0x1000948 ] }; // VOWEL SIGN E, VOWEL SIGN AI
+ key <AD09> { [ 0x100094B, 0x100093E ] }; // VOWEL SIGN O, VOWEL SIGN AA
+ key <AD10> { [ 0x1000924, 0x1000925 ] }; // TA, THA
+ key <AD11> { [ 0x1000909, 0x100090A ] }; // HRSHWA U, DIRGHA UU
+ key <AD12> { [ 0x100093F, 0x1000940 ] }; // VOWEL SIGN HRSHWA I, VOWEL SIGN DIRGHA II
+
+ key <AC01> { [ 0x100092E, 0x1000902 ] }; // MA, SIGN ANUSVARA
+ key <AC02> { [ 0x1000907, 0x1000908 ] }; // HRSHWA I, DIRGHA II
+ key <AC03> { [ 0x1000928, 0x1000923 ] }; // NA, NNA
+ key <AC04> { [ 0x100094D, 0x1000921 ] }; // VIRAMA (HALANTA?), DDA
+ key <AC05> { [ 0x100091F, 0x1000920 ] }; // TTA, TTHA
+ key <AC06> { [ 0x1000926, 0x1000927 ] }; // DA, DHA
+ key <AC07> { [ 0x100093E, 0x1000901 ] }; // SIGN AA, SIGN CANDRABINDU
+ key <AC08> { [ 0x1000930, 0x1000943 ] }; // RA, VOWEL SIGN VOCALIC R
+ key <AC09> { [ 0x1000915, 0x1000916 ] }; // KA, KHA
+
+ key <AB01> { [ 0x1000937, 0x100090B ] }; // SSA, VOCALIC R (RRI)
+ key <AB02> { [ 0x100092C, 0x100092D ] }; // BA, BHA
+ key <AB03> { [ 0x1000941, 0x1000942 ] }; // VOWEL SIGN HRSHWA U, VOWEL SIGN DIRGHA U (UU)
+ key <AB04> { [ 0x1000939, 0x1000922 ] }; // HA, DDHA
+ key <AB05> { [ 0x1000913, 0x1000914 ] }; // O, AU
+ key <AB06> { [ 0x1000905, 0x1000906 ] }; // A, AA
+ key <AB07> { [ 0x1000932, 0x1000919 ] }; // LA, NGA
+ key <AB08> { [ comma, 0x1000935 ] }; // VA
+ key <AB09> { [ 0x1000964, 0x1000965 ] }; // PURNA VIRAM, DIRGHA VIRAM
+
+ include "group(olpc)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/olpc b/xorg-server/xkeyboard-config/symbols/olpc
index 4fda9949c..9e74e47b8 100644
--- a/xorg-server/xkeyboard-config/symbols/olpc
+++ b/xorg-server/xkeyboard-config/symbols/olpc
@@ -1,22 +1,21 @@
-// $XKeyboardConfig$
-//
-// Created by Bernardo Innocenti <bernie@codewiz.org>
-//
-// Additional symbol definitions for the OLPC keyboards
-//
-
-alphanumeric_keys modifier_keys
-xkb_symbols "olpc" {
- include "pc(pc105)"
-
- modifier_map Mod1 { KP_Home }; // KP_Home is the "square" game key
- modifier_map Mod3 { KP_End }; // KP_End is the "tick" game key
- modifier_map Mod4 { KP_Prior }; // KP_Prior is the "O" game key
- modifier_map Mod5 { KP_Next }; // KP_Next is the "X" game key
-
- key <I220> { [ XF86Search ] }; // search key
- key <I221> { [ XF86Meeting ] }; // fn+search key
- key <I236> { [ XF86Start ] }; // gear key (fn+space)
- key <I147> { [ XF86TaskPane ] }; // frame key (the top-right key)
- key <I224> { [ XF86Messenger ] }; // overlay key (next to frame key)
-};
+//
+// Created by Bernardo Innocenti <bernie@codewiz.org>
+//
+// Additional symbol definitions for the OLPC keyboards
+//
+
+alphanumeric_keys modifier_keys
+xkb_symbols "olpc" {
+ include "pc(pc105)"
+
+ modifier_map Mod1 { KP_Home }; // KP_Home is the "square" game key
+ modifier_map Mod3 { KP_End }; // KP_End is the "tick" game key
+ modifier_map Mod4 { KP_Prior }; // KP_Prior is the "O" game key
+ modifier_map Mod5 { KP_Next }; // KP_Next is the "X" game key
+
+ key <I220> { [ XF86Search ] }; // search key
+ key <I221> { [ XF86Meeting ] }; // fn+search key
+ key <I236> { [ XF86Start ] }; // gear key (fn+space)
+ key <I147> { [ XF86TaskPane ] }; // frame key (the top-right key)
+ key <I224> { [ XF86Messenger ] }; // overlay key (next to frame key)
+};
diff --git a/xorg-server/xkeyboard-config/symbols/pc b/xorg-server/xkeyboard-config/symbols/pc
index a6b2063d5..7ccb36dd2 100644
--- a/xorg-server/xkeyboard-config/symbols/pc
+++ b/xorg-server/xkeyboard-config/symbols/pc
@@ -1,8 +1,3 @@
-// $XKeyboardConfig$
-
-//
-// $XFree86: xc/programs/xkbcomp/symbols/pc,v 1.9 2003/06/09 19:59:46 dawes Exp $
-
default partial alphanumeric_keys modifier_keys
xkb_symbols "pc105" {
@@ -145,4 +140,3 @@ xkb_symbols "editing" {
key <DOWN> { [ Down ] };
key <RGHT> { [ Right ] };
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/ph b/xorg-server/xkeyboard-config/symbols/ph
index 9ed2112e8..3681562ff 100644
--- a/xorg-server/xkeyboard-config/symbols/ph
+++ b/xorg-server/xkeyboard-config/symbols/ph
@@ -994,6 +994,3 @@ xkb_symbols "dvorak-bay" {
// ┃Ctrl ┃Super ┃Alt ┃ ␣ Space Space ␣ ┃AltGr ⇮┃Meta ┃Menu ┃Ctrl ┃
// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹─────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛
//
-
-
-
diff --git a/xorg-server/xkeyboard-config/symbols/pk b/xorg-server/xkeyboard-config/symbols/pk
index c240bb119..586215958 100644
--- a/xorg-server/xkeyboard-config/symbols/pk
+++ b/xorg-server/xkeyboard-config/symbols/pk
@@ -1,5 +1,3 @@
-// $XKeyboardConfig$
-
// Urdu keymap
// Developed by:
// Zaeem Arshad <zaeem@linux.net.pk>
@@ -8,7 +6,6 @@
//Alt key combinations are yet to be put in. The unavailable keys are those which do not have a corresponding //glyph in unicode.
// based on a keyboard map from an 'xkb/symbols/ur' file
-// $XFree86$
partial default alphanumeric_keys
xkb_symbols "urd-phonetic" {
diff --git a/xorg-server/xkeyboard-config/symbols/pl b/xorg-server/xkeyboard-config/symbols/pl
index 9ac908779..a90198e78 100644
--- a/xorg-server/xkeyboard-config/symbols/pl
+++ b/xorg-server/xkeyboard-config/symbols/pl
@@ -1,354 +1,350 @@
-// $XKeyboardConfig$
-
-// based on a keyboard map from an 'xkb/symbols/pl' file
-//
-// $XFree86: xc/programs/xkbcomp/symbols/pl,v 1.3 2003/04/19 12:22:12 pascal Exp $
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- include "latin"
-
- name[Group1]="Poland";
-
- key <AD01> { [ q, Q ] };
- key <AD02> { [ w, W ] };
- key <AD03> { [ e, E, eogonek, Eogonek ] };
- key <AD09> { [ o, O, oacute, Oacute ] };
-
- key <AC01> { [ a, A, aogonek, Aogonek ] };
- key <AC02> { [ s, S, sacute, Sacute ] };
- key <AC04> { [ f, F ] };
-
- key <AB01> { [ z, Z, zabovedot, Zabovedot ] };
- key <AB02> { [ x, X, zacute, Zacute ] };
- key <AB03> { [ c, C, cacute, Cacute ] };
- key <AB06> { [ n, N, nacute, Nacute ] };
-
- include "kpdl(comma)"
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "qwertz" {
-
- // Describes the differences between a very simple en_US
- // keyboard and a very simple QWERTZ Polish keybaord
-
- include "latin(type3)"
-
- name[Group1]="Poland - qwertz";
-
- key <AE01> { [ 1, exclam, asciitilde, exclamdown ] };
- key <AE02> { [ 2, quotedbl, dead_caron, oneeighth ] };
- key <AE03> { [ 3, numbersign, dead_circumflex, sterling ] };
- key <AE04> { [ 4, dollar, dead_breve, dollar ] };
- key <AE05> { [ 5, percent, degree, threeeighths ] };
- key <AE06> { [ 6, ampersand, dead_ogonek, fiveeighths ] };
- key <AE07> { [ 7, slash, dead_grave, seveneighths ] };
- key <AE08> { [ 8, parenleft, dead_abovedot, trademark ] };
- key <AE09> { [ 9, parenright, dead_acute, plusminus ] };
- key <AE10> { [ 0, equal, dead_doubleacute, degree ] };
- key <AE11> { [ plus, question, dead_diaeresis, questiondown ] };
- key <AE12> { [apostrophe, asterisk, dead_cedilla, dead_ogonek ] };
-
- key <AD01> { [ q, Q ] };
- key <AD02> { [ w, W ] };
- key <AD03> { [ e, E, EuroSign, cent ] };
- key <AD11> { [ zabovedot, nacute, division, dead_abovering ] };
- key <AD12> { [ sacute, cacute, multiply, dead_macron ] };
-
- key <AC02> { [ s, S, dstroke, section ] };
- key <AC03> { [ d, D, Dstroke, ETH ] };
- key <AC04> { [ f, F ] };
- key <AC08> { [ k, K, kra, ampersand ] };
- key <AC09> { [ l, L, lstroke, Lstroke ] };
- key <AC10> { [ lstroke, Lstroke, dollar, dead_doubleacute ] };
- key <AC11> { [ aogonek, eogonek, ssharp, dead_caron ] };
- key <TLDE> { [ abovedot, dead_ogonek, notsign, notsign ] };
-
- key <BKSL> { [ oacute, zacute, dead_grave, dead_breve ] };
- key <AB03> { [ c, C, cent, copyright ] };
- key <AB10> { [ minus, underscore, dead_belowdot, dead_abovedot ] };
-
- include "kpdl(comma)"
-
- include "level3(ralt_switch)"
-};
-
-// Polish Dvorak keymaps
-// by Rafal Rzepecki <divide@users.sf.net>
-
-// The base keymap "pl" places Polish quotes on quotemark key and
-// moves the dead symbols from there to "1/!" key. If you are used to common
-// dead keys placement, you could use "pl_altquotes"; in this layout
-// dead keys remain in the old place, whereas Polish quotes are placed on the
-// "1/!" key. If you do not use Polish quotes at all, you can use "pl_basic" map.
-
-// Basic Polish keymap (without Polish quotes)
-partial alphanumeric_keys
-xkb_symbols "dvorak" {
- include "us(dvorak)"
-
- name[Group1] = "Poland - Dvorak";
-
- key <AD08> { [ c, C, cacute, Cacute ] };
- key <AD10> { [ l, L, lstroke, Lstroke ] };
- key <AC01> { [ a, A, aogonek, Aogonek ] };
- key <AC02> { [ o, O, oacute, Oacute ] };
- key <AC03> { [ e, E, eogonek, Eogonek ] };
- key <AC09> { [ n, N, nacute, Nacute ] };
- key <AC10> { [ s, S, sacute, Sacute ] };
- key <AB09> { [ v, V, zacute, Zacute ] };
- key <AB10> { [ z, Z, zabovedot, Zabovedot ] };
-
- include "kpdl(comma)"
-
- // this to allow writing ALL CAPS with a Shift key
- include "level3(ralt_switch)"
-
- // use one of compose:* options to choose Multi_key, if you will,
- // or layout +level3(ralt_switch_multikey) to revert standard behaviour
-};
-
-// Default Polish keymap with Polish quotes on quotemark key
-partial alphanumeric_keys
-xkb_symbols "dvorak_quotes" {
- include "pl(dvorak)"
-
- name[Group1] = "Poland - Dvorak, Polish quotes on quotemark key";
-
- key <AD01> { [ apostrophe, quotedbl, doublelowquotemark, rightdoublequotemark ] };
-
- // Dead symbols moved to this key
- key <AE01> { [ 1, exclam, dead_acute, dead_diaeresis ] };
-};
-
-// Polish keymap with Polish quotes on key "1/!"
-partial alphanumeric_keys
-xkb_symbols "dvorak_altquotes" {
- include "pl(dvorak)"
-
- name[Group1] = "Poland - Dvorak, Polish quotes on key 1";
-
- key <AE01> { [ 1, exclam, doublelowquotemark, rightdoublequotemark ] };
-};
-
-// Polish Programmer Dvorak keymap by Michal Nazarewicz <mina86@mina86.com>
-// based on Programmer Dvorak by Roland Kaufmann <rlndkfmn at gmail dot com>
-// and Polish Dvorak keymaps by Rafal Rzepecki <divide@users.sf.net
-// and latin(basic)
-//
-// * Numbers are in shift position (like French).
-// * Symbols have been placed in locations that give good
-// hand-alternation and finger rolling with symbols that usually
-// follows.
-// * Polish diacritics on AltGr+"acelnosxz" (same as in basic pl(basic)).
-// * Aditionaly, zacute on AltGr+"v" so that both zacute and zabovedot
-// next to each other same as in pl(basic).
-// * Polish open and close quotes on AltGr+& (same location as in
-// pl(dvp_altquotes)).
-// * English open quote on AltGr+k (same location as in latin(basic))
-// * English/Polish close quote on AltGr+b (similar location as in
-// latin(basic) but moved right because AltGr+x is taken for zacute).
-// * Polish open and close quote on AltGr+j.
-//
-// Those rules overwrite only the following rules from us(dvp):
-// * ccedilla on AltGr+c
-// * aring on Alt+a
-// * oslash/Ooblique on Alt+o
-// * ae on Alt+e
-// * ntilde on Alt+n
-//
-partial alphanumeric_keys
-xkb_symbols "dvp" {
- include "us(dvp)"
-
- name[Group1] = "Poland - Programmer Dvorak";
-
- // Unmodified Shift AltGr Shift+AltGr
- // symbols row, left side
- key <AE01> { [ ampersand, percent, doublelowquotemark, rightdoublequotemark ] };
-
- // symbols row, right side
-
- // upper row, left side
-
- // // upper row, right side
- key <AD08> { [ c, C, cacute, Cacute ] };
- key <AD10> { [ l, L, lstroke, Lstroke ] };
-
- // home row, left side
- key <AC01> { [ a, A, aogonek, Aogonek ], type[Group1] = "EIGHT_LEVEL_ALPHABETIC" };
- key <AC02> { [ o, O, oacute, Oacute ] };
- key <AC03> { [ e, E, eogonek, Eogonek ] };
-
- // home row, right side
- key <AC09> { [ n, N, nacute, Nacute ] };
- key <AC10> { [ s, S, sacute, Sacute ] };
- key <AC11> { [ minus, underscore, hyphen ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
- key <BKSL> { [ backslash, bar ] };
-
- // lower row, left side
- key <AB03> { [ j, J, doublelowquotemark, rightdoublequotemark ] };
- key <AB04> { [ k, K, leftdoublequotemark, leftsinglequotemark ] };
- key <AB05> { [ x, X, zacute, Zacute ] };
-
- // lower row, right side
- key <AB06> { [ b, B, rightdoublequotemark, rightsinglequotemark ] };
- key <AB09> { [ v, V, zacute, Zacute ] };
- key <AB10> { [ z, Z, zabovedot, Zabovedot ] };
-
- include "kpdl(comma)"
-
- // this to allow writing ALL CAPS with a Shift key
- include "level3(ralt_switch)"
-
- // use one of compose:* options to choose Multi_key, if you will,
- // or layout +level3(ralt_switch_multikey) to revert standard behaviour
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "csb" {
-
- include "latin"
-
- name[Group1]="Poland - Kashubian";
-
- key <AD01> { [ q, Q ] };
- key <AD02> { [ w, W ] };
- key <AD03> { [ e, E, eacute, Eacute ] };
- key <AD04> { [ r, R, ediaeresis, Ediaeresis ] };
- key <AD06> { [ y, Y, EuroSign, cent ] };
- key <AD07> { [ u, U, ugrave, Ugrave ] };
- key <AD08> { [ i, I, ograve, Ograve ] };
- key <AD09> { [ o, O, oacute, Oacute ] };
- key <AD10> { [ p, P, ocircumflex, Ocircumflex ] };
-
- key <AC01> { [ a, A, aogonek, Aogonek ] };
- key <AC02> { [ s, S, atilde, Atilde ] };
- key <AC04> { [ f, F ] };
- key <AC09> { [ l, L, lstroke, Lstroke ] };
-
- key <AB01> { [ z, Z, zabovedot, Zabovedot ] };
- key <AB06> { [ n, N, nacute, Nacute ] };
-
- include "kpdl(comma)"
-
- include "level3(ralt_switch)"
-};
-
-// Russian Polish-phonetic Dvorak
-// by Adrian Dziubek <adrian.dziubek@gmail.com>
-//
-// This layout aims to enable Polish Dvorak users to type with Russian
-// Cyrillic alphabet by using the sound correspondence between Polish and
-// Russian languages.
-//
-// This keyboard should be intuitive. Please let me know, if my intuition
-// lets You down.
-//
-// The guidelines used:
-// - no Cyrillic symbols are placed on punctuation symbols,
-// - visual similarities are ignored if there is a sound correspondence:
-// no Cyrillic_es on c, no Cyrillic_er on p, no Cyrillic_ha on x etc.,
-// - the Latin symbols that have close sound correspondence (as read in Polish)
-// to Cyrillic symbols (as read in Russian) are mapped respectively:
-// * j -> Cyrillic_shorti,
-// * k -> Cyrillic_ka,
-// * b -> Cyrillic_be,
-// * m -> Cyrillic_em,
-// * w -> Cyrillic_ve,
-// * z -> Cyrillic_ze
-// * a -> Cyrillic_a,
-// * o -> Cyrillic_o,
-// * u -> Cyrillic_u,
-// * i -> Cyrillic_i,
-// * d -> Cyrillic_de,
-// * h -> Cyrillic_ha,
-// * t -> Cyrillic_te,
-// * n -> Cyrillic_en,
-// * s -> Cyrillic_es,
-// * p -> Cyrillic_pe,
-// * y -> Cyrillic_yeru,
-// * f -> Cyrillic_ef,
-// * g -> Cyrillic_ghe,
-// * c -> Cyrillic_tse,
-// * r -> Cyrillic_er,
-// * l -> Cyrillic_el,
-// - ...and little more distant:
-// * AltGr + s (sacute) -> Cyrillic_sha,
-// * AltGr + z (zabovedot) -> Cyrillic_zhe,
-// * AltGr + c (cacute) -> Cyrillic_che,
-// - the soft versions of Russian vowels are accessible through AltGr + vowel:
-// * AltGr + a -> Cyrillic_ya,
-// * AltGr + o -> Cyrillic_io,
-// * AltGr + u -> Cyrillic_yu,
-// - ...except for Cyrillic_ie which is more frequently used than Cyrillic_e:
-// * AltGr + e -> Cyrillic_e,
-// * e -> Cyrillic_ie,
-// - q is also mapped to Cyrillic_ya, following the US phonetic keyboard
-// choice, as Cyrillic_ya and Cyrillic_a are both often used:
-// * q -> Cyrillic_ya,
-// - the soft and hard symbols that have no Polish counterparts are mapped
-// to rarely used in Polish x character:
-// * x -> Cyrillic_softsign
-// * AltGr + x -> Cyrillic_hardsign,
-// - the soft sign is additionally available as AltGr + consonant combination
-// for every consonant that can be softened or separated by soft sign:
-// * AltGr + l -> Cyrillic_softsign,
-// * AltGr + d -> Cyrillic_softsign,
-// * AltGr + n -> Cyrillic_softsign,
-// * AltGr + r -> Cyrillic_softsign,
-// * AltGr + t -> Cyrillic_softsign,
-// * AltGr + p -> Cyrillic_softsign,
-// - ...and also because of visual similarity under level3 b:
-// * AltGr + b -> Cyrillic_softsign,
-// * Shift + AltGr + b -> Cyrillic_hardsign,
-// - the Cyrillic_shcha symbol is placed under AltGr + w (visual similarity):
-// * AltGr + w -> Cyrillic_shcha
-// - v, also rarely unused in Polish is mapped like w:
-// * v -> Cyrillic_ve,
-//
-partial alphanumeric_keys
-xkb_symbols "ru_phonetic_dvorak" {
- include "us(dvorak)"
-
- name[Group1] = "Poland - Russian phonetic Dvorak";
-
- // lower row
- key <AB02> { [ Cyrillic_ya, Cyrillic_YA ] };
- key <AB03> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <AB04> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <AB05> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <AB06> { [ Cyrillic_be, Cyrillic_BE, Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
- key <AB07> { [ Cyrillic_em, Cyrillic_EM ] };
- key <AB08> { [ Cyrillic_ve, Cyrillic_VE, Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <AB09> { [ Cyrillic_ve, Cyrillic_VE, Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <AB10> { [ Cyrillic_ze, Cyrillic_ZE, Cyrillic_zhe, Cyrillic_ZHE ] };
- // home row
- key <AC01> { [ Cyrillic_a, Cyrillic_A, Cyrillic_ya, Cyrillic_YA ] };
- key <AC02> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] };
- key <AC03> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_e, Cyrillic_E ] };
- key <AC04> { [ Cyrillic_u, Cyrillic_U, Cyrillic_yu, Cyrillic_YU ] };
- key <AC05> { [ Cyrillic_i, Cyrillic_I ] };
- key <AC06> { [ Cyrillic_de, Cyrillic_DE, Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
- key <AC07> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <AC08> { [ Cyrillic_te, Cyrillic_TE, Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
- key <AC09> { [ Cyrillic_en, Cyrillic_EN, Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
- key <AC10> { [ Cyrillic_es, Cyrillic_ES, Cyrillic_sha, Cyrillic_SHA ] };
- // upper row
- key <AD04> { [ Cyrillic_pe, Cyrillic_PE, Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
- key <AD05> { [ Cyrillic_yeru, Cyrillic_YERU ] };
- key <AD06> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <AD08> { [ Cyrillic_tse, Cyrillic_TSE, Cyrillic_che, Cyrillic_CHE ] };
- key <AD09> { [ Cyrillic_er, Cyrillic_ER, Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
- key <AD10> { [ Cyrillic_el, Cyrillic_EL, Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
-
- include "kpdl(comma)"
-
- include "level3(ralt_switch)"
-};
+// based on a keyboard map from an 'xkb/symbols/pl' file
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ include "latin"
+
+ name[Group1]="Poland";
+
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E, eogonek, Eogonek ] };
+ key <AD09> { [ o, O, oacute, Oacute ] };
+
+ key <AC01> { [ a, A, aogonek, Aogonek ] };
+ key <AC02> { [ s, S, sacute, Sacute ] };
+ key <AC04> { [ f, F ] };
+
+ key <AB01> { [ z, Z, zabovedot, Zabovedot ] };
+ key <AB02> { [ x, X, zacute, Zacute ] };
+ key <AB03> { [ c, C, cacute, Cacute ] };
+ key <AB06> { [ n, N, nacute, Nacute ] };
+
+ include "kpdl(comma)"
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "qwertz" {
+
+ // Describes the differences between a very simple en_US
+ // keyboard and a very simple QWERTZ Polish keybaord
+
+ include "latin(type3)"
+
+ name[Group1]="Poland - qwertz";
+
+ key <AE01> { [ 1, exclam, asciitilde, exclamdown ] };
+ key <AE02> { [ 2, quotedbl, dead_caron, oneeighth ] };
+ key <AE03> { [ 3, numbersign, dead_circumflex, sterling ] };
+ key <AE04> { [ 4, dollar, dead_breve, dollar ] };
+ key <AE05> { [ 5, percent, degree, threeeighths ] };
+ key <AE06> { [ 6, ampersand, dead_ogonek, fiveeighths ] };
+ key <AE07> { [ 7, slash, dead_grave, seveneighths ] };
+ key <AE08> { [ 8, parenleft, dead_abovedot, trademark ] };
+ key <AE09> { [ 9, parenright, dead_acute, plusminus ] };
+ key <AE10> { [ 0, equal, dead_doubleacute, degree ] };
+ key <AE11> { [ plus, question, dead_diaeresis, questiondown ] };
+ key <AE12> { [apostrophe, asterisk, dead_cedilla, dead_ogonek ] };
+
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E, EuroSign, cent ] };
+ key <AD11> { [ zabovedot, nacute, division, dead_abovering ] };
+ key <AD12> { [ sacute, cacute, multiply, dead_macron ] };
+
+ key <AC02> { [ s, S, dstroke, section ] };
+ key <AC03> { [ d, D, Dstroke, ETH ] };
+ key <AC04> { [ f, F ] };
+ key <AC08> { [ k, K, kra, ampersand ] };
+ key <AC09> { [ l, L, lstroke, Lstroke ] };
+ key <AC10> { [ lstroke, Lstroke, dollar, dead_doubleacute ] };
+ key <AC11> { [ aogonek, eogonek, ssharp, dead_caron ] };
+ key <TLDE> { [ abovedot, dead_ogonek, notsign, notsign ] };
+
+ key <BKSL> { [ oacute, zacute, dead_grave, dead_breve ] };
+ key <AB03> { [ c, C, cent, copyright ] };
+ key <AB10> { [ minus, underscore, dead_belowdot, dead_abovedot ] };
+
+ include "kpdl(comma)"
+
+ include "level3(ralt_switch)"
+};
+
+// Polish Dvorak keymaps
+// by Rafal Rzepecki <divide@users.sf.net>
+
+// The base keymap "pl" places Polish quotes on quotemark key and
+// moves the dead symbols from there to "1/!" key. If you are used to common
+// dead keys placement, you could use "pl_altquotes"; in this layout
+// dead keys remain in the old place, whereas Polish quotes are placed on the
+// "1/!" key. If you do not use Polish quotes at all, you can use "pl_basic" map.
+
+// Basic Polish keymap (without Polish quotes)
+partial alphanumeric_keys
+xkb_symbols "dvorak" {
+ include "us(dvorak)"
+
+ name[Group1] = "Poland - Dvorak";
+
+ key <AD08> { [ c, C, cacute, Cacute ] };
+ key <AD10> { [ l, L, lstroke, Lstroke ] };
+ key <AC01> { [ a, A, aogonek, Aogonek ] };
+ key <AC02> { [ o, O, oacute, Oacute ] };
+ key <AC03> { [ e, E, eogonek, Eogonek ] };
+ key <AC09> { [ n, N, nacute, Nacute ] };
+ key <AC10> { [ s, S, sacute, Sacute ] };
+ key <AB09> { [ v, V, zacute, Zacute ] };
+ key <AB10> { [ z, Z, zabovedot, Zabovedot ] };
+
+ include "kpdl(comma)"
+
+ // this to allow writing ALL CAPS with a Shift key
+ include "level3(ralt_switch)"
+
+ // use one of compose:* options to choose Multi_key, if you will,
+ // or layout +level3(ralt_switch_multikey) to revert standard behaviour
+};
+
+// Default Polish keymap with Polish quotes on quotemark key
+partial alphanumeric_keys
+xkb_symbols "dvorak_quotes" {
+ include "pl(dvorak)"
+
+ name[Group1] = "Poland - Dvorak, Polish quotes on quotemark key";
+
+ key <AD01> { [ apostrophe, quotedbl, doublelowquotemark, rightdoublequotemark ] };
+
+ // Dead symbols moved to this key
+ key <AE01> { [ 1, exclam, dead_acute, dead_diaeresis ] };
+};
+
+// Polish keymap with Polish quotes on key "1/!"
+partial alphanumeric_keys
+xkb_symbols "dvorak_altquotes" {
+ include "pl(dvorak)"
+
+ name[Group1] = "Poland - Dvorak, Polish quotes on key 1";
+
+ key <AE01> { [ 1, exclam, doublelowquotemark, rightdoublequotemark ] };
+};
+
+// Polish Programmer Dvorak keymap by Michal Nazarewicz <mina86@mina86.com>
+// based on Programmer Dvorak by Roland Kaufmann <rlndkfmn at gmail dot com>
+// and Polish Dvorak keymaps by Rafal Rzepecki <divide@users.sf.net
+// and latin(basic)
+//
+// * Numbers are in shift position (like French).
+// * Symbols have been placed in locations that give good
+// hand-alternation and finger rolling with symbols that usually
+// follows.
+// * Polish diacritics on AltGr+"acelnosxz" (same as in basic pl(basic)).
+// * Aditionaly, zacute on AltGr+"v" so that both zacute and zabovedot
+// next to each other same as in pl(basic).
+// * Polish open and close quotes on AltGr+& (same location as in
+// pl(dvp_altquotes)).
+// * English open quote on AltGr+k (same location as in latin(basic))
+// * English/Polish close quote on AltGr+b (similar location as in
+// latin(basic) but moved right because AltGr+x is taken for zacute).
+// * Polish open and close quote on AltGr+j.
+//
+// Those rules overwrite only the following rules from us(dvp):
+// * ccedilla on AltGr+c
+// * aring on Alt+a
+// * oslash/Ooblique on Alt+o
+// * ae on Alt+e
+// * ntilde on Alt+n
+//
+partial alphanumeric_keys
+xkb_symbols "dvp" {
+ include "us(dvp)"
+
+ name[Group1] = "Poland - Programmer Dvorak";
+
+ // Unmodified Shift AltGr Shift+AltGr
+ // symbols row, left side
+ key <AE01> { [ ampersand, percent, doublelowquotemark, rightdoublequotemark ] };
+
+ // symbols row, right side
+
+ // upper row, left side
+
+ // // upper row, right side
+ key <AD08> { [ c, C, cacute, Cacute ] };
+ key <AD10> { [ l, L, lstroke, Lstroke ] };
+
+ // home row, left side
+ key <AC01> { [ a, A, aogonek, Aogonek ], type[Group1] = "EIGHT_LEVEL_ALPHABETIC" };
+ key <AC02> { [ o, O, oacute, Oacute ] };
+ key <AC03> { [ e, E, eogonek, Eogonek ] };
+
+ // home row, right side
+ key <AC09> { [ n, N, nacute, Nacute ] };
+ key <AC10> { [ s, S, sacute, Sacute ] };
+ key <AC11> { [ minus, underscore, hyphen ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <BKSL> { [ backslash, bar ] };
+
+ // lower row, left side
+ key <AB03> { [ j, J, doublelowquotemark, rightdoublequotemark ] };
+ key <AB04> { [ k, K, leftdoublequotemark, leftsinglequotemark ] };
+ key <AB05> { [ x, X, zacute, Zacute ] };
+
+ // lower row, right side
+ key <AB06> { [ b, B, rightdoublequotemark, rightsinglequotemark ] };
+ key <AB09> { [ v, V, zacute, Zacute ] };
+ key <AB10> { [ z, Z, zabovedot, Zabovedot ] };
+
+ include "kpdl(comma)"
+
+ // this to allow writing ALL CAPS with a Shift key
+ include "level3(ralt_switch)"
+
+ // use one of compose:* options to choose Multi_key, if you will,
+ // or layout +level3(ralt_switch_multikey) to revert standard behaviour
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "csb" {
+
+ include "latin"
+
+ name[Group1]="Poland - Kashubian";
+
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E, eacute, Eacute ] };
+ key <AD04> { [ r, R, ediaeresis, Ediaeresis ] };
+ key <AD06> { [ y, Y, EuroSign, cent ] };
+ key <AD07> { [ u, U, ugrave, Ugrave ] };
+ key <AD08> { [ i, I, ograve, Ograve ] };
+ key <AD09> { [ o, O, oacute, Oacute ] };
+ key <AD10> { [ p, P, ocircumflex, Ocircumflex ] };
+
+ key <AC01> { [ a, A, aogonek, Aogonek ] };
+ key <AC02> { [ s, S, atilde, Atilde ] };
+ key <AC04> { [ f, F ] };
+ key <AC09> { [ l, L, lstroke, Lstroke ] };
+
+ key <AB01> { [ z, Z, zabovedot, Zabovedot ] };
+ key <AB06> { [ n, N, nacute, Nacute ] };
+
+ include "kpdl(comma)"
+
+ include "level3(ralt_switch)"
+};
+
+// Russian Polish-phonetic Dvorak
+// by Adrian Dziubek <adrian.dziubek@gmail.com>
+//
+// This layout aims to enable Polish Dvorak users to type with Russian
+// Cyrillic alphabet by using the sound correspondence between Polish and
+// Russian languages.
+//
+// This keyboard should be intuitive. Please let me know, if my intuition
+// lets You down.
+//
+// The guidelines used:
+// - no Cyrillic symbols are placed on punctuation symbols,
+// - visual similarities are ignored if there is a sound correspondence:
+// no Cyrillic_es on c, no Cyrillic_er on p, no Cyrillic_ha on x etc.,
+// - the Latin symbols that have close sound correspondence (as read in Polish)
+// to Cyrillic symbols (as read in Russian) are mapped respectively:
+// * j -> Cyrillic_shorti,
+// * k -> Cyrillic_ka,
+// * b -> Cyrillic_be,
+// * m -> Cyrillic_em,
+// * w -> Cyrillic_ve,
+// * z -> Cyrillic_ze
+// * a -> Cyrillic_a,
+// * o -> Cyrillic_o,
+// * u -> Cyrillic_u,
+// * i -> Cyrillic_i,
+// * d -> Cyrillic_de,
+// * h -> Cyrillic_ha,
+// * t -> Cyrillic_te,
+// * n -> Cyrillic_en,
+// * s -> Cyrillic_es,
+// * p -> Cyrillic_pe,
+// * y -> Cyrillic_yeru,
+// * f -> Cyrillic_ef,
+// * g -> Cyrillic_ghe,
+// * c -> Cyrillic_tse,
+// * r -> Cyrillic_er,
+// * l -> Cyrillic_el,
+// - ...and little more distant:
+// * AltGr + s (sacute) -> Cyrillic_sha,
+// * AltGr + z (zabovedot) -> Cyrillic_zhe,
+// * AltGr + c (cacute) -> Cyrillic_che,
+// - the soft versions of Russian vowels are accessible through AltGr + vowel:
+// * AltGr + a -> Cyrillic_ya,
+// * AltGr + o -> Cyrillic_io,
+// * AltGr + u -> Cyrillic_yu,
+// - ...except for Cyrillic_ie which is more frequently used than Cyrillic_e:
+// * AltGr + e -> Cyrillic_e,
+// * e -> Cyrillic_ie,
+// - q is also mapped to Cyrillic_ya, following the US phonetic keyboard
+// choice, as Cyrillic_ya and Cyrillic_a are both often used:
+// * q -> Cyrillic_ya,
+// - the soft and hard symbols that have no Polish counterparts are mapped
+// to rarely used in Polish x character:
+// * x -> Cyrillic_softsign
+// * AltGr + x -> Cyrillic_hardsign,
+// - the soft sign is additionally available as AltGr + consonant combination
+// for every consonant that can be softened or separated by soft sign:
+// * AltGr + l -> Cyrillic_softsign,
+// * AltGr + d -> Cyrillic_softsign,
+// * AltGr + n -> Cyrillic_softsign,
+// * AltGr + r -> Cyrillic_softsign,
+// * AltGr + t -> Cyrillic_softsign,
+// * AltGr + p -> Cyrillic_softsign,
+// - ...and also because of visual similarity under level3 b:
+// * AltGr + b -> Cyrillic_softsign,
+// * Shift + AltGr + b -> Cyrillic_hardsign,
+// - the Cyrillic_shcha symbol is placed under AltGr + w (visual similarity):
+// * AltGr + w -> Cyrillic_shcha
+// - v, also rarely unused in Polish is mapped like w:
+// * v -> Cyrillic_ve,
+//
+partial alphanumeric_keys
+xkb_symbols "ru_phonetic_dvorak" {
+ include "us(dvorak)"
+
+ name[Group1] = "Poland - Russian phonetic Dvorak";
+
+ // lower row
+ key <AB02> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <AB03> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <AB04> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <AB05> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <AB06> { [ Cyrillic_be, Cyrillic_BE, Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
+ key <AB07> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <AB08> { [ Cyrillic_ve, Cyrillic_VE, Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <AB09> { [ Cyrillic_ve, Cyrillic_VE, Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <AB10> { [ Cyrillic_ze, Cyrillic_ZE, Cyrillic_zhe, Cyrillic_ZHE ] };
+ // home row
+ key <AC01> { [ Cyrillic_a, Cyrillic_A, Cyrillic_ya, Cyrillic_YA ] };
+ key <AC02> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] };
+ key <AC03> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_e, Cyrillic_E ] };
+ key <AC04> { [ Cyrillic_u, Cyrillic_U, Cyrillic_yu, Cyrillic_YU ] };
+ key <AC05> { [ Cyrillic_i, Cyrillic_I ] };
+ key <AC06> { [ Cyrillic_de, Cyrillic_DE, Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <AC07> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <AC08> { [ Cyrillic_te, Cyrillic_TE, Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <AC09> { [ Cyrillic_en, Cyrillic_EN, Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <AC10> { [ Cyrillic_es, Cyrillic_ES, Cyrillic_sha, Cyrillic_SHA ] };
+ // upper row
+ key <AD04> { [ Cyrillic_pe, Cyrillic_PE, Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <AD05> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <AD06> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <AD08> { [ Cyrillic_tse, Cyrillic_TSE, Cyrillic_che, Cyrillic_CHE ] };
+ key <AD09> { [ Cyrillic_er, Cyrillic_ER, Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <AD10> { [ Cyrillic_el, Cyrillic_EL, Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+
+ include "kpdl(comma)"
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/pt b/xorg-server/xkeyboard-config/symbols/pt
index 509db14ea..951639603 100644
--- a/xorg-server/xkeyboard-config/symbols/pt
+++ b/xorg-server/xkeyboard-config/symbols/pt
@@ -1,8 +1,4 @@
-// $XKeyboardConfig$
-
// based on a keyboard map from an 'xkb/symbols/pt' file
-//
-// $XFree86: xc/programs/xkbcomp/symbols/pt,v 1.2 2002/11/22 04:03:28 dawes Exp $
partial default alphanumeric_keys
xkb_symbols "basic" {
@@ -221,4 +217,4 @@ xkb_symbols "nativo-epo" {
key <AB02> { [ scircumflex, Scircumflex, ccedilla, Ccedilla ] };
key <AB06> { [ gcircumflex, Gcircumflex, q, Q ] };
-}; \ No newline at end of file
+};
diff --git a/xorg-server/xkeyboard-config/symbols/ro b/xorg-server/xkeyboard-config/symbols/ro
index b2842bd79..9e9663cce 100644
--- a/xorg-server/xkeyboard-config/symbols/ro
+++ b/xorg-server/xkeyboard-config/symbols/ro
@@ -1,235 +1,233 @@
-// $XKeyboardConfig$
-// $XFree86: xc/programs/xkbcomp/symbols/ro,v 1.6 2003/09/08 13:12:51 pascal Exp $
-//
-// Complete set of Romanian keyboards as described in the new Romanian standard
-// SR 13392:2004 adopted in December 2004 by ASRO, "Asociatia de Standardizare
-// din Romania".
-//
-// The default mapping is the RO_US/Programmers layout because of the lack of
-// Romanian hardware keyboards. The primary standard layout is implemented as
-// the "std" variant. If you're determined to get cedillas as in ISO-8859-2
-// (and not commabelow accents as in ISO-8859-16) use the defined variants
-// "cedilla" for the default layout or "std_cedilla" for the standard one.
-// Pre-Vista MS compatible layout included (use the "winkeys" variant).
-//
-// Created by Cristian Gafton, <gafton@redhat.com> (C) 2000
-// Modified by Marius Andreiana, <mandreiana@yahoo.com> (C) 2001
-// Completed by Misu Moldovan, <dumol@gnome.ro> (C) 2001, 2004-2008.
-// v 1.4
-
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-// This RO_US/Programmers layout, although the secondary layout in the
-// Romanian standard, has always been the "de facto" standard in the
-// Linux/Unix world. It is implemented here as the default layout and it's
-// fully compatible with an US keyboard (Euro on AltGr+5 doesn't count).
-
- include "us"
-
- name[Group1]="Romania";
-
- key <AE01> { [ 1, exclam, dead_tilde ] };
- key <AE02> { [ 2, at, dead_caron ] };
- key <AE03> { [ 3, numbersign, dead_circumflex ] };
- key <AE04> { [ 4, dollar, dead_breve ] };
- key <AE05> { [ 5, percent, dead_abovering ] };
- key <AE06> { [ 6, asciicircum, dead_ogonek ] };
- key <AE07> { [ 7, ampersand, dead_grave ] };
- key <AE08> { [ 8, asterisk, dead_abovedot ] };
- key <AE09> { [ 9, parenleft, dead_acute ] };
- key <AE10> { [ 0, parenright, dead_doubleacute ] };
- key <AE11> { [ minus, underscore, dead_diaeresis, endash ] };
- key <AE12> { [ equal, plus, dead_cedilla, plusminus ] };
- key <AD01> { [ q, Q, acircumflex, Acircumflex ] };
- key <AD02> { [ w, W, ssharp ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD05> { [ t, T, 0x100021b, 0x100021a ] };
- key <AD08> { [ i, I, icircumflex, Icircumflex ] };
- key <AD10> { [ p, P, section ] };
- key <AD11> { [ bracketleft, braceleft, doublelowquotemark ] };
- key <AD12> { [ bracketright, braceright, rightdoublequotemark ] };
- key <AC01> { [ a, A, abreve, Abreve ] };
- key <AC02> { [ s, S, 0x1000219, 0x1000218 ] };
- key <AC03> { [ d, D, dstroke, Dstroke ] };
- key <AC09> { [ l, L, lstroke, Lstroke ] };
- key <LSGT> { [ backslash, bar ] };
- key <AB03> { [ c, C, copyright ] };
- key <AB08> { [ comma, less, guillemotleft ] };
- key <AB09> { [ period, greater, guillemotright ] };
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "cedilla" {
- // Variant of the basic layout with cedillas.
- // Implements S and T with cedilllas as in ISO-8859-2.
- // Included for compatibility reasons (this used to be the def variant).
-
- include "ro(basic)"
-
- name[Group1]="Romania - Cedilla";
-
- key <AD05> { [ t, T, tcedilla, Tcedilla ] };
- key <AC02> { [ s, S, scedilla, Scedilla ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "std" {
- // Primary layout in the new Romanian standard.
- // Implemented here as a variant because of the lack of hardware
- // Romanian keyboards and because of the predilection of Romanian
- // X users towards the secondary layout from the new standard.
-
- include "us"
-
- name[Group1]="Romania - Standard";
-
- key <TLDE> { [ doublelowquotemark, rightdoublequotemark, grave, asciitilde ] };
- key <AE01> { [ 1, exclam, dead_tilde ] };
- key <AE02> { [ 2, at, dead_caron ] };
- key <AE03> { [ 3, numbersign, dead_circumflex ] };
- key <AE04> { [ 4, dollar, dead_breve ] };
- key <AE05> { [ 5, percent, dead_abovering ] };
- key <AE06> { [ 6, asciicircum, dead_ogonek ] };
- key <AE07> { [ 7, ampersand, dead_grave ] };
- key <AE08> { [ 8, asterisk, dead_abovedot ] };
- key <AE09> { [ 9, parenleft, dead_acute ] };
- key <AE10> { [ 0, parenright, dead_doubleacute ] };
- key <AE11> { [ minus, underscore, dead_diaeresis, endash ] };
- key <AE12> { [ equal, plus, dead_cedilla, plusminus ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD10> { [ p, P, section ] };
- key <AD11> { [ abreve, Abreve, bracketleft, braceleft ] };
- key <AD12> { [ icircumflex, Icircumflex, bracketright, braceright ] };
- key <BKSL> { [ acircumflex, Acircumflex, backslash, bar ] };
- key <AC02> { [ s, S, ssharp ] };
- key <AC03> { [ d, D, dstroke, Dstroke ] };
- key <AC09> { [ l, L, lstroke, Lstroke ] };
- key <AC10> { [ 0x1000219, 0x1000218, semicolon, colon ] };
- key <AC11> { [ 0x100021b, 0x100021a, apostrophe, quotedbl ] };
- key <LSGT> { [ backslash, bar ] };
- key <AB03> { [ c, C, copyright ] };
- key <AB08> { [ comma, semicolon, less, guillemotleft ] };
- key <AB09> { [ period, colon, greater, guillemotright ] };
-
- key <KPDL> { [ KP_Delete, KP_Separator ] };
-
- include "level3(ralt_switch)"
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "std_cedilla" {
- // Variant of the "std" layout with cedillas.
- // Implements S and T with cedillas as in ISO-8859-2.
- // Included for compatibility reasons.
-
- include "ro(std)"
-
- name[Group1]="Romania - Standard (Cedilla)";
-
- key <AC10> { [ scedilla, Scedilla ] };
- key <AC11> { [ tcedilla, Tcedilla ] };
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "winkeys" {
- // Describes the differences between a very simple US/ASCII
- // keyboard and a very simple Romanian keybaord
- // Created by Manfred Pohler, <Manfred.Pohler@t-online.de> (C) 2003
-
- include "latin"
-
- name[Group1]="Romania - Winkeys";
-
- // Alphanumeric section
- key <TLDE> { [ bracketright, bracketleft ] };
-
- key <AE01> { [ 1, exclam, asciitilde, asciitilde ] };
- key <AE02> { [ 2, quotedbl, at, at ] };
- key <AE03> { [ 3, numbersign, asciicircum,asciicircum ] };
- key <AE04> { [ 4, currency ] };
- key <AE05> { [ 5, percent, degree, degree ] };
- key <AE06> { [ 6, ampersand ] };
- key <AE07> { [ 7, slash, grave, grave ] };
- key <AE08> { [ 8, parenleft ] };
- key <AE09> { [ 9, parenright ] };
- key <AE10> { [ 0, equal ] };
- key <AE11> { [ plus, question ] };
- key <AE12> { [ apostrophe, asterisk ] };
-
- key <AD01> { [ q, Q, backslash, backslash ] };
- key <AD02> { [ w, W, bar, bar ] };
- key <AD03> { [ e, E, EuroSign, EuroSign ] };
- key <AD05> { [ t, T ] };
- key <AD06> { [ z, Z ] };
- key <AD07> { [ u, U ] };
- key <AD08> { [ i, I ] };
- key <AD11> { [ abreve, Abreve, division, division ] };
- key <AD12> { [ icircumflex, Icircumflex, multiply, multiply ] };
-
- key <AC04> { [ f, F ] };
- key <AC05> { [ g, G ] };
- key <AC10> { [ scedilla, Scedilla, dollar, dollar ] };
- key <AC11> { [ tcedilla, Tcedilla, ssharp, ssharp ] };
-
- key <AB01> { [ y, Y ] };
- key <AB05> { [ b, B, braceleft, braceleft ] };
- key <AB06> { [ n, N, braceright, braceright ] };
- key <AB07> { [ m, M, section, section ] };
- key <AB08> { [ comma, semicolon, less, less ] };
- key <AB09> { [ period, colon, greater, greater ] };
- key <AB10> { [ minus, underscore ] };
-
- key <BKSL> { [ acircumflex, Acircumflex ] };
-
- // End alphanumeric section, begin "Keypad"
- include "kpdl(comma)"
- // End "Keypad" section
-
- include "level3(ralt_switch)"
-
-};
-
-// Crimean Tatar (Crimean Turkish) layouts.
-partial
-xkb_symbols "crh_f" {
- include "tr(crh_f)"
-
- name[Group1]="Romania - Crimean Tatar (Turkish F)";
-};
-
-partial
-xkb_symbols "crh_alt" {
- include "tr(crh_alt)"
-
- name[Group1]="Romania - Crimean Tatar (Turkish Alt-Q)";
-};
-
-partial
-xkb_symbols "crh_dobruca1" {
- include "tr(crh)"
-
- name[Group1]="Romania - Crimean Tatar (Dobruca-1 Q)";
-
- key <AD05> { [ t, T, tcedilla, Tcedilla ] };
- key <AD10> { [ p, P, abreve, Abreve ] };
-
- key <AC04> { [ f, F, ibreve, Ibreve ] };
- key <AC07> { [ iacute, Iacute, j, J ] };
-
- key <AB07> { [ m, M, trademark, masculine ] };
-};
-
-partial
-xkb_symbols "crh_dobruca2" {
- include "ro(crh_dobruca1)"
-
- name[Group1]="Romania - Crimean Tatar (Dobruca-2 Q)";
-
- key <AC04> { [ f, F, iacute, Iacute ] };
- key <AC07> { [ ibreve, Ibreve, j, J ] };
-};
+//
+// Complete set of Romanian keyboards as described in the new Romanian standard
+// SR 13392:2004 adopted in December 2004 by ASRO, "Asociatia de Standardizare
+// din Romania".
+//
+// The default mapping is the RO_US/Programmers layout because of the lack of
+// Romanian hardware keyboards. The primary standard layout is implemented as
+// the "std" variant. If you're determined to get cedillas as in ISO-8859-2
+// (and not commabelow accents as in ISO-8859-16) use the defined variants
+// "cedilla" for the default layout or "std_cedilla" for the standard one.
+// Pre-Vista MS compatible layout included (use the "winkeys" variant).
+//
+// Created by Cristian Gafton, <gafton@redhat.com> (C) 2000
+// Modified by Marius Andreiana, <mandreiana@yahoo.com> (C) 2001
+// Completed by Misu Moldovan, <dumol@gnome.ro> (C) 2001, 2004-2008.
+// v 1.4
+
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+// This RO_US/Programmers layout, although the secondary layout in the
+// Romanian standard, has always been the "de facto" standard in the
+// Linux/Unix world. It is implemented here as the default layout and it's
+// fully compatible with an US keyboard (Euro on AltGr+5 doesn't count).
+
+ include "us"
+
+ name[Group1]="Romania";
+
+ key <AE01> { [ 1, exclam, dead_tilde ] };
+ key <AE02> { [ 2, at, dead_caron ] };
+ key <AE03> { [ 3, numbersign, dead_circumflex ] };
+ key <AE04> { [ 4, dollar, dead_breve ] };
+ key <AE05> { [ 5, percent, dead_abovering ] };
+ key <AE06> { [ 6, asciicircum, dead_ogonek ] };
+ key <AE07> { [ 7, ampersand, dead_grave ] };
+ key <AE08> { [ 8, asterisk, dead_abovedot ] };
+ key <AE09> { [ 9, parenleft, dead_acute ] };
+ key <AE10> { [ 0, parenright, dead_doubleacute ] };
+ key <AE11> { [ minus, underscore, dead_diaeresis, endash ] };
+ key <AE12> { [ equal, plus, dead_cedilla, plusminus ] };
+ key <AD01> { [ q, Q, acircumflex, Acircumflex ] };
+ key <AD02> { [ w, W, ssharp ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD05> { [ t, T, 0x100021b, 0x100021a ] };
+ key <AD08> { [ i, I, icircumflex, Icircumflex ] };
+ key <AD10> { [ p, P, section ] };
+ key <AD11> { [ bracketleft, braceleft, doublelowquotemark ] };
+ key <AD12> { [ bracketright, braceright, rightdoublequotemark ] };
+ key <AC01> { [ a, A, abreve, Abreve ] };
+ key <AC02> { [ s, S, 0x1000219, 0x1000218 ] };
+ key <AC03> { [ d, D, dstroke, Dstroke ] };
+ key <AC09> { [ l, L, lstroke, Lstroke ] };
+ key <LSGT> { [ backslash, bar ] };
+ key <AB03> { [ c, C, copyright ] };
+ key <AB08> { [ comma, less, guillemotleft ] };
+ key <AB09> { [ period, greater, guillemotright ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "cedilla" {
+ // Variant of the basic layout with cedillas.
+ // Implements S and T with cedilllas as in ISO-8859-2.
+ // Included for compatibility reasons (this used to be the def variant).
+
+ include "ro(basic)"
+
+ name[Group1]="Romania - Cedilla";
+
+ key <AD05> { [ t, T, tcedilla, Tcedilla ] };
+ key <AC02> { [ s, S, scedilla, Scedilla ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "std" {
+ // Primary layout in the new Romanian standard.
+ // Implemented here as a variant because of the lack of hardware
+ // Romanian keyboards and because of the predilection of Romanian
+ // X users towards the secondary layout from the new standard.
+
+ include "us"
+
+ name[Group1]="Romania - Standard";
+
+ key <TLDE> { [ doublelowquotemark, rightdoublequotemark, grave, asciitilde ] };
+ key <AE01> { [ 1, exclam, dead_tilde ] };
+ key <AE02> { [ 2, at, dead_caron ] };
+ key <AE03> { [ 3, numbersign, dead_circumflex ] };
+ key <AE04> { [ 4, dollar, dead_breve ] };
+ key <AE05> { [ 5, percent, dead_abovering ] };
+ key <AE06> { [ 6, asciicircum, dead_ogonek ] };
+ key <AE07> { [ 7, ampersand, dead_grave ] };
+ key <AE08> { [ 8, asterisk, dead_abovedot ] };
+ key <AE09> { [ 9, parenleft, dead_acute ] };
+ key <AE10> { [ 0, parenright, dead_doubleacute ] };
+ key <AE11> { [ minus, underscore, dead_diaeresis, endash ] };
+ key <AE12> { [ equal, plus, dead_cedilla, plusminus ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD10> { [ p, P, section ] };
+ key <AD11> { [ abreve, Abreve, bracketleft, braceleft ] };
+ key <AD12> { [ icircumflex, Icircumflex, bracketright, braceright ] };
+ key <BKSL> { [ acircumflex, Acircumflex, backslash, bar ] };
+ key <AC02> { [ s, S, ssharp ] };
+ key <AC03> { [ d, D, dstroke, Dstroke ] };
+ key <AC09> { [ l, L, lstroke, Lstroke ] };
+ key <AC10> { [ 0x1000219, 0x1000218, semicolon, colon ] };
+ key <AC11> { [ 0x100021b, 0x100021a, apostrophe, quotedbl ] };
+ key <LSGT> { [ backslash, bar ] };
+ key <AB03> { [ c, C, copyright ] };
+ key <AB08> { [ comma, semicolon, less, guillemotleft ] };
+ key <AB09> { [ period, colon, greater, guillemotright ] };
+
+ key <KPDL> { [ KP_Delete, KP_Separator ] };
+
+ include "level3(ralt_switch)"
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "std_cedilla" {
+ // Variant of the "std" layout with cedillas.
+ // Implements S and T with cedillas as in ISO-8859-2.
+ // Included for compatibility reasons.
+
+ include "ro(std)"
+
+ name[Group1]="Romania - Standard (Cedilla)";
+
+ key <AC10> { [ scedilla, Scedilla ] };
+ key <AC11> { [ tcedilla, Tcedilla ] };
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "winkeys" {
+ // Describes the differences between a very simple US/ASCII
+ // keyboard and a very simple Romanian keybaord
+ // Created by Manfred Pohler, <Manfred.Pohler@t-online.de> (C) 2003
+
+ include "latin"
+
+ name[Group1]="Romania - Winkeys";
+
+ // Alphanumeric section
+ key <TLDE> { [ bracketright, bracketleft ] };
+
+ key <AE01> { [ 1, exclam, asciitilde, asciitilde ] };
+ key <AE02> { [ 2, quotedbl, at, at ] };
+ key <AE03> { [ 3, numbersign, asciicircum,asciicircum ] };
+ key <AE04> { [ 4, currency ] };
+ key <AE05> { [ 5, percent, degree, degree ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, slash, grave, grave ] };
+ key <AE08> { [ 8, parenleft ] };
+ key <AE09> { [ 9, parenright ] };
+ key <AE10> { [ 0, equal ] };
+ key <AE11> { [ plus, question ] };
+ key <AE12> { [ apostrophe, asterisk ] };
+
+ key <AD01> { [ q, Q, backslash, backslash ] };
+ key <AD02> { [ w, W, bar, bar ] };
+ key <AD03> { [ e, E, EuroSign, EuroSign ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ z, Z ] };
+ key <AD07> { [ u, U ] };
+ key <AD08> { [ i, I ] };
+ key <AD11> { [ abreve, Abreve, division, division ] };
+ key <AD12> { [ icircumflex, Icircumflex, multiply, multiply ] };
+
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC10> { [ scedilla, Scedilla, dollar, dollar ] };
+ key <AC11> { [ tcedilla, Tcedilla, ssharp, ssharp ] };
+
+ key <AB01> { [ y, Y ] };
+ key <AB05> { [ b, B, braceleft, braceleft ] };
+ key <AB06> { [ n, N, braceright, braceright ] };
+ key <AB07> { [ m, M, section, section ] };
+ key <AB08> { [ comma, semicolon, less, less ] };
+ key <AB09> { [ period, colon, greater, greater ] };
+ key <AB10> { [ minus, underscore ] };
+
+ key <BKSL> { [ acircumflex, Acircumflex ] };
+
+ // End alphanumeric section, begin "Keypad"
+ include "kpdl(comma)"
+ // End "Keypad" section
+
+ include "level3(ralt_switch)"
+
+};
+
+// Crimean Tatar (Crimean Turkish) layouts.
+partial
+xkb_symbols "crh_f" {
+ include "tr(crh_f)"
+
+ name[Group1]="Romania - Crimean Tatar (Turkish F)";
+};
+
+partial
+xkb_symbols "crh_alt" {
+ include "tr(crh_alt)"
+
+ name[Group1]="Romania - Crimean Tatar (Turkish Alt-Q)";
+};
+
+partial
+xkb_symbols "crh_dobruca1" {
+ include "tr(crh)"
+
+ name[Group1]="Romania - Crimean Tatar (Dobruca-1 Q)";
+
+ key <AD05> { [ t, T, tcedilla, Tcedilla ] };
+ key <AD10> { [ p, P, abreve, Abreve ] };
+
+ key <AC04> { [ f, F, ibreve, Ibreve ] };
+ key <AC07> { [ iacute, Iacute, j, J ] };
+
+ key <AB07> { [ m, M, trademark, masculine ] };
+};
+
+partial
+xkb_symbols "crh_dobruca2" {
+ include "ro(crh_dobruca1)"
+
+ name[Group1]="Romania - Crimean Tatar (Dobruca-2 Q)";
+
+ key <AC04> { [ f, F, iacute, Iacute ] };
+ key <AC07> { [ ibreve, Ibreve, j, J ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/rs b/xorg-server/xkeyboard-config/symbols/rs
index 9aab69119..3929ff4ec 100644
--- a/xorg-server/xkeyboard-config/symbols/rs
+++ b/xorg-server/xkeyboard-config/symbols/rs
@@ -1,328 +1,327 @@
-// Bosnian, Croatian, Serbian and Slovenian XKB keyboard mapping
-// (derived from "Danube" D.2)
-//
-// Danube D.2 from 2003-05-12 is available at http://srpski.org/dunav/
-//
-// Original authors:
-// Danilo Segan (Данило Шеган) <danilo@kvota.net>
-// Chusslove Illich (Часлав Илић) <chaslav@sezampro.yu>
-//
-// Danilo Segan <danilo@kvota.net>:
-// - Modified for inclusion in XFree86
-// - Further modifications on 2005-08-18 to support Bosnian, Croatian
-// and Slovenian in xkeyboard-config
-//
-// $XKeyboardConfig$
-
-default partial alphanumeric_keys
-xkb_symbols "basic" {
-
- name[Group1]= "Serbia";
-
- include "rs(cyrlevel3)"
- include "rs(common)"
- include "rs(cyralpha)"
- include "level3(ralt_switch)"
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "latin" {
-
- name[Group1]= "Serbia - Latin";
-
- include "latin(type3)"
- include "rs(latalpha)"
- include "rs(latlevel3)"
- include "rs(common)"
- include "level3(ralt_switch)"
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "yz" {
- // Cyrillic_zhe and Cyrillic_ze swapped.
-
- name[Group1]= "Serbia - Z and ZHE swapped";
-
- include "rs(basic)"
-
- key <AD06> { [ Cyrillic_zhe, Cyrillic_ZHE, any,any ] }; // y
- key <AB01> { [ Cyrillic_ze, Cyrillic_ZE, any,any ] }; // z
-};
-
-partial hidden alphanumeric_keys
-xkb_symbols "common" {
- // "Common" keys: keys which are same for both latin and cyrillic keyboards
-
- key.type[Group1] = "FOUR_LEVEL";
-
- key <TLDE> { [ quoteleft, asciitilde, any,any ] }; //
- key <AE01> { [ 1, exclam, any,any ] }; //
- key <AE02> { [ 2, quotedbl, any,any ] }; //
- key <AE03> { [ 3, numbersign, any,any ] }; //
- key <AE04> { [ 4, dollar, any,any ] }; //
- key <AE05> { [ 5, percent, any,any ] }; //
- key <AE06> { [ 6, ampersand, any,any ] }; //
- key <AE07> { [ 7, slash, any,any ] }; //
- key <AE08> { [ 8, parenleft, any,any ] }; //
- key <AE09> { [ 9, parenright, any,any ] }; //
- key <AE10> { [ 0, equal, any,any ] }; //
- key <AE11> { [ apostrophe, question, any,any ] }; //
- key <AE12> { [ plus, asterisk, any,any ] }; //
-
- key <AB08> { [ comma, semicolon, any,any ] }; //
- key <AB09> { [ period, colon, any,any ] }; //
- key <AB10> { [ minus, underscore, any,any ] }; //
-
- include "kpdl(comma)"
-};
-
-partial hidden alphanumeric_keys
-xkb_symbols "cyralpha" {
-
- key.type[Group1] = "FOUR_LEVEL_ALPHABETIC";
-
- key <AD01> { [ Cyrillic_lje, Cyrillic_LJE, any,any ] }; // q
- key <AD02> { [ Cyrillic_nje, Cyrillic_NJE, any,any ] }; // w
- key <AD03> { [ Cyrillic_ie, Cyrillic_IE, any,any ] }; // e
- key <AD04> { [ Cyrillic_er, Cyrillic_ER, any,any ] }; // r
- key <AD05> { [ Cyrillic_te, Cyrillic_TE, any,any ] }; // t
- key <AD06> { [ Cyrillic_ze, Cyrillic_ZE, any,any ] }; // y
- key <AD07> { [ Cyrillic_u, Cyrillic_U, any,any ] }; // u
- key <AD08> { [ Cyrillic_i, Cyrillic_I, any,any ] }; // i
- key <AD09> { [ Cyrillic_o, Cyrillic_O, any,any ] }; // o
- key <AD10> { [ Cyrillic_pe, Cyrillic_PE, any,any ] }; // p
- key <AD11> { [ Cyrillic_sha, Cyrillic_SHA, any,any ] }; // [ {
- key <AD12> { [ Serbian_dje, Serbian_DJE, any,any ] }; // ] }
-
- key <AC01> { [ Cyrillic_a, Cyrillic_A, any,any ] }; // a
- key <AC02> { [ Cyrillic_es, Cyrillic_ES, any,any ] }; // s
- key <AC03> { [ Cyrillic_de, Cyrillic_DE, any,any ] }; // d
- key <AC04> { [ Cyrillic_ef, Cyrillic_EF, any,any ] }; // f
- key <AC05> { [ Cyrillic_ghe, Cyrillic_GHE, any,any ] }; // g
- key <AC06> { [ Cyrillic_ha, Cyrillic_HA, any,any ] }; // h
- key <AC07> { [ Cyrillic_je, Cyrillic_JE, any,any ] }; // j
- key <AC08> { [ Cyrillic_ka, Cyrillic_KA, any,any ] }; // k
- key <AC09> { [ Cyrillic_el, Cyrillic_EL, any,any ] }; // l
- key <AC10> { [ Cyrillic_che, Cyrillic_CHE, any,any ] }; // ; :
- key <AC11> { [ Serbian_tshe, Serbian_TSHE, any,any ] }; // ' "
- key <BKSL> { [ Cyrillic_zhe, Cyrillic_ZHE, any,any ] }; // \ |
-
- key <AB01> { [ Cyrillic_zhe, Cyrillic_ZHE, any,any ] }; // z
- key <AB02> { [ Cyrillic_dzhe, Cyrillic_DZHE, any,any ] }; // x
- key <AB03> { [ Cyrillic_tse, Cyrillic_TSE, any,any ] }; // c
- key <AB04> { [ Cyrillic_ve, Cyrillic_VE, any,any ] }; // v
- key <AB05> { [ Cyrillic_be, Cyrillic_BE, any,any ] }; // b
- key <AB06> { [ Cyrillic_en, Cyrillic_EN, any,any ] }; // n
- key <AB07> { [ Cyrillic_em, Cyrillic_EM, any,any ] }; // m
-};
-
-
-partial hidden alphanumeric_keys
-xkb_symbols "latalpha" {
-
- key.type[Group1] = "FOUR_LEVEL_ALPHABETIC";
-
- key <AD11> { [ scaron, Scaron, any,any ] }; //
- key <AD12> { [ dstroke, Dstroke, any,any ] }; //
-
- key <AC10> { [ ccaron, Ccaron, any,any ] }; //
- key <AC11> { [ cacute, Cacute, any,any ] }; //
- key <BKSL> { [ zcaron, Zcaron, any,any ] }; //
-
-};
-
-partial hidden alphanumeric_keys
-xkb_symbols "twoletter" {
- // These are letters which are written in latin transcription with two-characters.
-
- key <AD01> { type[Group1] = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC",
- [ U1C9, U1C8, any, U1C7 ] }; // q
- key <AD02> { type[Group1] = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC",
- [ U1CC, U1CB, any, U1CA ] }; // w
- key <AB02> { type[Group1] = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC",
- [ U1C6, U1C5, any, U1C4 ] }; // x
-
- // Also replace letter Y with Zcaron, since Y is of no use any longer
- key <AB01> { [ zcaron, Zcaron, any,any ] }; //
-};
-
-partial hidden alphanumeric_keys
-xkb_symbols "latlevel3" {
- key <TLDE> { [ any,any, notsign, notsign ] }; // ` ~
- key <AE01> { [ any,any, dead_tilde, asciitilde ] }; // 1 !
- key <AE02> { [ any,any, dead_caron, caron ] }; // 2 @
- key <AE03> { [ any,any, dead_circumflex, asciicircum ] }; // 3 #
- key <AE04> { [ any,any, dead_breve, breve ] }; // 4 $
- key <AE05> { [ any,any, dead_abovering, degree ] }; // 5 %
- key <AE06> { [ any,any, dead_ogonek, ogonek ] }; // 6 ^
- key <AE07> { [ any,any, dead_grave, grave ] }; // 7 &
- key <AE08> { [ any,any, dead_abovedot, abovedot ] }; // 8 *
- key <AE09> { [ any,any, dead_acute, apostrophe ] }; // 9 (
- key <AE10> { [ any,any, dead_doubleacute, doubleacute ] }; // 0 )
- key <AE11> { [ any,any, dead_diaeresis, diaeresis ] }; // - _
- key <AE12> { [ any,any, dead_cedilla, cedilla ] }; // = +
-
- key <AD01> { [ any,any, backslash, Greek_OMEGA ] }; // q
- key <AD02> { [ any,any, bar, Lstroke ] }; // w
- key <AD03> { [ any,any, EuroSign, EuroSign ] }; // e
- key <AD04> { [ any,any, paragraph, registered ] }; // r
- key <AD05> { [ any,any, tslash, Tslash ] }; // t // ALPHABETIC
- key <AD06> { [ any,any, leftarrow, yen ] }; // y
- key <AD07> { [ any,any, downarrow, uparrow ] }; // u
- key <AD08> { [ any,any, rightarrow, idotless ] }; // i
- key <AD09> { [ any,any, oslash, Ooblique ] }; // o // ALPHABETIC
- key <AD10> { [ any,any, thorn, THORN ] }; // p // ALPHABETIC
- key <AD11> { [ any,any, division, dead_abovering ] }; // [
- key <AD12> { [ any,any, multiply, dead_macron ] }; // ]
-
- key <AC01> { [ any,any, ae, AE ] }; // a // ALPHABETIC
- key <AC02> { [ any,any, doublelowquotemark, guillemotright ] }; // s
- key <AC03> { [ any,any, leftdoublequotemark, guillemotleft ] }; // d
- key <AC04> { [ any,any, bracketleft, ordfeminine ] }; // f
- key <AC05> { [ any,any, bracketright, ENG ] }; // g
- key <AC06> { [ any,any, hstroke, Hstroke ] }; // h // ALPHABETIC
- key <AC07> { [ any,any, NoSymbol, NoSymbol ] }; // j
- key <AC08> { [ any,any, lstroke, ampersand ] }; // k
- key <AC09> { [ any,any, lstroke, Lstroke ] }; // l
- key <AC10> { [ any,any, dead_acute, dead_doubleacute ] }; // ;
- key <AC11> { [ any,any, ssharp, dead_caron ] }; // '
- key <BKSL> { [ any,any, currency, dead_breve ] }; // \
-
- key <AB01> { [ any,any, leftsinglequotemark, guillemotright ] }; // z
- key <AB02> { [ any,any, rightsinglequotemark,guillemotleft ] }; // x
- key <AB03> { [ any,any, cent, copyright ] }; // c
- key <AB04> { [ any,any, at, grave ] }; // v
- key <AB05> { [ any,any, braceleft, apostrophe ] }; // b
- key <AB06> { [ any,any, braceright, braceright ] }; // n
- key <AB07> { [ any,any, asciicircum, masculine ] }; // m
- key <AB08> { [ any,any, less, multiply ] }; // , <
- key <AB09> { [ any,any, greater, division ] }; // . >
- key <AB10> { [ any,any, emdash, endash ] }; // / ?
-
-};
-
-partial hidden alphanumeric_keys
-xkb_symbols "cyrlevel3" {
- key <TLDE> { [ any,any, degree, notsign ] }; // ` ~
- key <AE03> { [ any,any, dead_circumflex, NoSymbol ] }; // 3 #
- key <AE07> { [ any,any, dead_grave, NoSymbol ] }; // 7 &
- key <AE08> { [ any,any, dead_doublegrave, NoSymbol ] }; // 8 *
- key <AE09> { [ any,any, dead_acute, NoSymbol ] }; // 9 (
- key <AE10> { [ any,any, dead_invertedbreve, NoSymbol ] }; // 0 )
- key <AE11> { [ any,any, dead_macron, NoSymbol ] }; // - _
-
- key <AD01> { [ any,any, backslash, NoSymbol ] }; // q
- key <AD02> { [ any,any, bar, NoSymbol ] }; // w
- key <AD03> { [ any,any, EuroSign, sterling ] }; // e
- key <AD04> { [ any,any, paragraph, registered ] }; // r
- key <AD05> { [ any,any, ellipsis, NoSymbol ] }; // t // ALPHABETIC
- key <AD06> { [ any,any, leftarrow, yen ] }; // y
- key <AD07> { [ any,any, downarrow, uparrow ] }; // u
- key <AD08> { [ any,any, rightarrow, NoSymbol ] }; // i
- key <AD09> { [ any,any, section, NoSymbol ] }; // o // ALPHABETIC
- key <AD11> { [ any,any, division, NoSymbol ] }; // [
- key <AD12> { [ any,any, multiply, NoSymbol ] }; // ]
-
- key <AC02> { [ any,any, doublelowquotemark, guillemotright ] }; // s
- key <AC03> { [ any,any, leftdoublequotemark, guillemotleft ] }; // d
- key <AC04> { [ any,any, bracketleft, NoSymbol ] }; // f
- key <AC05> { [ any,any, bracketright, NoSymbol ] }; // g
- key <BKSL> { [ any,any, currency, NoSymbol ] }; // \
-
- key <AB01> { [ any,any, leftsinglequotemark, NoSymbol ] }; // z
- key <AB02> { [ any,any, rightsinglequotemark,NoSymbol ] }; // x
- key <AB03> { [ any,any, cent, copyright ] }; // c
- key <AB04> { [ any,any, at, NoSymbol ] }; // v
- key <AB05> { [ any,any, braceleft, NoSymbol ] }; // b
- key <AB06> { [ any,any, braceright, NoSymbol ] }; // n
- key <AB07> { [ any,any, asciicircum, NoSymbol ] }; // m
- key <AB08> { [ any,any, less, NoSymbol ] }; // , <
- key <AB09> { [ any,any, greater, NoSymbol ] }; // . >
- key <AB10> { [ any,any, emdash, endash ] }; // / ?
-};
-
-partial alphanumeric_keys
-xkb_symbols "latinunicode" {
- // This mapping supports the Unicode characters 0x1c4-0x1cc (dz, lj, and nj
- // as single character). You get the title form with AltGr+Shift.
-
- name[Group1]= "Serbia - Latin Unicode";
-
- include "rs(latin)"
- include "rs(twoletter)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "latinyz" {
- // For those who insist on using "english-position" Z and Y.
-
- name[Group1]= "Serbia - Latin qwerty";
-
- include "rs(latin)"
-
- key <AD06> { [ y, Y, any,any ] }; // y
- key <AB01> { [ z, Z, any,any ] }; // z
-};
-
-partial alphanumeric_keys
-xkb_symbols "latinunicodeyz" {
- // Unicode, ZHE and Z swapped.
-
- name[Group1]= "Serbia - Latin Unicode qwerty";
-
- include "rs(latinunicode)"
-
- key <AD06> { [ zcaron, Zcaron, any,any ] }; // y
- key <AB01> { [ z, Z, any,any ] }; // z
-};
-
-xkb_symbols "alternatequotes" {
- // Another acceptable »pair of quotes« for Serbian
-
- name[Group1]= "Serbia - With guillemets";
-
- include "rs(basic)"
-
- key <AC02> { [ any,any, guillemotright, NoSymbol ] }; // s
- key <AC03> { [ any,any, guillemotleft, NoSymbol ] }; // d
-};
-
-xkb_symbols "latinalternatequotes" {
- // Another acceptable »pair of quotes« for Serbian
-
- name[Group1]= "Serbia - Latin with guillemets";
-
- include "rs(latin)"
-
- key <AC02> { [ any,any, guillemotright, NoSymbol ] }; // s
- key <AC03> { [ any,any, guillemotleft, NoSymbol ] }; // d
-};
-
-xkb_symbols "rue" {
- // Homophonic layout for Pannonian Rusyn (spoken mainly in Serbia and
- // Croatia by the Rusyn people), based on Ukrainian homophonic.
- // Author: Ljubomir J. Papuga (Любомир Я. Папуґа) <papuga.rs@gmail.com>
-
- name[Group1]= "Serbia - Pannonian Rusyn Homophonic";
-
- include "ua(homophonic)"
-
- key <TLDE> { [ grave, asciitilde ] };
- key <AE03> { [ 3, doublelowquotemark ] };
- key <AE04> { [ 4, rightdoublequotemark ] };
- key <AE07> { [ 7, EuroSign ] };
- key <AE11> { [ 0x002D, emdash ] };
- key <AE12> { [ equal, plus ] };
-
- key <AD02> { [ Ukrainian_ie, Ukrainian_IE ] };
- key <AD06> { [ Cyrillic_yu, Cyrillic_YU ] };
- key <AD08> { [ Cyrillic_i, Cyrillic_I ] };
- key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
-
- key <LSGT> { [ Ukrainian_yi, Ukrainian_YI ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
-};
+// Bosnian, Croatian, Serbian and Slovenian XKB keyboard mapping
+// (derived from "Danube" D.2)
+//
+// Danube D.2 from 2003-05-12 is available at http://srpski.org/dunav/
+//
+// Original authors:
+// Danilo Segan (Данило Шеган) <danilo@kvota.net>
+// Chusslove Illich (Часлав Илић) <chaslav@sezampro.yu>
+//
+// Danilo Segan <danilo@kvota.net>:
+// - Modified for inclusion in XFree86
+// - Further modifications on 2005-08-18 to support Bosnian, Croatian
+// and Slovenian in xkeyboard-config
+//
+
+default partial alphanumeric_keys
+xkb_symbols "basic" {
+
+ name[Group1]= "Serbia";
+
+ include "rs(cyrlevel3)"
+ include "rs(common)"
+ include "rs(cyralpha)"
+ include "level3(ralt_switch)"
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "latin" {
+
+ name[Group1]= "Serbia - Latin";
+
+ include "latin(type3)"
+ include "rs(latalpha)"
+ include "rs(latlevel3)"
+ include "rs(common)"
+ include "level3(ralt_switch)"
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "yz" {
+ // Cyrillic_zhe and Cyrillic_ze swapped.
+
+ name[Group1]= "Serbia - Z and ZHE swapped";
+
+ include "rs(basic)"
+
+ key <AD06> { [ Cyrillic_zhe, Cyrillic_ZHE, any,any ] }; // y
+ key <AB01> { [ Cyrillic_ze, Cyrillic_ZE, any,any ] }; // z
+};
+
+partial hidden alphanumeric_keys
+xkb_symbols "common" {
+ // "Common" keys: keys which are same for both latin and cyrillic keyboards
+
+ key.type[Group1] = "FOUR_LEVEL";
+
+ key <TLDE> { [ quoteleft, asciitilde, any,any ] }; //
+ key <AE01> { [ 1, exclam, any,any ] }; //
+ key <AE02> { [ 2, quotedbl, any,any ] }; //
+ key <AE03> { [ 3, numbersign, any,any ] }; //
+ key <AE04> { [ 4, dollar, any,any ] }; //
+ key <AE05> { [ 5, percent, any,any ] }; //
+ key <AE06> { [ 6, ampersand, any,any ] }; //
+ key <AE07> { [ 7, slash, any,any ] }; //
+ key <AE08> { [ 8, parenleft, any,any ] }; //
+ key <AE09> { [ 9, parenright, any,any ] }; //
+ key <AE10> { [ 0, equal, any,any ] }; //
+ key <AE11> { [ apostrophe, question, any,any ] }; //
+ key <AE12> { [ plus, asterisk, any,any ] }; //
+
+ key <AB08> { [ comma, semicolon, any,any ] }; //
+ key <AB09> { [ period, colon, any,any ] }; //
+ key <AB10> { [ minus, underscore, any,any ] }; //
+
+ include "kpdl(comma)"
+};
+
+partial hidden alphanumeric_keys
+xkb_symbols "cyralpha" {
+
+ key.type[Group1] = "FOUR_LEVEL_ALPHABETIC";
+
+ key <AD01> { [ Cyrillic_lje, Cyrillic_LJE, any,any ] }; // q
+ key <AD02> { [ Cyrillic_nje, Cyrillic_NJE, any,any ] }; // w
+ key <AD03> { [ Cyrillic_ie, Cyrillic_IE, any,any ] }; // e
+ key <AD04> { [ Cyrillic_er, Cyrillic_ER, any,any ] }; // r
+ key <AD05> { [ Cyrillic_te, Cyrillic_TE, any,any ] }; // t
+ key <AD06> { [ Cyrillic_ze, Cyrillic_ZE, any,any ] }; // y
+ key <AD07> { [ Cyrillic_u, Cyrillic_U, any,any ] }; // u
+ key <AD08> { [ Cyrillic_i, Cyrillic_I, any,any ] }; // i
+ key <AD09> { [ Cyrillic_o, Cyrillic_O, any,any ] }; // o
+ key <AD10> { [ Cyrillic_pe, Cyrillic_PE, any,any ] }; // p
+ key <AD11> { [ Cyrillic_sha, Cyrillic_SHA, any,any ] }; // [ {
+ key <AD12> { [ Serbian_dje, Serbian_DJE, any,any ] }; // ] }
+
+ key <AC01> { [ Cyrillic_a, Cyrillic_A, any,any ] }; // a
+ key <AC02> { [ Cyrillic_es, Cyrillic_ES, any,any ] }; // s
+ key <AC03> { [ Cyrillic_de, Cyrillic_DE, any,any ] }; // d
+ key <AC04> { [ Cyrillic_ef, Cyrillic_EF, any,any ] }; // f
+ key <AC05> { [ Cyrillic_ghe, Cyrillic_GHE, any,any ] }; // g
+ key <AC06> { [ Cyrillic_ha, Cyrillic_HA, any,any ] }; // h
+ key <AC07> { [ Cyrillic_je, Cyrillic_JE, any,any ] }; // j
+ key <AC08> { [ Cyrillic_ka, Cyrillic_KA, any,any ] }; // k
+ key <AC09> { [ Cyrillic_el, Cyrillic_EL, any,any ] }; // l
+ key <AC10> { [ Cyrillic_che, Cyrillic_CHE, any,any ] }; // ; :
+ key <AC11> { [ Serbian_tshe, Serbian_TSHE, any,any ] }; // ' "
+ key <BKSL> { [ Cyrillic_zhe, Cyrillic_ZHE, any,any ] }; // \ |
+
+ key <AB01> { [ Cyrillic_zhe, Cyrillic_ZHE, any,any ] }; // z
+ key <AB02> { [ Cyrillic_dzhe, Cyrillic_DZHE, any,any ] }; // x
+ key <AB03> { [ Cyrillic_tse, Cyrillic_TSE, any,any ] }; // c
+ key <AB04> { [ Cyrillic_ve, Cyrillic_VE, any,any ] }; // v
+ key <AB05> { [ Cyrillic_be, Cyrillic_BE, any,any ] }; // b
+ key <AB06> { [ Cyrillic_en, Cyrillic_EN, any,any ] }; // n
+ key <AB07> { [ Cyrillic_em, Cyrillic_EM, any,any ] }; // m
+};
+
+
+partial hidden alphanumeric_keys
+xkb_symbols "latalpha" {
+
+ key.type[Group1] = "FOUR_LEVEL_ALPHABETIC";
+
+ key <AD11> { [ scaron, Scaron, any,any ] }; //
+ key <AD12> { [ dstroke, Dstroke, any,any ] }; //
+
+ key <AC10> { [ ccaron, Ccaron, any,any ] }; //
+ key <AC11> { [ cacute, Cacute, any,any ] }; //
+ key <BKSL> { [ zcaron, Zcaron, any,any ] }; //
+
+};
+
+partial hidden alphanumeric_keys
+xkb_symbols "twoletter" {
+ // These are letters which are written in latin transcription with two-characters.
+
+ key <AD01> { type[Group1] = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC",
+ [ U1C9, U1C8, any, U1C7 ] }; // q
+ key <AD02> { type[Group1] = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC",
+ [ U1CC, U1CB, any, U1CA ] }; // w
+ key <AB02> { type[Group1] = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC",
+ [ U1C6, U1C5, any, U1C4 ] }; // x
+
+ // Also replace letter Y with Zcaron, since Y is of no use any longer
+ key <AB01> { [ zcaron, Zcaron, any,any ] }; //
+};
+
+partial hidden alphanumeric_keys
+xkb_symbols "latlevel3" {
+ key <TLDE> { [ any,any, notsign, notsign ] }; // ` ~
+ key <AE01> { [ any,any, dead_tilde, asciitilde ] }; // 1 !
+ key <AE02> { [ any,any, dead_caron, caron ] }; // 2 @
+ key <AE03> { [ any,any, dead_circumflex, asciicircum ] }; // 3 #
+ key <AE04> { [ any,any, dead_breve, breve ] }; // 4 $
+ key <AE05> { [ any,any, dead_abovering, degree ] }; // 5 %
+ key <AE06> { [ any,any, dead_ogonek, ogonek ] }; // 6 ^
+ key <AE07> { [ any,any, dead_grave, grave ] }; // 7 &
+ key <AE08> { [ any,any, dead_abovedot, abovedot ] }; // 8 *
+ key <AE09> { [ any,any, dead_acute, apostrophe ] }; // 9 (
+ key <AE10> { [ any,any, dead_doubleacute, doubleacute ] }; // 0 )
+ key <AE11> { [ any,any, dead_diaeresis, diaeresis ] }; // - _
+ key <AE12> { [ any,any, dead_cedilla, cedilla ] }; // = +
+
+ key <AD01> { [ any,any, backslash, Greek_OMEGA ] }; // q
+ key <AD02> { [ any,any, bar, Lstroke ] }; // w
+ key <AD03> { [ any,any, EuroSign, EuroSign ] }; // e
+ key <AD04> { [ any,any, paragraph, registered ] }; // r
+ key <AD05> { [ any,any, tslash, Tslash ] }; // t // ALPHABETIC
+ key <AD06> { [ any,any, leftarrow, yen ] }; // y
+ key <AD07> { [ any,any, downarrow, uparrow ] }; // u
+ key <AD08> { [ any,any, rightarrow, idotless ] }; // i
+ key <AD09> { [ any,any, oslash, Ooblique ] }; // o // ALPHABETIC
+ key <AD10> { [ any,any, thorn, THORN ] }; // p // ALPHABETIC
+ key <AD11> { [ any,any, division, dead_abovering ] }; // [
+ key <AD12> { [ any,any, multiply, dead_macron ] }; // ]
+
+ key <AC01> { [ any,any, ae, AE ] }; // a // ALPHABETIC
+ key <AC02> { [ any,any, doublelowquotemark, guillemotright ] }; // s
+ key <AC03> { [ any,any, leftdoublequotemark, guillemotleft ] }; // d
+ key <AC04> { [ any,any, bracketleft, ordfeminine ] }; // f
+ key <AC05> { [ any,any, bracketright, ENG ] }; // g
+ key <AC06> { [ any,any, hstroke, Hstroke ] }; // h // ALPHABETIC
+ key <AC07> { [ any,any, NoSymbol, NoSymbol ] }; // j
+ key <AC08> { [ any,any, lstroke, ampersand ] }; // k
+ key <AC09> { [ any,any, lstroke, Lstroke ] }; // l
+ key <AC10> { [ any,any, dead_acute, dead_doubleacute ] }; // ;
+ key <AC11> { [ any,any, ssharp, dead_caron ] }; // '
+ key <BKSL> { [ any,any, currency, dead_breve ] }; // \
+
+ key <AB01> { [ any,any, leftsinglequotemark, guillemotright ] }; // z
+ key <AB02> { [ any,any, rightsinglequotemark,guillemotleft ] }; // x
+ key <AB03> { [ any,any, cent, copyright ] }; // c
+ key <AB04> { [ any,any, at, grave ] }; // v
+ key <AB05> { [ any,any, braceleft, apostrophe ] }; // b
+ key <AB06> { [ any,any, braceright, braceright ] }; // n
+ key <AB07> { [ any,any, asciicircum, masculine ] }; // m
+ key <AB08> { [ any,any, less, multiply ] }; // , <
+ key <AB09> { [ any,any, greater, division ] }; // . >
+ key <AB10> { [ any,any, emdash, endash ] }; // / ?
+
+};
+
+partial hidden alphanumeric_keys
+xkb_symbols "cyrlevel3" {
+ key <TLDE> { [ any,any, degree, notsign ] }; // ` ~
+ key <AE03> { [ any,any, dead_circumflex, NoSymbol ] }; // 3 #
+ key <AE07> { [ any,any, dead_grave, NoSymbol ] }; // 7 &
+ key <AE08> { [ any,any, dead_doublegrave, NoSymbol ] }; // 8 *
+ key <AE09> { [ any,any, dead_acute, NoSymbol ] }; // 9 (
+ key <AE10> { [ any,any, dead_invertedbreve, NoSymbol ] }; // 0 )
+ key <AE11> { [ any,any, dead_macron, NoSymbol ] }; // - _
+
+ key <AD01> { [ any,any, backslash, NoSymbol ] }; // q
+ key <AD02> { [ any,any, bar, NoSymbol ] }; // w
+ key <AD03> { [ any,any, EuroSign, sterling ] }; // e
+ key <AD04> { [ any,any, paragraph, registered ] }; // r
+ key <AD05> { [ any,any, ellipsis, NoSymbol ] }; // t // ALPHABETIC
+ key <AD06> { [ any,any, leftarrow, yen ] }; // y
+ key <AD07> { [ any,any, downarrow, uparrow ] }; // u
+ key <AD08> { [ any,any, rightarrow, NoSymbol ] }; // i
+ key <AD09> { [ any,any, section, NoSymbol ] }; // o // ALPHABETIC
+ key <AD11> { [ any,any, division, NoSymbol ] }; // [
+ key <AD12> { [ any,any, multiply, NoSymbol ] }; // ]
+
+ key <AC02> { [ any,any, doublelowquotemark, guillemotright ] }; // s
+ key <AC03> { [ any,any, leftdoublequotemark, guillemotleft ] }; // d
+ key <AC04> { [ any,any, bracketleft, NoSymbol ] }; // f
+ key <AC05> { [ any,any, bracketright, NoSymbol ] }; // g
+ key <BKSL> { [ any,any, currency, NoSymbol ] }; // \
+
+ key <AB01> { [ any,any, leftsinglequotemark, NoSymbol ] }; // z
+ key <AB02> { [ any,any, rightsinglequotemark,NoSymbol ] }; // x
+ key <AB03> { [ any,any, cent, copyright ] }; // c
+ key <AB04> { [ any,any, at, NoSymbol ] }; // v
+ key <AB05> { [ any,any, braceleft, NoSymbol ] }; // b
+ key <AB06> { [ any,any, braceright, NoSymbol ] }; // n
+ key <AB07> { [ any,any, asciicircum, NoSymbol ] }; // m
+ key <AB08> { [ any,any, less, NoSymbol ] }; // , <
+ key <AB09> { [ any,any, greater, NoSymbol ] }; // . >
+ key <AB10> { [ any,any, emdash, endash ] }; // / ?
+};
+
+partial alphanumeric_keys
+xkb_symbols "latinunicode" {
+ // This mapping supports the Unicode characters 0x1c4-0x1cc (dz, lj, and nj
+ // as single character). You get the title form with AltGr+Shift.
+
+ name[Group1]= "Serbia - Latin Unicode";
+
+ include "rs(latin)"
+ include "rs(twoletter)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "latinyz" {
+ // For those who insist on using "english-position" Z and Y.
+
+ name[Group1]= "Serbia - Latin qwerty";
+
+ include "rs(latin)"
+
+ key <AD06> { [ y, Y, any,any ] }; // y
+ key <AB01> { [ z, Z, any,any ] }; // z
+};
+
+partial alphanumeric_keys
+xkb_symbols "latinunicodeyz" {
+ // Unicode, ZHE and Z swapped.
+
+ name[Group1]= "Serbia - Latin Unicode qwerty";
+
+ include "rs(latinunicode)"
+
+ key <AD06> { [ zcaron, Zcaron, any,any ] }; // y
+ key <AB01> { [ z, Z, any,any ] }; // z
+};
+
+xkb_symbols "alternatequotes" {
+ // Another acceptable »pair of quotes« for Serbian
+
+ name[Group1]= "Serbia - With guillemets";
+
+ include "rs(basic)"
+
+ key <AC02> { [ any,any, guillemotright, NoSymbol ] }; // s
+ key <AC03> { [ any,any, guillemotleft, NoSymbol ] }; // d
+};
+
+xkb_symbols "latinalternatequotes" {
+ // Another acceptable »pair of quotes« for Serbian
+
+ name[Group1]= "Serbia - Latin with guillemets";
+
+ include "rs(latin)"
+
+ key <AC02> { [ any,any, guillemotright, NoSymbol ] }; // s
+ key <AC03> { [ any,any, guillemotleft, NoSymbol ] }; // d
+};
+
+xkb_symbols "rue" {
+ // Homophonic layout for Pannonian Rusyn (spoken mainly in Serbia and
+ // Croatia by the Rusyn people), based on Ukrainian homophonic.
+ // Author: Ljubomir J. Papuga (Любомир Я. Папуґа) <papuga.rs@gmail.com>
+
+ name[Group1]= "Serbia - Pannonian Rusyn Homophonic";
+
+ include "ua(homophonic)"
+
+ key <TLDE> { [ grave, asciitilde ] };
+ key <AE03> { [ 3, doublelowquotemark ] };
+ key <AE04> { [ 4, rightdoublequotemark ] };
+ key <AE07> { [ 7, EuroSign ] };
+ key <AE11> { [ 0x002D, emdash ] };
+ key <AE12> { [ equal, plus ] };
+
+ key <AD02> { [ Ukrainian_ie, Ukrainian_IE ] };
+ key <AD06> { [ Cyrillic_yu, Cyrillic_YU ] };
+ key <AD08> { [ Cyrillic_i, Cyrillic_I ] };
+ key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+
+ key <LSGT> { [ Ukrainian_yi, Ukrainian_YI ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/ru b/xorg-server/xkeyboard-config/symbols/ru
index b95d6d57e..9cc7683dd 100644
--- a/xorg-server/xkeyboard-config/symbols/ru
+++ b/xorg-server/xkeyboard-config/symbols/ru
@@ -1,531 +1,527 @@
-// $XKeyboardConfig$
-
-// based on
-// russian standard keyboard
-// AEN <aen@logic.ru>
-// 2001/12/23 by Leon Kanter <leon@blackcatlinux.com>
-// 2005/12/09 Valery Inozemtsev <shrek@altlinux.ru>
-//
-// $XFree86: xc/programs/xkbcomp/symbols/ru,v 1.3 2003/02/15 22:27:05 dawes Exp $
-
-// Windows layout
-partial default alphanumeric_keys
-xkb_symbols "winkeys" {
- include "ru(common)"
-
- name[Group1]= "Russia";
-
- key <AE03> { [ 3, numerosign ] };
- key <AE04> { [ 4, semicolon ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, colon ] };
- key <AE07> { [ 7, question ] };
- key <AE08> { [ 8, asterisk ] };
-
- key <AB10> { [ period, comma ] };
- key <BKSL> { [ backslash, slash ] };
-};
-
-partial hidden alphanumeric_keys
-xkb_symbols "common" {
-
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, quotedbl ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, asterisk ] };
- key <AE05> { [ 5, colon ] };
- key <AE06> { [ 6, comma ] };
- key <AE07> { [ 7, period ] };
- key <AE08> { [ 8, semicolon ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
- key <BKSL> { [ backslash, bar ] };
- key <AB10> { [ slash, question ] };
- key <LSGT> { [ slash, bar ] };
-
- key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] };
- key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <AD03> { [ Cyrillic_u, Cyrillic_U ] };
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] };
- key <AD06> { [ Cyrillic_en, Cyrillic_EN ] };
- key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
- key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] };
- key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <AC04> { [ Cyrillic_a, Cyrillic_A ] };
- key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
- key <AC07> { [ Cyrillic_o, Cyrillic_O ] };
- key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
- key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
- key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <AC11> { [ Cyrillic_e, Cyrillic_E ] };
- key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
- key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
- key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
- key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
- key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
- key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
- key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
- key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
-
- key.type[group1]="TWO_LEVEL";
-
- include "kpdl(comma)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "legacy" {
- include "ru(common)"
-
- name[Group1]= "Russia - Legacy";
-};
-
-partial alphanumeric_keys
-xkb_symbols "olpc" {
-
- include "ru(common)"
-
- key <TLDE> { [ 0x01000451, 0x01000401, grave ] }; // Ñ‘, Ð
- key <AE03> { [ 3, numbersign, 0x01002116 ] }; // â„–
- key <AE04> { [ 4, dollar, semicolon ] };
- key <AE06> { [ 6, asciicircum, colon ] };
- key <AE07> { [ 7, ampersand ] };
- key <AE09> { [ 9, parenleft, acute ] };
- key <AC12> { [ backslash, bar, slash ] };
-
- include "group(olpc)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "typewriter" {
- include "ru(common)"
- name[Group1]= "Russia - Typewriter";
- key <TLDE> { [ bar, plus ] };
- key <AE01> { [ numerosign, 1 ] };
- key <AE02> { [ minus, 2 ] };
- key <AE03> { [ slash, 3 ] };
- key <AE04> { [ quotedbl, 4 ] };
- key <AE05> { [ colon, 5 ] };
- key <AE06> { [ comma, 6 ] };
- key <AE07> { [ period, 7 ] };
- key <AE08> { [ underscore, 8 ] };
- key <AE09> { [ question, 9 ] };
- key <AE10> { [ percent, 0 ] };
- key <AE11> { [ exclam, equal ] };
- key <AE12> { [ semicolon, backslash ] };
-
- key <BKSL> { [ parenright, parenleft ] };
-
- key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
- key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "typewriter-legacy" {
- include "ru(common)"
- name[Group1]= "Russia - Typewriter, legacy";
- key <TLDE> { [ apostrophe, quotedbl ] };
- key <AE01> { [ exclam, 1 ] };
- key <AE02> { [ numerosign, 2 ] };
- key <AE03> { [ slash, 3 ] };
- key <AE04> { [ semicolon, 4 ] };
- key <AE05> { [ colon, 5 ] };
- key <AE06> { [ comma, 6 ] };
- key <AE07> { [ period, 7 ] };
- key <AE08> { [ underscore, 8 ] };
- key <AE09> { [ question, 9 ] };
- key <AE10> { [ percent, 0 ] };
- key <BKSL> { [ parenleft, parenright ] };
-
- key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
- key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "phonetic" {
-
- name[Group1]= "Russia - Phonetic";
-
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, Cyrillic_io ] };
- key <AE04> { [ 4, Cyrillic_IO ] };
- key <AE05> { [ 5, Cyrillic_hardsign ] };
- key <AE06> { [ 6, Cyrillic_HARDSIGN ] };
- key <AE07> { [ 7, ampersand ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
-
- key <AB09> { [ period, greater ] };
- key <AB10> { [ slash, question ] };
- key <AB08> { [ comma, less ] };
- key <AC10> { [ semicolon, colon ] };
- key <AC11> { [ apostrophe, quotedbl ] };
- key <LSGT> { [ bar, brokenbar ] };
-
- key <TLDE> { [ Cyrillic_yu, Cyrillic_YU ] };
- key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
- key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
- key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
- key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <LatX> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
- key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
- key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
- key <LatV> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
- key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
- key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
- key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
- key <LatH> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <LatY> { [ Cyrillic_yeru, Cyrillic_YERU ] };
- key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
- key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
- key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <LatI> { [ Cyrillic_i, Cyrillic_I ] };
- key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
- key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
- key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
-
- key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AE12> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <BKSL> { [ Cyrillic_e, Cyrillic_E ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "phonetic_winkeys" {
-
- include "ru(phonetic)"
- name[Group1]= "Russia - Phonetic Winkeys";
-
- key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <LatH> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AE12> { [ Cyrillic_softsign, Cyrillic_softsign ] };
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "tt" {
- include "ru(winkeys)"
- name[Group1]= "Russia - Tatar";
-
- key.type[group1]="FOUR_LEVEL";
-
- key <TLDE> { [ 0x010004bb, 0x010004ba,
- Cyrillic_io, Cyrillic_IO ] };
- key <AD02> { [ 0x010004e9, 0x010004e8,
- Cyrillic_tse, Cyrillic_TSE ] };
- key <AD09> { [ 0x010004d9, 0x010004d8,
- Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <AD12> { [ 0x010004af, 0x010004ae,
- Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
- key <AC10> { [ 0x010004a3, 0x010004a2,
- Cyrillic_zhe, Cyrillic_ZHE ] };
- key <AB07> { [ 0x01000497, 0x01000496,
- Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
-
- include "level3(ralt_switch)"
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "os_legacy" {
- include "ru(common)"
-
- name[Group1]= "Russia - Ossetian, legacy";
-
- key <TLDE> { [ Cyrillic_e, Cyrillic_E ] };
- key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] };
- key <AC11> { [ 0x010004D5, 0x010004D4 ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "os_winkeys" {
- include "ru(winkeys)"
-
- name[Group1]= "Russia - Ossetian, Winkeys";
-
- key <TLDE> { [ Cyrillic_e, Cyrillic_E ] };
- key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] };
- key <AC11> { [ 0x010004D5, 0x010004D4 ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "cv" {
- include "ru(winkeys)"
-
- name[Group1]= "Russia - Chuvash";
-
- key.type[group1]="FOUR_LEVEL";
-
- key <AD03> { [ Cyrillic_u, Cyrillic_U,
- 0x010004f3, 0x010004f2 ] };
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE,
- 0x01000115, 0x01000114 ] };
- key <AC04> { [ Cyrillic_a, Cyrillic_A,
- abreve, Abreve ] };
- key <AB03> { [ Cyrillic_es, Cyrillic_ES,
- ccedilla, Ccedilla ] };
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "udm" {
- include "ru(winkeys)"
-
- name[Group1]= "Russia - Udmurt";
-
- key.type[group1]="FOUR_LEVEL";
-
- key <AE01> { [ question, exclam, 1, 1 ] };
- key <AE02> { [ parenleft, quotedbl, 2, 2 ] };
- key <AE03> { [ parenright, numerosign, 3, 3 ] };
- key <AE04> { [ colon, semicolon, 4, 4 ] };
- key <AE05> { [ asterisk, percent, 5, 5 ] };
- key <AE06> { [ 0x010004dd, 0x010004dc, 6, 6 ] };
- key <AE07> { [ 0x010004e7, 0x010004e6, 7, 7 ] };
- key <AE08> { [ 0x010004f5, 0x010004f4, 8, 8 ] };
- key <AE09> { [ 0x010004e5, 0x010004e4, 9, 9 ] };
- key <AE10> { [ 0x010004df, 0x010004de, 0, 0 ] };
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "cv_latin" {
- include "us(alt-intl)"
-
- name[Group1]= "Russia - Chuvash Latin";
-
- key.type[group1]="FOUR_LEVEL";
-
- key <AD01> { [ q, Q, 0x01000161, 0x01000160 ] };
- key <AD02> { [ w, W, udiaeresis, Udiaeresis ] };
- key <AD03> { [ e, E, 0x01000115, 0x01000114 ] };
- key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
- key <AD08> { [ i, I, 0x0100012d, 0x0100012c ] };
- key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
- key <AC01> { [ a, A, abreve, Abreve ] };
- key <AC02> { [ s, S, scedilla, Scedilla ] };
- key <AC05> { [ g, G, gbreve, Gbreve ] };
- key <AC07> { [ j, J, 0x01000131, 0x01000130 ] };
- key <AB03> { [ c, C, ccedilla, Ccedilla ] };
-
- include "level3(ralt_switch)"
-
-};
-
-// Komi language layout
-// based on
-// russian standard keyboard
-// Vlad Shakhov <lumpen.intellectual@gmail.com>
-// Last Changes 2007/10/23 by Vlad Shakhov <lumpen.intellectual@gmail.com>
-
-partial alphanumeric_keys
-xkb_symbols "kom" {
-
- include "ru(winkeys)"
-
- name[Group1]= "Russia - Komi";
-
- key.type[group1]="FOUR_LEVEL_ALPHABETIC";
-
-// cyrilllic o with diaeresis
- key <AC07> { [ Cyrillic_o, Cyrillic_O,
- U04E7, U04E6 ] };
-
-// hard I as additional key for soft Cyrillic_I
- key <AB05> { [ Cyrillic_i, Cyrillic_I,
- Ukrainian_i, Ukrainian_I ] };
-
- include "level3(ralt_switch)"
-};
-
-// Yakut language layout
-// 2008/04/23 Yakov Aleksandrov <bertjickty@yandex.ru>
-// 2008/04/23 Anatoliy Zhozhikov <jav@sitc.ru>
-// 2008/04/23 Aleksandr Varlamov
-partial alphanumeric_keys
-xkb_symbols "sah" {
-
- include "ru(winkeys)"
-
- name[Group1]= "Russia - Yakut";
-
- key.type[group1]="FOUR_LEVEL_ALPHABETIC";
-
- key <TLDE> { [ Cyrillic_io, Cyrillic_IO,
- U04EB, U04EA ] };
- key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI,
- U048B, U048A ] };
- key <AD03> { [ Cyrillic_u, Cyrillic_U,
- Cyrillic_u_straight, Cyrillic_U_straight ] };
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA,
- U04C4, U04C3 ] };
- key <AD06> { [ Cyrillic_en, Cyrillic_EN,
- U04A5, U04A4 ] };
- key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE,
- U0495, U0494 ] };
- key <AD10> { [ Cyrillic_ze, Cyrillic_ZE,
- U04E1, U04E0 ] };
- key <AD11> { [ Cyrillic_ha, Cyrillic_HA,
- Cyrillic_shha, Cyrillic_SHHA ] };
- key <AC07> { [ Cyrillic_o, Cyrillic_O,
- Cyrillic_o_bar, Cyrillic_O_bar ] };
- key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE,
- U0461, U0460 ] };
- key <AB02> { [ Cyrillic_che, Cyrillic_CHE,
- Cyrillic_u_macron, Cyrillic_U_macron ] };
- key <AB04> { [ Cyrillic_em, Cyrillic_EM,
- U04C8, U04C7 ] };
- key <AB05> { [ Cyrillic_i, Cyrillic_I,
- Cyrillic_i_macron, Cyrillic_I_macron ] };
-
- include "level3(ralt_switch)"
-};
-
-
-//Kalmyk language layout
-//based on the Kalmyk language layout: http://soft.oyrat.org/
-//Nikolay Korneev <halmg@oyrat.org>
-//Toli Miron <mirontoli@gmail.com>
-
-partial alphanumeric_keys
-xkb_symbols "xal" {
- include "ru(winkeys)"
-
- name[Group1]= "Russia - Kalmyk";
-
- key.type[group1]="FOUR_LEVEL";
-
- key <AE01> { [ question, exclam, 1 ] };
- key <AE02> { [ numerosign, quotedbl, 2 ] };
- key <AE03> { [ Cyrillic_u_straight, Cyrillic_U_straight, 3 ] };
- key <AE04> { [ Cyrillic_schwa, Cyrillic_SCHWA, 4 ] };
- key <AE05> { [ asterisk, percent, 5 ] };
- key <AE06> { [ Cyrillic_en_descender, Cyrillic_EN_descender, 6 ] };
- key <AE07> { [ Cyrillic_o_bar, Cyrillic_O_bar, 7 ] };
- key <AE08> { [ Cyrillic_shha, Cyrillic_SHHA, 8 ] };
- key <AE09> { [ Cyrillic_zhe_descender, Cyrillic_ZHE_descender, 9 ] };
- key <AE10> { [ semicolon, colon, 0 ] };
-
- key <TLDE> { [ parenleft, parenright, Cyrillic_io, Cyrillic_IO ] };
-
- key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, dollar ] };
- key <AD03> { [ Cyrillic_u, Cyrillic_U, EuroSign ] };
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] };
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE, trademark ] };
- key <AD11> { [ Cyrillic_ha, Cyrillic_HA, bracketleft ] };
- key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, bracketright ] };
- key <AC11> { [ Cyrillic_e, Cyrillic_E, apostrophe ] };
- key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] };
- key <AB08> { [ Cyrillic_be, Cyrillic_BE, less ] };
- key <AB09> { [ Cyrillic_yu, Cyrillic_YU, greater ] };
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "dos" {
-
- include "ru(common)"
-
- name[Group1]= "Russia - DOS";
-
- key <TLDE> { [ parenright, parenleft ] };
- key <AE04> { [ 4, currency ] };
- key <AE09> { [ 9, question ] };
- key <AE10> { [ 0, percent ] };
-
- key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "bak" {
- include "ru(winkeys)"
-
- name[Group1]= "Russia - Bashkirian";
- key.type[group1]="FOUR_LEVEL";
-
- key <TLDE> { [ 0x010004d9, 0x010004d8, Cyrillic_io, Cyrillic_IO ] };
- key <AE01> { [ exclam, quotedbl, 1, 1 ] };
- key <AE02> { [ 0x010004e9, 0x010004e8, 2, 2 ] };
- key <AE03> { [ 0x010004a1, 0x010004a0, 3, 3 ] };
- key <AE04> { [ 0x01000493, 0x01000492, 4, 4 ] };
- key <AE05> { [ 0x010004ab, 0x010004aa, 5, 5 ] };
- key <AE06> { [ colon, semicolon, 6, 6 ] };
- key <AE07> { [ 0x01000499, 0x01000498, 7, 7 ] };
- key <AE08> { [ 0x010004bb, 0x010004ba, 8, 8 ] };
- key <AE09> { [ question, parenleft, 9, 9 ] };
- key <AE10> { [ numerosign, parenright, 0, 0 ] };
- key <AE11> { [ minus, percent, minus, underscore ]};
- key <AE12> { [ 0x010004af, 0x010004ae, equal, plus ]};
- key <BKSL> { [ 0x010004a3, 0x010004a2, backslash, slash ]};
-
- include "level3(ralt_switch)"
-};
-
-// Serbian charecters added as third level symbols to Russian keyboard layout.
-
-partial alphanumeric_keys
-xkb_symbols "srp" {
- include "ru(common)"
- include "level3(ralt_switch)"
-
- name[Group1]= "Russia - Serbian";
-
- key <AE03> { [ 3, numerosign ] };
- key <AE04> { [ 4, semicolon ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, colon ] };
- key <AE07> { [ 7, question ] };
- key <AE08> { [ 8, asterisk ] };
- key <AB10> { [ period, comma ] };
- key <BKSL> { [ backslash, slash ] };
- key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, U458, U408 ] };
- key <AD06> { [ Cyrillic_en, Cyrillic_EN, U45A, U40A ] };
- key <AC08> { [ Cyrillic_el, Cyrillic_EL, U459, U409 ] };
- key <AC09> { [ Cyrillic_de, Cyrillic_DE, U45F, U40F ] };
- key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, U452, U402 ] };
- key <AB02> { [ Cyrillic_che, Cyrillic_CHE, U45B, U40B ] };
-};
-
-// Mari language layout
-// based on Russian standard keyboard
-// http://www.marlamuter.ru/
-partial alphanumeric_keys
-xkb_symbols "chm" {
- include "ru(common)"
-
- name[Group1]= "Russia - Mari";
-
- key.type[group1]="FOUR_LEVEL_ALPHABETIC";
- key <AC04> { [ Cyrillic_a, Cyrillic_A, U04D3, U04D2 ] };
- key <AD03> { [ Cyrillic_u, Cyrillic_U, U04F1, U04F0 ] };
- key <AC02> { [ Cyrillic_ui, Cyrillic_UI, U04F9, U04F8 ] };
- key <AD06> { [ Cyrillic_n, Cyrillic_N, U04A5, U04A4 ] };
- key <AC11> { [ Cyrillic_e, Cyrillic_E, U04E9, U04E8 ] };
- key <AC10> { [ Cyrillic_zh, Cyrillic_ZH, U04EB, U04EA ] };
- key <AC01> { [ Cyrillic_f, Cyrillic_F, UF537, UF536 ] };
-
- include "level3(ralt_switch)"
-};
+// based on
+// russian standard keyboard
+// AEN <aen@logic.ru>
+// 2001/12/23 by Leon Kanter <leon@blackcatlinux.com>
+// 2005/12/09 Valery Inozemtsev <shrek@altlinux.ru>
+
+// Windows layout
+partial default alphanumeric_keys
+xkb_symbols "winkeys" {
+ include "ru(common)"
+
+ name[Group1]= "Russia";
+
+ key <AE03> { [ 3, numerosign ] };
+ key <AE04> { [ 4, semicolon ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, colon ] };
+ key <AE07> { [ 7, question ] };
+ key <AE08> { [ 8, asterisk ] };
+
+ key <AB10> { [ period, comma ] };
+ key <BKSL> { [ backslash, slash ] };
+};
+
+partial hidden alphanumeric_keys
+xkb_symbols "common" {
+
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, quotedbl ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, asterisk ] };
+ key <AE05> { [ 5, colon ] };
+ key <AE06> { [ 6, comma ] };
+ key <AE07> { [ 7, period ] };
+ key <AE08> { [ 8, semicolon ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+ key <BKSL> { [ backslash, bar ] };
+ key <AB10> { [ slash, question ] };
+ key <LSGT> { [ slash, bar ] };
+
+ key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] };
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
+ key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <AC04> { [ Cyrillic_a, Cyrillic_A ] };
+ key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O ] };
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AC11> { [ Cyrillic_e, Cyrillic_E ] };
+ key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
+
+ key.type[group1]="TWO_LEVEL";
+
+ include "kpdl(comma)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "legacy" {
+ include "ru(common)"
+
+ name[Group1]= "Russia - Legacy";
+};
+
+partial alphanumeric_keys
+xkb_symbols "olpc" {
+
+ include "ru(common)"
+
+ key <TLDE> { [ 0x01000451, 0x01000401, grave ] }; // Ñ‘, Ð
+ key <AE03> { [ 3, numbersign, 0x01002116 ] }; // â„–
+ key <AE04> { [ 4, dollar, semicolon ] };
+ key <AE06> { [ 6, asciicircum, colon ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE09> { [ 9, parenleft, acute ] };
+ key <AC12> { [ backslash, bar, slash ] };
+
+ include "group(olpc)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "typewriter" {
+ include "ru(common)"
+ name[Group1]= "Russia - Typewriter";
+ key <TLDE> { [ bar, plus ] };
+ key <AE01> { [ numerosign, 1 ] };
+ key <AE02> { [ minus, 2 ] };
+ key <AE03> { [ slash, 3 ] };
+ key <AE04> { [ quotedbl, 4 ] };
+ key <AE05> { [ colon, 5 ] };
+ key <AE06> { [ comma, 6 ] };
+ key <AE07> { [ period, 7 ] };
+ key <AE08> { [ underscore, 8 ] };
+ key <AE09> { [ question, 9 ] };
+ key <AE10> { [ percent, 0 ] };
+ key <AE11> { [ exclam, equal ] };
+ key <AE12> { [ semicolon, backslash ] };
+
+ key <BKSL> { [ parenright, parenleft ] };
+
+ key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
+ key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "typewriter-legacy" {
+ include "ru(common)"
+ name[Group1]= "Russia - Typewriter, legacy";
+ key <TLDE> { [ apostrophe, quotedbl ] };
+ key <AE01> { [ exclam, 1 ] };
+ key <AE02> { [ numerosign, 2 ] };
+ key <AE03> { [ slash, 3 ] };
+ key <AE04> { [ semicolon, 4 ] };
+ key <AE05> { [ colon, 5 ] };
+ key <AE06> { [ comma, 6 ] };
+ key <AE07> { [ period, 7 ] };
+ key <AE08> { [ underscore, 8 ] };
+ key <AE09> { [ question, 9 ] };
+ key <AE10> { [ percent, 0 ] };
+ key <BKSL> { [ parenleft, parenright ] };
+
+ key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
+ key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "phonetic" {
+
+ name[Group1]= "Russia - Phonetic";
+
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, Cyrillic_io ] };
+ key <AE04> { [ 4, Cyrillic_IO ] };
+ key <AE05> { [ 5, Cyrillic_hardsign ] };
+ key <AE06> { [ 6, Cyrillic_HARDSIGN ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
+ key <AB08> { [ comma, less ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ apostrophe, quotedbl ] };
+ key <LSGT> { [ bar, brokenbar ] };
+
+ key <TLDE> { [ Cyrillic_yu, Cyrillic_YU ] };
+ key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
+ key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <LatX> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
+ key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <LatV> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <LatH> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <LatY> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
+ key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <LatI> { [ Cyrillic_i, Cyrillic_I ] };
+ key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
+ key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
+
+ key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AE12> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <BKSL> { [ Cyrillic_e, Cyrillic_E ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "phonetic_winkeys" {
+
+ include "ru(phonetic)"
+ name[Group1]= "Russia - Phonetic Winkeys";
+
+ key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <LatH> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AE12> { [ Cyrillic_softsign, Cyrillic_softsign ] };
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "tt" {
+ include "ru(winkeys)"
+ name[Group1]= "Russia - Tatar";
+
+ key.type[group1]="FOUR_LEVEL";
+
+ key <TLDE> { [ 0x010004bb, 0x010004ba,
+ Cyrillic_io, Cyrillic_IO ] };
+ key <AD02> { [ 0x010004e9, 0x010004e8,
+ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AD09> { [ 0x010004d9, 0x010004d8,
+ Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <AD12> { [ 0x010004af, 0x010004ae,
+ Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
+ key <AC10> { [ 0x010004a3, 0x010004a2,
+ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AB07> { [ 0x01000497, 0x01000496,
+ Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "os_legacy" {
+ include "ru(common)"
+
+ name[Group1]= "Russia - Ossetian, legacy";
+
+ key <TLDE> { [ Cyrillic_e, Cyrillic_E ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] };
+ key <AC11> { [ 0x010004D5, 0x010004D4 ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "os_winkeys" {
+ include "ru(winkeys)"
+
+ name[Group1]= "Russia - Ossetian, Winkeys";
+
+ key <TLDE> { [ Cyrillic_e, Cyrillic_E ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] };
+ key <AC11> { [ 0x010004D5, 0x010004D4 ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "cv" {
+ include "ru(winkeys)"
+
+ name[Group1]= "Russia - Chuvash";
+
+ key.type[group1]="FOUR_LEVEL";
+
+ key <AD03> { [ Cyrillic_u, Cyrillic_U,
+ 0x010004f3, 0x010004f2 ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE,
+ 0x01000115, 0x01000114 ] };
+ key <AC04> { [ Cyrillic_a, Cyrillic_A,
+ abreve, Abreve ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES,
+ ccedilla, Ccedilla ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "udm" {
+ include "ru(winkeys)"
+
+ name[Group1]= "Russia - Udmurt";
+
+ key.type[group1]="FOUR_LEVEL";
+
+ key <AE01> { [ question, exclam, 1, 1 ] };
+ key <AE02> { [ parenleft, quotedbl, 2, 2 ] };
+ key <AE03> { [ parenright, numerosign, 3, 3 ] };
+ key <AE04> { [ colon, semicolon, 4, 4 ] };
+ key <AE05> { [ asterisk, percent, 5, 5 ] };
+ key <AE06> { [ 0x010004dd, 0x010004dc, 6, 6 ] };
+ key <AE07> { [ 0x010004e7, 0x010004e6, 7, 7 ] };
+ key <AE08> { [ 0x010004f5, 0x010004f4, 8, 8 ] };
+ key <AE09> { [ 0x010004e5, 0x010004e4, 9, 9 ] };
+ key <AE10> { [ 0x010004df, 0x010004de, 0, 0 ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "cv_latin" {
+ include "us(alt-intl)"
+
+ name[Group1]= "Russia - Chuvash Latin";
+
+ key.type[group1]="FOUR_LEVEL";
+
+ key <AD01> { [ q, Q, 0x01000161, 0x01000160 ] };
+ key <AD02> { [ w, W, udiaeresis, Udiaeresis ] };
+ key <AD03> { [ e, E, 0x01000115, 0x01000114 ] };
+ key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
+ key <AD08> { [ i, I, 0x0100012d, 0x0100012c ] };
+ key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
+ key <AC01> { [ a, A, abreve, Abreve ] };
+ key <AC02> { [ s, S, scedilla, Scedilla ] };
+ key <AC05> { [ g, G, gbreve, Gbreve ] };
+ key <AC07> { [ j, J, 0x01000131, 0x01000130 ] };
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+// Komi language layout
+// based on
+// russian standard keyboard
+// Vlad Shakhov <lumpen.intellectual@gmail.com>
+// Last Changes 2007/10/23 by Vlad Shakhov <lumpen.intellectual@gmail.com>
+
+partial alphanumeric_keys
+xkb_symbols "kom" {
+
+ include "ru(winkeys)"
+
+ name[Group1]= "Russia - Komi";
+
+ key.type[group1]="FOUR_LEVEL_ALPHABETIC";
+
+// cyrilllic o with diaeresis
+ key <AC07> { [ Cyrillic_o, Cyrillic_O,
+ U04E7, U04E6 ] };
+
+// hard I as additional key for soft Cyrillic_I
+ key <AB05> { [ Cyrillic_i, Cyrillic_I,
+ Ukrainian_i, Ukrainian_I ] };
+
+ include "level3(ralt_switch)"
+};
+
+// Yakut language layout
+// 2008/04/23 Yakov Aleksandrov <bertjickty@yandex.ru>
+// 2008/04/23 Anatoliy Zhozhikov <jav@sitc.ru>
+// 2008/04/23 Aleksandr Varlamov
+partial alphanumeric_keys
+xkb_symbols "sah" {
+
+ include "ru(winkeys)"
+
+ name[Group1]= "Russia - Yakut";
+
+ key.type[group1]="FOUR_LEVEL_ALPHABETIC";
+
+ key <TLDE> { [ Cyrillic_io, Cyrillic_IO,
+ U04EB, U04EA ] };
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI,
+ U048B, U048A ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U,
+ Cyrillic_u_straight, Cyrillic_U_straight ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA,
+ U04C4, U04C3 ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN,
+ U04A5, U04A4 ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE,
+ U0495, U0494 ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE,
+ U04E1, U04E0 ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA,
+ Cyrillic_shha, Cyrillic_SHHA ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O,
+ Cyrillic_o_bar, Cyrillic_O_bar ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE,
+ U0461, U0460 ] };
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE,
+ Cyrillic_u_macron, Cyrillic_U_macron ] };
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM,
+ U04C8, U04C7 ] };
+ key <AB05> { [ Cyrillic_i, Cyrillic_I,
+ Cyrillic_i_macron, Cyrillic_I_macron ] };
+
+ include "level3(ralt_switch)"
+};
+
+
+//Kalmyk language layout
+//based on the Kalmyk language layout: http://soft.oyrat.org/
+//Nikolay Korneev <halmg@oyrat.org>
+//Toli Miron <mirontoli@gmail.com>
+
+partial alphanumeric_keys
+xkb_symbols "xal" {
+ include "ru(winkeys)"
+
+ name[Group1]= "Russia - Kalmyk";
+
+ key.type[group1]="FOUR_LEVEL";
+
+ key <AE01> { [ question, exclam, 1 ] };
+ key <AE02> { [ numerosign, quotedbl, 2 ] };
+ key <AE03> { [ Cyrillic_u_straight, Cyrillic_U_straight, 3 ] };
+ key <AE04> { [ Cyrillic_schwa, Cyrillic_SCHWA, 4 ] };
+ key <AE05> { [ asterisk, percent, 5 ] };
+ key <AE06> { [ Cyrillic_en_descender, Cyrillic_EN_descender, 6 ] };
+ key <AE07> { [ Cyrillic_o_bar, Cyrillic_O_bar, 7 ] };
+ key <AE08> { [ Cyrillic_shha, Cyrillic_SHHA, 8 ] };
+ key <AE09> { [ Cyrillic_zhe_descender, Cyrillic_ZHE_descender, 9 ] };
+ key <AE10> { [ semicolon, colon, 0 ] };
+
+ key <TLDE> { [ parenleft, parenright, Cyrillic_io, Cyrillic_IO ] };
+
+ key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, dollar ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U, EuroSign ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE, trademark ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA, bracketleft ] };
+ key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, bracketright ] };
+ key <AC11> { [ Cyrillic_e, Cyrillic_E, apostrophe ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE, less ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU, greater ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "dos" {
+
+ include "ru(common)"
+
+ name[Group1]= "Russia - DOS";
+
+ key <TLDE> { [ parenright, parenleft ] };
+ key <AE04> { [ 4, currency ] };
+ key <AE09> { [ 9, question ] };
+ key <AE10> { [ 0, percent ] };
+
+ key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "bak" {
+ include "ru(winkeys)"
+
+ name[Group1]= "Russia - Bashkirian";
+ key.type[group1]="FOUR_LEVEL";
+
+ key <TLDE> { [ 0x010004d9, 0x010004d8, Cyrillic_io, Cyrillic_IO ] };
+ key <AE01> { [ exclam, quotedbl, 1, 1 ] };
+ key <AE02> { [ 0x010004e9, 0x010004e8, 2, 2 ] };
+ key <AE03> { [ 0x010004a1, 0x010004a0, 3, 3 ] };
+ key <AE04> { [ 0x01000493, 0x01000492, 4, 4 ] };
+ key <AE05> { [ 0x010004ab, 0x010004aa, 5, 5 ] };
+ key <AE06> { [ colon, semicolon, 6, 6 ] };
+ key <AE07> { [ 0x01000499, 0x01000498, 7, 7 ] };
+ key <AE08> { [ 0x010004bb, 0x010004ba, 8, 8 ] };
+ key <AE09> { [ question, parenleft, 9, 9 ] };
+ key <AE10> { [ numerosign, parenright, 0, 0 ] };
+ key <AE11> { [ minus, percent, minus, underscore ]};
+ key <AE12> { [ 0x010004af, 0x010004ae, equal, plus ]};
+ key <BKSL> { [ 0x010004a3, 0x010004a2, backslash, slash ]};
+
+ include "level3(ralt_switch)"
+};
+
+// Serbian charecters added as third level symbols to Russian keyboard layout.
+
+partial alphanumeric_keys
+xkb_symbols "srp" {
+ include "ru(common)"
+ include "level3(ralt_switch)"
+
+ name[Group1]= "Russia - Serbian";
+
+ key <AE03> { [ 3, numerosign ] };
+ key <AE04> { [ 4, semicolon ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, colon ] };
+ key <AE07> { [ 7, question ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AB10> { [ period, comma ] };
+ key <BKSL> { [ backslash, slash ] };
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, U458, U408 ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN, U45A, U40A ] };
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL, U459, U409 ] };
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE, U45F, U40F ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, U452, U402 ] };
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE, U45B, U40B ] };
+};
+
+// Mari language layout
+// based on Russian standard keyboard
+// http://www.marlamuter.ru/
+partial alphanumeric_keys
+xkb_symbols "chm" {
+ include "ru(common)"
+
+ name[Group1]= "Russia - Mari";
+
+ key.type[group1]="FOUR_LEVEL_ALPHABETIC";
+ key <AC04> { [ Cyrillic_a, Cyrillic_A, U04D3, U04D2 ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U, U04F1, U04F0 ] };
+ key <AC02> { [ Cyrillic_ui, Cyrillic_UI, U04F9, U04F8 ] };
+ key <AD06> { [ Cyrillic_n, Cyrillic_N, U04A5, U04A4 ] };
+ key <AC11> { [ Cyrillic_e, Cyrillic_E, U04E9, U04E8 ] };
+ key <AC10> { [ Cyrillic_zh, Cyrillic_ZH, U04EB, U04EA ] };
+ key <AC01> { [ Cyrillic_f, Cyrillic_F, UF537, UF536 ] };
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/rupeesign b/xorg-server/xkeyboard-config/symbols/rupeesign
index 9851c6ee7..605060af7 100644
--- a/xorg-server/xkeyboard-config/symbols/rupeesign
+++ b/xorg-server/xkeyboard-config/symbols/rupeesign
@@ -1,7 +1,5 @@
-
// keyboards having the RupeeSign on the 4 key
partial
xkb_symbols "4" {
key <AE04> { [ NoSymbol, NoSymbol, U20B9 ] };
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/se b/xorg-server/xkeyboard-config/symbols/se
index 6e24202a7..7ba3b36db 100644
--- a/xorg-server/xkeyboard-config/symbols/se
+++ b/xorg-server/xkeyboard-config/symbols/se
@@ -1,257 +1,253 @@
-
-// based on a keyboard map from an 'xkb/symbols/se' file
-//
-// $XKeyboardConfig$
-// $XFree86: xc/programs/xkbcomp/symbols/se,v 1.5 2003/01/26 02:01:48 dawes Exp $
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
- include "latin(type2)"
- include "se(se)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "se" {
-
- name[Group1]="Sweden";
-
- key <AE05> { [ 5, percent, EuroSign, cent ] };
- key <AE11> { [ plus, question, backslash, questiondown ] };
- key <AE12> { [dead_acute, dead_grave, plusminus, notsign ] };
-
-
- key <AC10> { [odiaeresis, Odiaeresis, oslash, Ooblique ] };
- key <AC11> { [adiaeresis, Adiaeresis, ae, AE ] };
- key <TLDE> { [ section, onehalf, paragraph, threequarters] };
-
- key <BKSL> { [apostrophe, asterisk, acute, multiply ] };
-
- key <SPCE> { [ space, space, space, nobreakspace ] };
-
- key <LSGT> { [ less, greater, bar, brokenbar ] };
- include "kpdl(comma)"
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
-
- // Modifies the basic Swedish layout to eliminate all dead keys
-
- include "latin(type2)"
- include "latin(type2_nodeadkeys)"
- include "se(se)"
-
- name[Group1]="Sweden - Eliminate dead keys";
-
- key <AE12> { [ acute, grave, plusminus, notsign ] };
-
-};
-
-// Swedish Dvorak
-partial alphanumeric_keys
-xkb_symbols "dvorak" {
-
- name[Group1]="Sweden - Dvorak";
-
- include "se(basic)"
-
- key <AD01> { [ aring, Aring, backslash ] };
- key <AD02> { [ adiaeresis, Adiaeresis, braceleft, bracketleft ] };
- key <AD03> { [ odiaeresis, Odiaeresis, braceright, bracketright ] };
- key <AD04> { [ p, P, thorn, THORN ] };
- key <AD05> { [ y, Y, leftarrow, yen ] };
- key <AD06> { [ f, F, dstroke, ordfeminine ] };
- key <AD07> { [ g, G, eng, ENG ] };
- key <AD08> { [ c, C, copyright, copyright ] };
- key <AD09> { [ r, R, registered, registered ] };
- key <AD10> { [ l, L, lstroke, Lstroke ] };
- key <AD11> { [ comma, semicolon, dead_cedilla, dead_ogonek ] };
- key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde, asciicircum ] };
-
- key <AC01> { [ a, A, ae, AE ] };
- key <AC02> { [ o, O, oe, OE ] };
- key <AC03> { [ e, E, EuroSign, cent ] };
- key <AC04> { [ u, U, downarrow, uparrow ] };
- key <AC05> { [ i, I, rightarrow, idotless ] };
- key <AC06> { [ d, D, eth, ETH ] };
- key <AC07> { [ h, H, hstroke, Hstroke ] };
- key <AC08> { [ t, T, tslash, Tslash ] };
- key <AC09> { [ n, N ] };
- key <AC10> { [ s, S, ssharp, section ] };
- key <AC11> { [ minus, underscore, dead_belowdot, dead_abovedot ] };
-
- key <AB01> { [ period, colon, periodcentered, dead_abovedot ] };
- key <AB02> { [ q, Q, at, Greek_OMEGA ] };
- key <AB03> { [ j, J ] };
- key <AB04> { [ k, K, kra, ampersand ] };
- key <AB05> { [ x, X, guillemotright, greater ] };
- key <AB06> { [ b, B, rightdoublequotemark, apostrophe ] };
- key <AB07> { [ m, M, mu, masculine ] };
- key <AB08> { [ w, W, lstroke, Lstroke ] };
- key <AB09> { [ v, V, leftdoublequotemark, grave ] };
- key <AB10> { [ z, Z, guillemotleft, less ] };
-};
-
-// Ivan Popov, 2005-07-17
-// phonetic layout for Russian cyrillic letters
-// on Swedish (latin type2) keyboards
-
-// level3 modifier is a shortcut to the "se" meaning of the keys where
-// we place cyrillic letters, handy for accessing the corresponding
-// punctuation marks.
-// It is important to have access to punctuation marks, and the rest of
-// alphabetical keys are added for being consequent so that the users
-// can expect the level3 modifier to give what the key label shows.
-
-partial alphanumeric_keys
-xkb_symbols "rus" {
- include "se(basic)"
-
- name[Group1]="Sweden - Russian phonetic";
- key.type[group1]="ALPHABETIC";
-
- key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] };
- key <AE12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
-
- key <AD01> { [ Cyrillic_ya, Cyrillic_YA ] };
- key <AD02> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <AD03> { [ Cyrillic_ie, Cyrillic_IE ] };
- key <AD04> { [ Cyrillic_er, Cyrillic_ER ] };
- key <AD05> { [ Cyrillic_te, Cyrillic_TE ] };
- key <AD06> { [ Cyrillic_yeru, Cyrillic_YERU ] };
- key <AD07> { [ Cyrillic_u, Cyrillic_U ] };
- key <AD08> { [ Cyrillic_i, Cyrillic_I ] };
- key <AD09> { [ Cyrillic_o, Cyrillic_O ] };
- key <AD10> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <AD11> { [ Cyrillic_e, Cyrillic_E ] };
-
- key <AC01> { [ Cyrillic_a, Cyrillic_A ] };
- key <AC02> { [ Cyrillic_es, Cyrillic_ES ] };
- key <AC03> { [ Cyrillic_de, Cyrillic_DE ] };
- key <AC04> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <AC05> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <AC06> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <AC07> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <AC08> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <AC09> { [ Cyrillic_el, Cyrillic_EL ] };
- key <AC10> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AC11> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <BKSL> { [ Cyrillic_yu, Cyrillic_YU ] };
-
- key <LSGT> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AB01> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <AB02> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
- key <AB03> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <AB04> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <AB05> { [ Cyrillic_be, Cyrillic_BE ] };
- key <AB06> { [ Cyrillic_en, Cyrillic_EN ] };
- key <AB07> { [ Cyrillic_em, Cyrillic_EM ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "rus_nodeadkeys" {
-
- include "se(nodeadkeys)"
- include "se(rus)"
-
- name[Group1]="Sweden - Russian phonetic, eliminate dead keys";
-
- key <AE12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
-};
-
-xkb_symbols "smi" {
-
- // Describes the differences between a Norwegian Northern Sami
- // (keyboard with dead key support) and a Swedish/Finnish Sami
- // keyboard according to the specs at:
- // http://www.hum.uit.no/a/trond/se-lat9-sefi-keys.html
-
- include "fi(smi)"
-
- name[Group1]= "Sweden - Northern Saami";
-};
-
-// Copied from macintosh_vndr/se
-partial alphanumeric_keys
-xkb_symbols "mac" {
-
- // Describes the differences between a very simple en_US
- // keyboard and a very simple Swedish(Sweden) keybaord
-
- include "latin"
- name[Group1]= "Sweden - Macintosh";
-
- key <TLDE> { [ section, degree ] };
- key <AE01> { [ 1, exclam, copyright, exclamdown ] };
- key <AE02> { [ 2, quotedbl, at, oneeighth ] };
- key <AE03> { [ 3, numbersign, sterling, yen ] };
- key <AE04> { [ 4, currency, dollar, cent ] };
- key <AE06> { [ 6, ampersand ] };
- key <AE07> { [ 7, slash, bar, backslash ] };
- key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
- key <AE09> { [ 9, parenright, bracketright, braceright ] };
- key <AB08> { [ comma, semicolon ] };
- key <AE10> { [ 0, equal ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
- key <AC10> { [ odiaeresis, Odiaeresis, oslash, Ooblique ] };
- key <AE11> { [ plus, question ] };
- key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] };
- key <AD11> { [ aring, Aring ] };
- key <AE12> { [ acute, grave ] };
- key <AD12> { [ diaeresis, asciicircum, asciitilde ] };
- key <BKSL> { [ apostrophe, asterisk, at ] };
-
- include "kpdl(comma)"
- include "level3(ralt_switch)"
-};
-
-// Svdvorak
-// This version of Dvorak follows danish and norwegian style in hope for a
-// Scandinavian standard.
-partial alphanumeric_keys
-xkb_symbols "svdvorak" {
-
- name[Group1]="Sweden - Svdvorak";
-
- include "se(basic)"
-
- key <AD01> { [ aring, Aring, braceleft ] };
- key <AD02> { [ comma, semicolon, bracketleft ] };
- key <AD03> { [ period, colon, bracketright ] };
- key <AD04> { [ p, P, braceright ] };
- key <AD05> { [ y, Y ] };
- key <AD06> { [ f, F ] };
- key <AD07> { [ g, G ] };
- key <AD08> { [ c, C ] };
- key <AD09> { [ r, R ] };
- key <AD10> { [ l, L ] };
- key <AD11> { [ apostrophe, asterisk ] };
-
- key <AC01> { [ a, A ] };
- key <AC02> { [ o, O, parenleft ] };
- key <AC03> { [ e, E, parenright ] };
- key <AC04> { [ u, U ] };
- key <AC05> { [ i, I ] };
- key <AC06> { [ d, D ] };
- key <AC07> { [ h, H ] };
- key <AC08> { [ t, T ] };
- key <AC09> { [ n, N ] };
- key <AC10> { [ s, S, ssharp ] };
- key <AC11> { [ minus, underscore ] };
- key <BKSL> { [ less, greater, bar ] };
-
- key <LSGT> { [ odiaeresis, Odiaeresis ] };
- key <AB01> { [ adiaeresis, Adiaeresis ] };
- key <AB02> { [ q, Q ] };
- key <AB03> { [ j, J ] };
- key <AB04> { [ k, K ] };
- key <AB05> { [ x, X ] };
- key <AB06> { [ b, B ] };
- key <AB07> { [ m, M ] };
- key <AB08> { [ w, W ] };
- key <AB09> { [ v, V ] };
- key <AB10> { [ z, Z ] };
-};
+// based on a keyboard map from an 'xkb/symbols/se' file
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ include "latin(type2)"
+ include "se(se)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "se" {
+
+ name[Group1]="Sweden";
+
+ key <AE05> { [ 5, percent, EuroSign, cent ] };
+ key <AE11> { [ plus, question, backslash, questiondown ] };
+ key <AE12> { [dead_acute, dead_grave, plusminus, notsign ] };
+
+
+ key <AC10> { [odiaeresis, Odiaeresis, oslash, Ooblique ] };
+ key <AC11> { [adiaeresis, Adiaeresis, ae, AE ] };
+ key <TLDE> { [ section, onehalf, paragraph, threequarters] };
+
+ key <BKSL> { [apostrophe, asterisk, acute, multiply ] };
+
+ key <SPCE> { [ space, space, space, nobreakspace ] };
+
+ key <LSGT> { [ less, greater, bar, brokenbar ] };
+ include "kpdl(comma)"
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+
+ // Modifies the basic Swedish layout to eliminate all dead keys
+
+ include "latin(type2)"
+ include "latin(type2_nodeadkeys)"
+ include "se(se)"
+
+ name[Group1]="Sweden - Eliminate dead keys";
+
+ key <AE12> { [ acute, grave, plusminus, notsign ] };
+
+};
+
+// Swedish Dvorak
+partial alphanumeric_keys
+xkb_symbols "dvorak" {
+
+ name[Group1]="Sweden - Dvorak";
+
+ include "se(basic)"
+
+ key <AD01> { [ aring, Aring, backslash ] };
+ key <AD02> { [ adiaeresis, Adiaeresis, braceleft, bracketleft ] };
+ key <AD03> { [ odiaeresis, Odiaeresis, braceright, bracketright ] };
+ key <AD04> { [ p, P, thorn, THORN ] };
+ key <AD05> { [ y, Y, leftarrow, yen ] };
+ key <AD06> { [ f, F, dstroke, ordfeminine ] };
+ key <AD07> { [ g, G, eng, ENG ] };
+ key <AD08> { [ c, C, copyright, copyright ] };
+ key <AD09> { [ r, R, registered, registered ] };
+ key <AD10> { [ l, L, lstroke, Lstroke ] };
+ key <AD11> { [ comma, semicolon, dead_cedilla, dead_ogonek ] };
+ key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde, asciicircum ] };
+
+ key <AC01> { [ a, A, ae, AE ] };
+ key <AC02> { [ o, O, oe, OE ] };
+ key <AC03> { [ e, E, EuroSign, cent ] };
+ key <AC04> { [ u, U, downarrow, uparrow ] };
+ key <AC05> { [ i, I, rightarrow, idotless ] };
+ key <AC06> { [ d, D, eth, ETH ] };
+ key <AC07> { [ h, H, hstroke, Hstroke ] };
+ key <AC08> { [ t, T, tslash, Tslash ] };
+ key <AC09> { [ n, N ] };
+ key <AC10> { [ s, S, ssharp, section ] };
+ key <AC11> { [ minus, underscore, dead_belowdot, dead_abovedot ] };
+
+ key <AB01> { [ period, colon, periodcentered, dead_abovedot ] };
+ key <AB02> { [ q, Q, at, Greek_OMEGA ] };
+ key <AB03> { [ j, J ] };
+ key <AB04> { [ k, K, kra, ampersand ] };
+ key <AB05> { [ x, X, guillemotright, greater ] };
+ key <AB06> { [ b, B, rightdoublequotemark, apostrophe ] };
+ key <AB07> { [ m, M, mu, masculine ] };
+ key <AB08> { [ w, W, lstroke, Lstroke ] };
+ key <AB09> { [ v, V, leftdoublequotemark, grave ] };
+ key <AB10> { [ z, Z, guillemotleft, less ] };
+};
+
+// Ivan Popov, 2005-07-17
+// phonetic layout for Russian cyrillic letters
+// on Swedish (latin type2) keyboards
+
+// level3 modifier is a shortcut to the "se" meaning of the keys where
+// we place cyrillic letters, handy for accessing the corresponding
+// punctuation marks.
+// It is important to have access to punctuation marks, and the rest of
+// alphabetical keys are added for being consequent so that the users
+// can expect the level3 modifier to give what the key label shows.
+
+partial alphanumeric_keys
+xkb_symbols "rus" {
+ include "se(basic)"
+
+ name[Group1]="Sweden - Russian phonetic";
+ key.type[group1]="ALPHABETIC";
+
+ key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] };
+ key <AE12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
+
+ key <AD01> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <AD02> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <AD03> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <AD04> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <AD05> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <AD06> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <AD07> { [ Cyrillic_u, Cyrillic_U ] };
+ key <AD08> { [ Cyrillic_i, Cyrillic_I ] };
+ key <AD09> { [ Cyrillic_o, Cyrillic_O ] };
+ key <AD10> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <AD11> { [ Cyrillic_e, Cyrillic_E ] };
+
+ key <AC01> { [ Cyrillic_a, Cyrillic_A ] };
+ key <AC02> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <AC03> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <AC04> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <AC05> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <AC06> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <AC07> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <AC08> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <AC09> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <AC10> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AC11> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <BKSL> { [ Cyrillic_yu, Cyrillic_YU ] };
+
+ key <LSGT> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AB01> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <AB02> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <AB03> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AB04> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AB05> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <AB06> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <AB07> { [ Cyrillic_em, Cyrillic_EM ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "rus_nodeadkeys" {
+
+ include "se(nodeadkeys)"
+ include "se(rus)"
+
+ name[Group1]="Sweden - Russian phonetic, eliminate dead keys";
+
+ key <AE12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
+};
+
+xkb_symbols "smi" {
+
+ // Describes the differences between a Norwegian Northern Sami
+ // (keyboard with dead key support) and a Swedish/Finnish Sami
+ // keyboard according to the specs at:
+ // http://www.hum.uit.no/a/trond/se-lat9-sefi-keys.html
+
+ include "fi(smi)"
+
+ name[Group1]= "Sweden - Northern Saami";
+};
+
+// Copied from macintosh_vndr/se
+partial alphanumeric_keys
+xkb_symbols "mac" {
+
+ // Describes the differences between a very simple en_US
+ // keyboard and a very simple Swedish(Sweden) keybaord
+
+ include "latin"
+ name[Group1]= "Sweden - Macintosh";
+
+ key <TLDE> { [ section, degree ] };
+ key <AE01> { [ 1, exclam, copyright, exclamdown ] };
+ key <AE02> { [ 2, quotedbl, at, oneeighth ] };
+ key <AE03> { [ 3, numbersign, sterling, yen ] };
+ key <AE04> { [ 4, currency, dollar, cent ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, slash, bar, backslash ] };
+ key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
+ key <AE09> { [ 9, parenright, bracketright, braceright ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AE10> { [ 0, equal ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+ key <AC10> { [ odiaeresis, Odiaeresis, oslash, Ooblique ] };
+ key <AE11> { [ plus, question ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] };
+ key <AD11> { [ aring, Aring ] };
+ key <AE12> { [ acute, grave ] };
+ key <AD12> { [ diaeresis, asciicircum, asciitilde ] };
+ key <BKSL> { [ apostrophe, asterisk, at ] };
+
+ include "kpdl(comma)"
+ include "level3(ralt_switch)"
+};
+
+// Svdvorak
+// This version of Dvorak follows danish and norwegian style in hope for a
+// Scandinavian standard.
+partial alphanumeric_keys
+xkb_symbols "svdvorak" {
+
+ name[Group1]="Sweden - Svdvorak";
+
+ include "se(basic)"
+
+ key <AD01> { [ aring, Aring, braceleft ] };
+ key <AD02> { [ comma, semicolon, bracketleft ] };
+ key <AD03> { [ period, colon, bracketright ] };
+ key <AD04> { [ p, P, braceright ] };
+ key <AD05> { [ y, Y ] };
+ key <AD06> { [ f, F ] };
+ key <AD07> { [ g, G ] };
+ key <AD08> { [ c, C ] };
+ key <AD09> { [ r, R ] };
+ key <AD10> { [ l, L ] };
+ key <AD11> { [ apostrophe, asterisk ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ o, O, parenleft ] };
+ key <AC03> { [ e, E, parenright ] };
+ key <AC04> { [ u, U ] };
+ key <AC05> { [ i, I ] };
+ key <AC06> { [ d, D ] };
+ key <AC07> { [ h, H ] };
+ key <AC08> { [ t, T ] };
+ key <AC09> { [ n, N ] };
+ key <AC10> { [ s, S, ssharp ] };
+ key <AC11> { [ minus, underscore ] };
+ key <BKSL> { [ less, greater, bar ] };
+
+ key <LSGT> { [ odiaeresis, Odiaeresis ] };
+ key <AB01> { [ adiaeresis, Adiaeresis ] };
+ key <AB02> { [ q, Q ] };
+ key <AB03> { [ j, J ] };
+ key <AB04> { [ k, K ] };
+ key <AB05> { [ x, X ] };
+ key <AB06> { [ b, B ] };
+ key <AB07> { [ m, M ] };
+ key <AB08> { [ w, W ] };
+ key <AB09> { [ v, V ] };
+ key <AB10> { [ z, Z ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sgi_vndr/jp b/xorg-server/xkeyboard-config/symbols/sgi_vndr/jp
index 31bb3b59a..00f9ede0f 100644
--- a/xorg-server/xkeyboard-config/symbols/sgi_vndr/jp
+++ b/xorg-server/xkeyboard-config/symbols/sgi_vndr/jp
@@ -1,46 +1,44 @@
-// $Xorg: jp,v 1.3 2000/08/17 19:54:45 cpqbld Exp $
-xkb_symbols "jp106" {
-
- name[group1]="Japan/ASCII";
-
- key <HZTG> { [ Zenkaku_Hankaku ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, quotedbl ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, ampersand ] };
- key <AE07> { [ 7, apostrophe ] };
- key <AE08> { [ 8, parenleft ] };
- key <AE09> { [ 9, parenright ] };
- key <AE10> { [ 0, asciitilde ] };
- key <AE11> { [ minus, equal ] };
- key <AE12> { [ asciicircum, overbar ] };
- key <AE13> { [ yen, bar ] };
-
- // keys <TAB> and <AD01> - <AD10> are identical to US/ASCII keyboard
- key <AD11> { [ at, grave ] };
- key <AD12> { [ bracketleft, braceleft ] };
-
- key <CAPS> { [ Eisu_Shift, Caps_Lock ] };
- // keys <AC01> - <AC09> are identical to US/ASCII keyboard
- key <AC10> { [ semicolon, plus ] };
- key <AC11> { [ colon, asterisk ] };
- key <AC12> { [ bracketright, braceright ] };
-
- // keys <LFSH> and <AB01> - <AB10> are identical to US/ASCII keyboard
- key <AB11> { [ backslash, underscore ] };
-
- key <NFER> { [ Muhenkan ] };
- key <XFER> { [ Kanji ] };
- key <HKTG> { [ Hiragana_Katakana ] };
-};
-
-xkb_symbols "alternate106" {
- key <AE10> { [ 0, overbar ] };
- key <AE12> { [ asciicircum, asciitilde] };
- key <AE13> { [ backslash, bar ] };
- key <AB11> { [ underbar, underscore ] };
- augment "sgi/jp(jp106)"
-};
-
+xkb_symbols "jp106" {
+
+ name[group1]="Japan/ASCII";
+
+ key <HZTG> { [ Zenkaku_Hankaku ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, quotedbl ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, apostrophe ] };
+ key <AE08> { [ 8, parenleft ] };
+ key <AE09> { [ 9, parenright ] };
+ key <AE10> { [ 0, asciitilde ] };
+ key <AE11> { [ minus, equal ] };
+ key <AE12> { [ asciicircum, overbar ] };
+ key <AE13> { [ yen, bar ] };
+
+ // keys <TAB> and <AD01> - <AD10> are identical to US/ASCII keyboard
+ key <AD11> { [ at, grave ] };
+ key <AD12> { [ bracketleft, braceleft ] };
+
+ key <CAPS> { [ Eisu_Shift, Caps_Lock ] };
+ // keys <AC01> - <AC09> are identical to US/ASCII keyboard
+ key <AC10> { [ semicolon, plus ] };
+ key <AC11> { [ colon, asterisk ] };
+ key <AC12> { [ bracketright, braceright ] };
+
+ // keys <LFSH> and <AB01> - <AB10> are identical to US/ASCII keyboard
+ key <AB11> { [ backslash, underscore ] };
+
+ key <NFER> { [ Muhenkan ] };
+ key <XFER> { [ Kanji ] };
+ key <HKTG> { [ Hiragana_Katakana ] };
+};
+
+xkb_symbols "alternate106" {
+ key <AE10> { [ 0, overbar ] };
+ key <AE12> { [ asciicircum, asciitilde] };
+ key <AE13> { [ backslash, bar ] };
+ key <AB11> { [ underbar, underscore ] };
+ augment "sgi/jp(jp106)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/shift b/xorg-server/xkeyboard-config/symbols/shift
index 78951c1ec..64dae8e43 100644
--- a/xorg-server/xkeyboard-config/symbols/shift
+++ b/xorg-server/xkeyboard-config/symbols/shift
@@ -1,86 +1,84 @@
-// $XKeyboardConfig$
-
-partial modifier_keys
-xkb_symbols "breaks_caps" {
- key <LFSH> {
- type = "ALPHABETIC",
- actions [Group1] = [
- SetMods(modifiers=Shift),
- SetMods(modifiers=Shift+Lock,clearLocks)
- ]
- };
- key <RTSH> {
- type = "ALPHABETIC",
- actions [Group1] = [
- SetMods(modifiers=Shift),
- SetMods(modifiers=Shift+Lock,clearLocks)
- ]
- };
-};
-
-// When pressed together with another Shift key, set/release Lock.
-partial modifier_keys
-xkb_symbols "lshift_both_capslock" {
- key <LFSH> {
- type[Group1]="TWO_LEVEL",
- symbols[Group1] = [ Shift_L, Caps_Lock ]
- };
-};
-// When pressed together with another Shift key, set or unset Lock.
-partial modifier_keys
-xkb_symbols "rshift_both_capslock" {
- key <RTSH> {
- type[Group1]="TWO_LEVEL",
- symbols[Group1] = [ Shift_R, Caps_Lock ]
- };
-};
-partial modifier_keys
-xkb_symbols "both_capslock" {
- include "shift(lshift_both_capslock)"
- include "shift(rshift_both_capslock)"
-};
-
-// Release Lock when pressed alone and set Lock when pressed with another Shift key.
-partial modifier_keys
-xkb_symbols "lshift_both_capslock_cancel" {
- key <LFSH> {
- type[Group1]="ALPHABETIC",
- symbols[Group1] = [ Shift_L, Caps_Lock ]
- };
-};
-// Release Lock when pressed alone and set Lock when pressed with another Shift key.
-partial modifier_keys
-xkb_symbols "rshift_both_capslock_cancel" {
- key <RTSH> {
- type[Group1]="ALPHABETIC",
- symbols[Group1] = [ Shift_R, Caps_Lock ]
- };
-};
-partial modifier_keys
-xkb_symbols "both_capslock_cancel" {
- include "shift(lshift_both_capslock_cancel)"
- include "shift(rshift_both_capslock_cancel)"
-};
-
-
-// When pressed together with another Shift key, lock/unlock Shift.
-partial modifier_keys
-xkb_symbols "lshift_both_shiftlock" {
- key <LFSH> {
- type[Group1]="TWO_LEVEL",
- symbols[Group1] = [ Shift_L, Shift_Lock ]
- };
-};
-// When pressed together with another Shift key, lock/unlock Shift.
-partial modifier_keys
-xkb_symbols "rshift_both_shiftlock" {
- key <RTSH> {
- type[Group1]="TWO_LEVEL",
- symbols[Group1] = [ Shift_R, Shift_Lock ]
- };
-};
-partial modifier_keys
-xkb_symbols "both_shiftlock" {
- include "shift(lshift_both_shiftlock)"
- include "shift(rshift_both_shiftlock)"
-};
+partial modifier_keys
+xkb_symbols "breaks_caps" {
+ key <LFSH> {
+ type = "ALPHABETIC",
+ actions [Group1] = [
+ SetMods(modifiers=Shift),
+ SetMods(modifiers=Shift+Lock,clearLocks)
+ ]
+ };
+ key <RTSH> {
+ type = "ALPHABETIC",
+ actions [Group1] = [
+ SetMods(modifiers=Shift),
+ SetMods(modifiers=Shift+Lock,clearLocks)
+ ]
+ };
+};
+
+// When pressed together with another Shift key, set/release Lock.
+partial modifier_keys
+xkb_symbols "lshift_both_capslock" {
+ key <LFSH> {
+ type[Group1]="TWO_LEVEL",
+ symbols[Group1] = [ Shift_L, Caps_Lock ]
+ };
+};
+// When pressed together with another Shift key, set or unset Lock.
+partial modifier_keys
+xkb_symbols "rshift_both_capslock" {
+ key <RTSH> {
+ type[Group1]="TWO_LEVEL",
+ symbols[Group1] = [ Shift_R, Caps_Lock ]
+ };
+};
+partial modifier_keys
+xkb_symbols "both_capslock" {
+ include "shift(lshift_both_capslock)"
+ include "shift(rshift_both_capslock)"
+};
+
+// Release Lock when pressed alone and set Lock when pressed with another Shift key.
+partial modifier_keys
+xkb_symbols "lshift_both_capslock_cancel" {
+ key <LFSH> {
+ type[Group1]="ALPHABETIC",
+ symbols[Group1] = [ Shift_L, Caps_Lock ]
+ };
+};
+// Release Lock when pressed alone and set Lock when pressed with another Shift key.
+partial modifier_keys
+xkb_symbols "rshift_both_capslock_cancel" {
+ key <RTSH> {
+ type[Group1]="ALPHABETIC",
+ symbols[Group1] = [ Shift_R, Caps_Lock ]
+ };
+};
+partial modifier_keys
+xkb_symbols "both_capslock_cancel" {
+ include "shift(lshift_both_capslock_cancel)"
+ include "shift(rshift_both_capslock_cancel)"
+};
+
+
+// When pressed together with another Shift key, lock/unlock Shift.
+partial modifier_keys
+xkb_symbols "lshift_both_shiftlock" {
+ key <LFSH> {
+ type[Group1]="TWO_LEVEL",
+ symbols[Group1] = [ Shift_L, Shift_Lock ]
+ };
+};
+// When pressed together with another Shift key, lock/unlock Shift.
+partial modifier_keys
+xkb_symbols "rshift_both_shiftlock" {
+ key <RTSH> {
+ type[Group1]="TWO_LEVEL",
+ symbols[Group1] = [ Shift_R, Shift_Lock ]
+ };
+};
+partial modifier_keys
+xkb_symbols "both_shiftlock" {
+ include "shift(lshift_both_shiftlock)"
+ include "shift(rshift_both_shiftlock)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/si b/xorg-server/xkeyboard-config/symbols/si
index ced6d2fe7..b3b9cbaf8 100644
--- a/xorg-server/xkeyboard-config/symbols/si
+++ b/xorg-server/xkeyboard-config/symbols/si
@@ -1,33 +1,30 @@
-// $XKeyboardConfig$
-//
-
-default partial alphanumeric_keys
-xkb_symbols "basic" {
-
- name[Group1]="Slovenia";
-
- include "rs(latin)"
-
- key <TLDE> { type[Group1]="TWO_LEVEL", [ cedilla, diaeresis ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "us" {
-
- name[Group1]= "Slovenia - US keyboard with Slovenian letters";
-
- include "rs(latinyz)"
-
- key <TLDE> { type[Group1]="TWO_LEVEL", [ cedilla, diaeresis ] };
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "alternatequotes" {
-
- name[Group1]= "Slovenia - Use guillemets for quotes";
-
- include "rs(latinalternatequotes)"
-
- key <TLDE> { type[Group1]="TWO_LEVEL", [ cedilla, diaeresis ] };
-};
+default partial alphanumeric_keys
+xkb_symbols "basic" {
+
+ name[Group1]="Slovenia";
+
+ include "rs(latin)"
+
+ key <TLDE> { type[Group1]="TWO_LEVEL", [ cedilla, diaeresis ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "us" {
+
+ name[Group1]= "Slovenia - US keyboard with Slovenian letters";
+
+ include "rs(latinyz)"
+
+ key <TLDE> { type[Group1]="TWO_LEVEL", [ cedilla, diaeresis ] };
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "alternatequotes" {
+
+ name[Group1]= "Slovenia - Use guillemets for quotes";
+
+ include "rs(latinalternatequotes)"
+
+ key <TLDE> { type[Group1]="TWO_LEVEL", [ cedilla, diaeresis ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sk b/xorg-server/xkeyboard-config/symbols/sk
index 62d0e7998..342dee6ca 100644
--- a/xorg-server/xkeyboard-config/symbols/sk
+++ b/xorg-server/xkeyboard-config/symbols/sk
@@ -1,108 +1,103 @@
-// $XKeyboardConfig$
-
-// $XFree86: xc/programs/xkbcomp/symbols/sk,v 1.2 2002/11/22 04:02:22 dawes
-// Exp $
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // This layout conforms to a new sk compromise standard designed
- // to satisfy most unix, windows and mac users.
- // 2001 by Kamil Toman <ktoman@email.cz>
-
- include "latin"
-
- name[Group1] = "Slovakia";
-
- key <TLDE> { [ semicolon, dead_abovering, grave, asciitilde ] };
- key <AE01> { [ plus, 1, exclam, dead_tilde ] };
- key <AE02> { [ lcaron, 2, at, dead_caron ] };
- key <AE03> { [ scaron, 3, numbersign, dead_circumflex ] };
- key <AE04> { [ ccaron, 4, dollar, dead_breve ] };
- key <AE05> { [ tcaron, 5, percent, dead_abovering ] };
- key <AE06> { [ zcaron, 6, asciicircum, dead_ogonek ] };
- key <AE07> { [ yacute, 7, ampersand, dead_grave ] };
- key <AE08> { [ aacute, 8, asterisk, dead_abovedot ] };
- key <AE09> { [ iacute, 9, braceleft, dead_acute ] };
- key <AE10> { [ eacute, 0, braceright, dead_doubleacute ] };
- key <AE11> { [ equal, percent, NoSymbol, dead_diaeresis ] };
- key <AE12> { [dead_acute, dead_caron, dead_macron, dead_cedilla ] };
-
- key <AD01> { [ q, Q, backslash, NoSymbol ] };
- key <AD02> { [ w, W, bar, Nosymbol ] };
- key <AD03> { [ e, E, EuroSign, NoSymbol ] };
- key <AD04> { [ r, R, NoSymbol, NoSymbol ] };
- key <AD05> { [ t, T, NoSymbol, NoSymbol ] };
- key <AD06> { [ z, Z, NoSymbol, NoSymbol ] };
- key <AD07> { [ u, U, NoSymbol, NoSymbol ] };
- key <AD08> { [ i, I, NoSymbol, NoSymbol ] };
- key <AD09> { [ o, O, NoSymbol, NoSymbol ] };
- key <AD10> { [ p, P, NoSymbol, NoSymbol ] };
-
- key <AD11> { [ uacute, slash, bracketleft, division ] };
- key <AD12> { [adiaeresis, parenleft, bracketright, multiply ] };
-
- key <AC01> { [ a, A, asciitilde, NoSymbol ] };
- key <AC02> { [ s, S, dstroke, NoSymbol ] };
- key <AC03> { [ d, D, Dstroke, NoSymbol ] };
- key <AC04> { [ f, F, bracketleft, NoSymbol ] };
- key <AC05> { [ g, G, bracketright, NoSymbol ] };
- key <AC06> { [ h, H, grave, NoSymbol ] };
- key <AC07> { [ j, J, apostrophe, NoSymbol ] };
- key <AC08> { [ k, K, lstroke, NoSymbol ] };
- key <AC09> { [ l, L, Lstroke, NoSymbol ] };
-
- key <AC10> { [ocircumflex, quotedbl, dollar, NoSymbol ] };
- key <AC11> { [ section, exclam, apostrophe, ssharp ] };
- key <AC12> { [ EuroSign, dead_diaeresis, NoSymbol, NoSymbol ] };
- key <BKSL> { [ ncaron, parenright, backslash, bar ] };
-
- key <LSGT> { [ backslash, bar, slash, NoSymbol ] };
- key <AB01> { [ y, Y, degree, NoSymbol ] };
- key <AB02> { [ x, X, numbersign, Nosymbol ] };
- key <AB03> { [ c, C, ampersand, NoSymbol ] };
- key <AB04> { [ v, V, at, NoSymbol ] };
- key <AB05> { [ b, B, braceleft, NoSymbol ] };
- key <AB06> { [ n, N, braceright, NoSymbol ] };
- key <AB07> { [ m, M, asciicircum, NoSymbol ] };
- key <AB08> { [ comma, question, less, NoSymbol ] };
- key <AB09> { [ period, colon, greater, NoSymbol ] };
- key <AB10> { [ minus, underscore, asterisk, NoSymbol ] };
-
- key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
-
- include "level3(ralt_switch)"
-};
-
-// Use <BKSL> instead of <LSGT> (useful for keyboard without <LSGT> key)
-xkb_symbols "bksl" {
- include "sk(basic)"
-
- name[Group1] = "Slovakia - Extended Backslash";
-
- key <BKSL> { [ backslash, bar, slash, NoSymbol ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "qwerty" {
-
- // This layout should work exactly as a sk with the exception
- // of 'Z' and 'Y' keys, which are in the qwerty style (ie. swapped).
- // 2001 by Kamil Toman <ktoman@email.cz>
-
- include "sk(basic)"
-
- name[Group1] = "Slovakia - qwerty";
-
- key <AB01> { [ z, Z, degree, NoSymbol ] };
- key <AD06> { [ y, Y, NoSymbol, NoSymbol ] };
-};
-
-// Use <BKSL> instead of <LSGT> (useful for keyboard without <LSGT> key)
-xkb_symbols "qwerty_bksl" {
- include "sk(qwerty)"
-
- name[Group1] = "Slovakia - qwerty, extended Backslash";
-
- key <BKSL> { [ backslash, bar, slash, NoSymbol ] };
-};
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // This layout conforms to a new sk compromise standard designed
+ // to satisfy most unix, windows and mac users.
+ // 2001 by Kamil Toman <ktoman@email.cz>
+
+ include "latin"
+
+ name[Group1] = "Slovakia";
+
+ key <TLDE> { [ semicolon, dead_abovering, grave, asciitilde ] };
+ key <AE01> { [ plus, 1, exclam, dead_tilde ] };
+ key <AE02> { [ lcaron, 2, at, dead_caron ] };
+ key <AE03> { [ scaron, 3, numbersign, dead_circumflex ] };
+ key <AE04> { [ ccaron, 4, dollar, dead_breve ] };
+ key <AE05> { [ tcaron, 5, percent, dead_abovering ] };
+ key <AE06> { [ zcaron, 6, asciicircum, dead_ogonek ] };
+ key <AE07> { [ yacute, 7, ampersand, dead_grave ] };
+ key <AE08> { [ aacute, 8, asterisk, dead_abovedot ] };
+ key <AE09> { [ iacute, 9, braceleft, dead_acute ] };
+ key <AE10> { [ eacute, 0, braceright, dead_doubleacute ] };
+ key <AE11> { [ equal, percent, NoSymbol, dead_diaeresis ] };
+ key <AE12> { [dead_acute, dead_caron, dead_macron, dead_cedilla ] };
+
+ key <AD01> { [ q, Q, backslash, NoSymbol ] };
+ key <AD02> { [ w, W, bar, Nosymbol ] };
+ key <AD03> { [ e, E, EuroSign, NoSymbol ] };
+ key <AD04> { [ r, R, NoSymbol, NoSymbol ] };
+ key <AD05> { [ t, T, NoSymbol, NoSymbol ] };
+ key <AD06> { [ z, Z, NoSymbol, NoSymbol ] };
+ key <AD07> { [ u, U, NoSymbol, NoSymbol ] };
+ key <AD08> { [ i, I, NoSymbol, NoSymbol ] };
+ key <AD09> { [ o, O, NoSymbol, NoSymbol ] };
+ key <AD10> { [ p, P, NoSymbol, NoSymbol ] };
+
+ key <AD11> { [ uacute, slash, bracketleft, division ] };
+ key <AD12> { [adiaeresis, parenleft, bracketright, multiply ] };
+
+ key <AC01> { [ a, A, asciitilde, NoSymbol ] };
+ key <AC02> { [ s, S, dstroke, NoSymbol ] };
+ key <AC03> { [ d, D, Dstroke, NoSymbol ] };
+ key <AC04> { [ f, F, bracketleft, NoSymbol ] };
+ key <AC05> { [ g, G, bracketright, NoSymbol ] };
+ key <AC06> { [ h, H, grave, NoSymbol ] };
+ key <AC07> { [ j, J, apostrophe, NoSymbol ] };
+ key <AC08> { [ k, K, lstroke, NoSymbol ] };
+ key <AC09> { [ l, L, Lstroke, NoSymbol ] };
+
+ key <AC10> { [ocircumflex, quotedbl, dollar, NoSymbol ] };
+ key <AC11> { [ section, exclam, apostrophe, ssharp ] };
+ key <AC12> { [ EuroSign, dead_diaeresis, NoSymbol, NoSymbol ] };
+ key <BKSL> { [ ncaron, parenright, backslash, bar ] };
+
+ key <LSGT> { [ backslash, bar, slash, NoSymbol ] };
+ key <AB01> { [ y, Y, degree, NoSymbol ] };
+ key <AB02> { [ x, X, numbersign, Nosymbol ] };
+ key <AB03> { [ c, C, ampersand, NoSymbol ] };
+ key <AB04> { [ v, V, at, NoSymbol ] };
+ key <AB05> { [ b, B, braceleft, NoSymbol ] };
+ key <AB06> { [ n, N, braceright, NoSymbol ] };
+ key <AB07> { [ m, M, asciicircum, NoSymbol ] };
+ key <AB08> { [ comma, question, less, NoSymbol ] };
+ key <AB09> { [ period, colon, greater, NoSymbol ] };
+ key <AB10> { [ minus, underscore, asterisk, NoSymbol ] };
+
+ key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
+
+ include "level3(ralt_switch)"
+};
+
+// Use <BKSL> instead of <LSGT> (useful for keyboard without <LSGT> key)
+xkb_symbols "bksl" {
+ include "sk(basic)"
+
+ name[Group1] = "Slovakia - Extended Backslash";
+
+ key <BKSL> { [ backslash, bar, slash, NoSymbol ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "qwerty" {
+
+ // This layout should work exactly as a sk with the exception
+ // of 'Z' and 'Y' keys, which are in the qwerty style (ie. swapped).
+ // 2001 by Kamil Toman <ktoman@email.cz>
+
+ include "sk(basic)"
+
+ name[Group1] = "Slovakia - qwerty";
+
+ key <AB01> { [ z, Z, degree, NoSymbol ] };
+ key <AD06> { [ y, Y, NoSymbol, NoSymbol ] };
+};
+
+// Use <BKSL> instead of <LSGT> (useful for keyboard without <LSGT> key)
+xkb_symbols "qwerty_bksl" {
+ include "sk(qwerty)"
+
+ name[Group1] = "Slovakia - qwerty, extended Backslash";
+
+ key <BKSL> { [ backslash, bar, slash, NoSymbol ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sony_vndr/us b/xorg-server/xkeyboard-config/symbols/sony_vndr/us
index 76d41053c..a34d7b931 100644
--- a/xorg-server/xkeyboard-config/symbols/sony_vndr/us
+++ b/xorg-server/xkeyboard-config/symbols/sony_vndr/us
@@ -1,93 +1,91 @@
-// $Xorg: us,v 1.4 2001/02/09 02:05:53 xorgcvs Exp $
-//
-//Copyright 1996, 1998 The Open Group
-//
-//Permission to use, copy, modify, distribute, and sell this software and its
-//documentation for any purpose is hereby granted without fee, provided that
-//the above copyright notice appear in all copies and that both that
-//copyright notice and this permission notice appear in supporting
-//documentation.
-//
-//The above copyright notice and this permission notice shall be
-//included in all copies or substantial portions of the Software.
-//
-//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group shall
-//not be used in advertising or otherwise to promote the sale, use or
-//other dealings in this Software without prior written authorization
-//from The Open Group.
-//
-// US/ASCII layout for a nwp5461 keyboard
-xkb_symbols "nwp5461" {
- include "us(basic)"
-
- key <LALT> { [ Alt_L, Meta_L ] };
- key <RTSH> { [ Shift_R ] };
- key <AB11> { [ NoSymbol ] };
-
- // Begin "Function" section
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ F11 ] };
- key <FK12> { [ F12 ] };
- key <HELP> { [ Help ] };
- key <STOP> { [ Cancel ] };
- key <CUT> { [ Select ] };
- key <EXEC> { [ Execute ] };
- key <DELE> { [ Delete ] };
- key <LEFT> { [ Left ] };
- key <RGHT> { [ Right ] };
- key <UP> { [ Up ] };
- key <DOWN> { [ Down ] };
- key <PGUP> { [ Prior ] };
- key <PGDN> { [ Next ] };
- key <INS> { [ Insert ] };
- key <CLR> { [ Clear ] };
- // End "Function" section
-
- // Begin "Keypad" section
- key <KPMU> { [ KP_Multiply ] };
- key <KPDV> { [ KP_Divide ] };
- key <KPAD> { [ KP_Add ] };
-
- key <KP7> { [ KP_7 ] };
- key <KP8> { [ KP_8 ] };
- key <KP9> { [ KP_9 ] };
- key <KPSU> { [ KP_Subtract ] };
-
- key <KP4> { [ KP_4 ] };
- key <KP5> { [ KP_5 ] };
- key <KP6> { [ KP_6 ] };
- key <KPSP> { [ KP_Separator ] };
-
- key <KP1> { [ KP_1 ] };
- key <KP2> { [ KP_2 ] };
- key <KP3> { [ KP_3 ] };
- key <KPEN> { [ KP_Enter ] };
-
- key <KP0> { [ KP_0 ] };
- key <KPDC> { [ KP_Decimal ] };
- key <KPTB> { [ KP_Tab ] };
- // End "Keypad" section
-
-
- // begin modifier mappings
- modifier_map Shift { Shift_R };
- modifier_map Mod3 { Alt_L };
-};
-
+//
+//Copyright 1996, 1998 The Open Group
+//
+//Permission to use, copy, modify, distribute, and sell this software and its
+//documentation for any purpose is hereby granted without fee, provided that
+//the above copyright notice appear in all copies and that both that
+//copyright notice and this permission notice appear in supporting
+//documentation.
+//
+//The above copyright notice and this permission notice shall be
+//included in all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group shall
+//not be used in advertising or otherwise to promote the sale, use or
+//other dealings in this Software without prior written authorization
+//from The Open Group.
+//
+// US/ASCII layout for a nwp5461 keyboard
+xkb_symbols "nwp5461" {
+ include "us(basic)"
+
+ key <LALT> { [ Alt_L, Meta_L ] };
+ key <RTSH> { [ Shift_R ] };
+ key <AB11> { [ NoSymbol ] };
+
+ // Begin "Function" section
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ F11 ] };
+ key <FK12> { [ F12 ] };
+ key <HELP> { [ Help ] };
+ key <STOP> { [ Cancel ] };
+ key <CUT> { [ Select ] };
+ key <EXEC> { [ Execute ] };
+ key <DELE> { [ Delete ] };
+ key <LEFT> { [ Left ] };
+ key <RGHT> { [ Right ] };
+ key <UP> { [ Up ] };
+ key <DOWN> { [ Down ] };
+ key <PGUP> { [ Prior ] };
+ key <PGDN> { [ Next ] };
+ key <INS> { [ Insert ] };
+ key <CLR> { [ Clear ] };
+ // End "Function" section
+
+ // Begin "Keypad" section
+ key <KPMU> { [ KP_Multiply ] };
+ key <KPDV> { [ KP_Divide ] };
+ key <KPAD> { [ KP_Add ] };
+
+ key <KP7> { [ KP_7 ] };
+ key <KP8> { [ KP_8 ] };
+ key <KP9> { [ KP_9 ] };
+ key <KPSU> { [ KP_Subtract ] };
+
+ key <KP4> { [ KP_4 ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_6 ] };
+ key <KPSP> { [ KP_Separator ] };
+
+ key <KP1> { [ KP_1 ] };
+ key <KP2> { [ KP_2 ] };
+ key <KP3> { [ KP_3 ] };
+ key <KPEN> { [ KP_Enter ] };
+
+ key <KP0> { [ KP_0 ] };
+ key <KPDC> { [ KP_Decimal ] };
+ key <KPTB> { [ KP_Tab ] };
+ // End "Keypad" section
+
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_R };
+ modifier_map Mod3 { Alt_L };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/srvr_ctrl b/xorg-server/xkeyboard-config/symbols/srvr_ctrl
index cf7012b4d..b3d9a865a 100644
--- a/xorg-server/xkeyboard-config/symbols/srvr_ctrl
+++ b/xorg-server/xkeyboard-config/symbols/srvr_ctrl
@@ -1,130 +1,125 @@
-// $XKeyboardConfig$
-
-// $XFree86: xc/programs/xkbcomp/symbols/srvr_ctrl,v 1.4 2003/12/18 14:14:38 pascal Exp $
-//
-// Actions which control the server's behavior
-
-partial keypad_keys function_keys
-xkb_symbols "xfree86" {
- include "srvr_ctrl(stdkeypad)"
- include "srvr_ctrl(fkey2vt)"
-};
-
-partial keypad_keys
-xkb_symbols "stdkeypad" {
-
-// Ungrab cancels server/keyboard/pointer grabs
- key <KPDV> {
- type="CTRL+ALT",
- symbols[Group1]= [ KP_Divide, XF86_Ungrab ]
- };
-
-// ClsGrb kills whichever client has a grab in effect
- key <KPMU> {
- type="CTRL+ALT",
- symbols[Group1]= [ KP_Multiply, XF86_ClearGrab ]
- };
-
-// -VMode switches to the previous video mode
- key <KPSU> {
- type="CTRL+ALT",
- symbols[Group1]= [ KP_Subtract, XF86_Prev_VMode ]
- };
-
-// +VMode switches to the next video mode
- key <KPAD> {
- type="CTRL+ALT",
- symbols[Group1]= [ KP_Add, XF86_Next_VMode]
- };
-
-};
-
-partial function_keys
-xkb_symbols "fkey2vt" {
-
- key <FK01> {
- type="CTRL+ALT",
- symbols[Group1]= [ F1, XF86_Switch_VT_1 ]
- };
-
- key <FK02> {
- type="CTRL+ALT",
- symbols[Group1]= [ F2, XF86_Switch_VT_2 ]
- };
-
- key <FK03> {
- type="CTRL+ALT",
- symbols[Group1]= [ F3, XF86_Switch_VT_3 ]
- };
-
- key <FK04> {
- type="CTRL+ALT",
- symbols[Group1]= [ F4, XF86_Switch_VT_4 ]
- };
-
- key <FK05> {
- type="CTRL+ALT",
- symbols[Group1]= [ F5, XF86_Switch_VT_5 ]
- };
-
- key <FK06> {
- type="CTRL+ALT",
- symbols[Group1]= [ F6, XF86_Switch_VT_6 ]
- };
-
- key <FK07> {
- type="CTRL+ALT",
- symbols[Group1]= [ F7, XF86_Switch_VT_7 ]
- };
-
- key <FK08> {
- type="CTRL+ALT",
- symbols[Group1]= [ F8, XF86_Switch_VT_8 ]
- };
-
- key <FK09> {
- type="CTRL+ALT",
- symbols[Group1]= [ F9, XF86_Switch_VT_9 ]
- };
-
- key <FK10> {
- type="CTRL+ALT",
- symbols[Group1]= [ F10, XF86_Switch_VT_10 ]
- };
-
- key <FK11> {
- type="CTRL+ALT",
- symbols[Group1]= [ F11, XF86_Switch_VT_11 ]
- };
-
- key <FK12> {
- type="CTRL+ALT",
- symbols[Group1]= [ F12, XF86_Switch_VT_12 ]
- };
-
-};
-
-partial function_keys keypad_keys
-xkb_symbols "no_srvr_keys" {
-
- key.type="TWO_LEVEL";
-
- key <FK01> { [ F1, F1 ] };
- key <FK02> { [ F2, F2 ] };
- key <FK03> { [ F3, F3 ] };
- key <FK04> { [ F4, F4 ] };
- key <FK05> { [ F5, F5 ] };
- key <FK06> { [ F6, F6 ] };
- key <FK07> { [ F7, F7 ] };
- key <FK08> { [ F8, F8 ] };
- key <FK09> { [ F9, F9 ] };
- key <FK10> { [ F10, F10 ] };
- key <FK11> { [ F11, F11 ] };
- key <FK12> { [ F12, F12 ] };
-
- key <KPDV> { [ KP_Divide, KP_Divide ] };
- key <KPMU> { [ KP_Multiply, KP_Multiply ] };
- key <KPSU> { [ KP_Subtract, KP_Subtract ] };
- key <KPAD> { [ KP_Add, KP_Add ] };
-};
-
+// Actions which control the server's behavior
+
+partial keypad_keys function_keys
+xkb_symbols "xfree86" {
+ include "srvr_ctrl(stdkeypad)"
+ include "srvr_ctrl(fkey2vt)"
+};
+
+partial keypad_keys
+xkb_symbols "stdkeypad" {
+
+// Ungrab cancels server/keyboard/pointer grabs
+ key <KPDV> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ KP_Divide, XF86_Ungrab ]
+ };
+
+// ClsGrb kills whichever client has a grab in effect
+ key <KPMU> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ KP_Multiply, XF86_ClearGrab ]
+ };
+
+// -VMode switches to the previous video mode
+ key <KPSU> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ KP_Subtract, XF86_Prev_VMode ]
+ };
+
+// +VMode switches to the next video mode
+ key <KPAD> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ KP_Add, XF86_Next_VMode]
+ };
+
+};
+
+partial function_keys
+xkb_symbols "fkey2vt" {
+
+ key <FK01> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F1, XF86_Switch_VT_1 ]
+ };
+
+ key <FK02> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F2, XF86_Switch_VT_2 ]
+ };
+
+ key <FK03> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F3, XF86_Switch_VT_3 ]
+ };
+
+ key <FK04> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F4, XF86_Switch_VT_4 ]
+ };
+
+ key <FK05> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F5, XF86_Switch_VT_5 ]
+ };
+
+ key <FK06> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F6, XF86_Switch_VT_6 ]
+ };
+
+ key <FK07> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F7, XF86_Switch_VT_7 ]
+ };
+
+ key <FK08> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F8, XF86_Switch_VT_8 ]
+ };
+
+ key <FK09> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F9, XF86_Switch_VT_9 ]
+ };
+
+ key <FK10> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F10, XF86_Switch_VT_10 ]
+ };
+
+ key <FK11> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F11, XF86_Switch_VT_11 ]
+ };
+
+ key <FK12> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F12, XF86_Switch_VT_12 ]
+ };
+
+};
+
+partial function_keys keypad_keys
+xkb_symbols "no_srvr_keys" {
+
+ key.type="TWO_LEVEL";
+
+ key <FK01> { [ F1, F1 ] };
+ key <FK02> { [ F2, F2 ] };
+ key <FK03> { [ F3, F3 ] };
+ key <FK04> { [ F4, F4 ] };
+ key <FK05> { [ F5, F5 ] };
+ key <FK06> { [ F6, F6 ] };
+ key <FK07> { [ F7, F7 ] };
+ key <FK08> { [ F8, F8 ] };
+ key <FK09> { [ F9, F9 ] };
+ key <FK10> { [ F10, F10 ] };
+ key <FK11> { [ F11, F11 ] };
+ key <FK12> { [ F12, F12 ] };
+
+ key <KPDV> { [ KP_Divide, KP_Divide ] };
+ key <KPMU> { [ KP_Multiply, KP_Multiply ] };
+ key <KPSU> { [ KP_Subtract, KP_Subtract ] };
+ key <KPAD> { [ KP_Add, KP_Add ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/ara b/xorg-server/xkeyboard-config/symbols/sun_vndr/ara
index ea54207b8..d62bb6da9 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/ara
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/ara
@@ -114,4 +114,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/ara(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/be b/xorg-server/xkeyboard-config/symbols/sun_vndr/be
index d6ce057d4..58abfd6e6 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/be
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/be
@@ -96,4 +96,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/be(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/br b/xorg-server/xkeyboard-config/symbols/sun_vndr/br
index 4d966f551..3cea0bf9c 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/br
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/br
@@ -99,4 +99,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/br(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/ca b/xorg-server/xkeyboard-config/symbols/sun_vndr/ca
index 0f0aa2923..6fb72c462 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/ca
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/ca
@@ -95,4 +95,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/ca(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/ch b/xorg-server/xkeyboard-config/symbols/sun_vndr/ch
index c952fc559..82c0681cc 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/ch
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/ch
@@ -131,4 +131,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/ch(de_type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/cz b/xorg-server/xkeyboard-config/symbols/sun_vndr/cz
index 6f6b198c5..55859db9a 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/cz
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/cz
@@ -103,4 +103,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/cz(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/de b/xorg-server/xkeyboard-config/symbols/sun_vndr/de
index 3b1301687..2c46ea941 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/de
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/de
@@ -138,4 +138,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/de(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/dk b/xorg-server/xkeyboard-config/symbols/sun_vndr/dk
index 4f43112ab..0cc81153d 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/dk
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/dk
@@ -145,4 +145,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/dk(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/ee b/xorg-server/xkeyboard-config/symbols/sun_vndr/ee
index 1070719a5..914a80dde 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/ee
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/ee
@@ -115,4 +115,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/ee(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/es b/xorg-server/xkeyboard-config/symbols/sun_vndr/es
index 789df5519..9cb25f382 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/es
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/es
@@ -143,4 +143,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/es(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/fi b/xorg-server/xkeyboard-config/symbols/sun_vndr/fi
index 817423968..a2f8cd8f4 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/fi
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/fi
@@ -87,4 +87,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/fi(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/fr b/xorg-server/xkeyboard-config/symbols/sun_vndr/fr
index f52d1956b..e3e6828ef 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/fr
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/fr
@@ -94,4 +94,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/fr(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/gb b/xorg-server/xkeyboard-config/symbols/sun_vndr/gb
index d21a116cf..fc775cd98 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/gb
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/gb
@@ -100,4 +100,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/gb(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/gr b/xorg-server/xkeyboard-config/symbols/sun_vndr/gr
index aa5fecbfa..c3a83dad0 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/gr
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/gr
@@ -115,4 +115,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/gr(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/it b/xorg-server/xkeyboard-config/symbols/sun_vndr/it
index 960bcfc32..7149b0996 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/it
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/it
@@ -138,4 +138,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/it(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/jp b/xorg-server/xkeyboard-config/symbols/sun_vndr/jp
index 5be8647d2..9b6579e2a 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/jp
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/jp
@@ -1,4 +1,3 @@
-// $XdotOrg: $
//
// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
//
@@ -27,7 +26,6 @@
// or other dealings in this Software without prior written authorization
// of the copyright holder.
//
-// $TOG: us /main/5 1998/02/10 13:45:06 kaleb $
//
//Copyright 1996, 1998 The Open Group
//
@@ -816,4 +814,3 @@ xkb_symbols "type7" {
key <HENK> { [ Kana_Lock, Mode_switch ] };
key <ALGR> { [ Alt_R, Alt_R ] };
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/kr b/xorg-server/xkeyboard-config/symbols/sun_vndr/kr
index 51959b23f..0973943bf 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/kr
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/kr
@@ -95,4 +95,3 @@ partial default alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/kr(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/lt b/xorg-server/xkeyboard-config/symbols/sun_vndr/lt
index 6e51cb342..b82ebcfb9 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/lt
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/lt
@@ -116,4 +116,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/lt(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/lv b/xorg-server/xkeyboard-config/symbols/sun_vndr/lv
index 6661afddf..d1573868b 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/lv
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/lv
@@ -115,4 +115,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/lv(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/nl b/xorg-server/xkeyboard-config/symbols/sun_vndr/nl
index 703614277..8469039f7 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/nl
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/nl
@@ -146,4 +146,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/nl(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/no b/xorg-server/xkeyboard-config/symbols/sun_vndr/no
index 1d1d43449..bbb414da7 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/no
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/no
@@ -142,4 +142,3 @@ partial default alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/no(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/pl b/xorg-server/xkeyboard-config/symbols/sun_vndr/pl
index 684b54911..6295c3206 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/pl
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/pl
@@ -99,4 +99,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/pl(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/pt b/xorg-server/xkeyboard-config/symbols/sun_vndr/pt
index 561abb594..b5b108632 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/pt
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/pt
@@ -140,4 +140,3 @@ partial default alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/pt(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/ro b/xorg-server/xkeyboard-config/symbols/sun_vndr/ro
index df87262ed..f21f9f624 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/ro
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/ro
@@ -115,4 +115,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/ro(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/ru b/xorg-server/xkeyboard-config/symbols/sun_vndr/ru
index 833576dcc..ec19c9ba3 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/ru
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/ru
@@ -109,4 +109,3 @@ partial default alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/ru(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/se b/xorg-server/xkeyboard-config/symbols/sun_vndr/se
index ec41629cb..4efaf85fa 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/se
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/se
@@ -277,4 +277,3 @@ partial default alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/se(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/sk b/xorg-server/xkeyboard-config/symbols/sun_vndr/sk
index f27726013..ee49a7008 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/sk
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/sk
@@ -107,4 +107,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/sk(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/tr b/xorg-server/xkeyboard-config/symbols/sun_vndr/tr
index 3c95110a1..4eb8d6511 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/tr
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/tr
@@ -90,4 +90,3 @@ partial default alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/tr(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/tuv b/xorg-server/xkeyboard-config/symbols/sun_vndr/tuv
index 0eda715d8..64037ac42 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/tuv
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/tuv
@@ -1,4 +1,3 @@
-// $XdotOrg: $
//
// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
//
@@ -27,7 +26,6 @@
// or other dealings in this Software without prior written authorization
// of the copyright holder.
//
-// $TOG: us /main/5 1998/02/10 13:45:06 kaleb $
//
//Copyright 1996, 1998 The Open Group
//
@@ -261,4 +259,3 @@ xkb_symbols "type5" {
key <AD03> { [ e, E ], [ EuroSign ] };
key <BKSL> { [ backslash, bar ], [ brokenbar ] };
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/tw b/xorg-server/xkeyboard-config/symbols/sun_vndr/tw
index a4c011d45..3f6569d2a 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/tw
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/tw
@@ -76,4 +76,3 @@ xkb_symbols "type5" {
key <BKSL> { [ backslash, bar, brokenbar ] };
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/ua b/xorg-server/xkeyboard-config/symbols/sun_vndr/ua
index c49b21bce..b18fad4d7 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/ua
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/ua
@@ -115,4 +115,3 @@ partial alphanumeric_keys
xkb_symbols "basic" {
include "sun_vndr/ua(type6)"
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/us b/xorg-server/xkeyboard-config/symbols/sun_vndr/us
index 8a857a5ab..48d15df17 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/us
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/us
@@ -398,4 +398,3 @@ xkb_symbols "US101A_Sun" {
key <RALT> { [ Alt_L ] };
key <RCTL> { [ Multi_key ] };
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/sy b/xorg-server/xkeyboard-config/symbols/sy
index 7825d2376..e5684f191 100644
--- a/xorg-server/xkeyboard-config/symbols/sy
+++ b/xorg-server/xkeyboard-config/symbols/sy
@@ -1,9 +1,3 @@
-// $XKeyboardConfig$
-
-//
-// $XFree86: xc/programs/xkbcomp/symbols/syr,v 1.1 2002/11/22 03:06:50 dawes Exp $
-//
-
partial default alphanumeric_keys
xkb_symbols "basic" {
include "ara(basic)"
@@ -79,9 +73,6 @@ xkb_symbols "syc" {
modifier_map Mod2 { Mode_switch };
};
-//
-// $XFree86: xc/programs/xkbcomp/symbols/syr_phonetic,v 1.1 2002/11/22 03:06:50 dawes Exp $
-//
partial alphanumeric_keys
xkb_symbols "syc_phonetic" {
@@ -169,4 +160,3 @@ xkb_symbols "ku_alt" {
include "tr(ku_alt)"
name[Group1]= "Syria - Kurdish, Latin Alt-Q";
};
-
diff --git a/xorg-server/xkeyboard-config/symbols/terminate b/xorg-server/xkeyboard-config/symbols/terminate
index 47e434d7f..8bb528cf8 100644
--- a/xorg-server/xkeyboard-config/symbols/terminate
+++ b/xorg-server/xkeyboard-config/symbols/terminate
@@ -1,8 +1,7 @@
-partial default modifier_keys
-xkb_symbols "ctrl_alt_bksp" {
- key <BKSP> {
- type="CTRL+ALT",
- symbols[Group1] = [ NoSymbol, Terminate_Server ]
- };
-};
-
+partial default modifier_keys
+xkb_symbols "ctrl_alt_bksp" {
+ key <BKSP> {
+ type="CTRL+ALT",
+ symbols[Group1] = [ NoSymbol, Terminate_Server ]
+ };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/th b/xorg-server/xkeyboard-config/symbols/th
index 050fb5278..1251997f0 100644
--- a/xorg-server/xkeyboard-config/symbols/th
+++ b/xorg-server/xkeyboard-config/symbols/th
@@ -1,249 +1,245 @@
-// $XKeyboardConfig$
-
-// based on a keyboard map from an 'xkb/symbols/th' file
-//
-// $XFree86: xc/programs/xkbcomp/symbols/th,v 1.3 2003/04/03 16:34:51 dawes Exp $
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
- name[Group1]= "Thailand";
-
- // converted to THai keysysms - Pablo Saratxaga <pablo@mandrakesoft.com>
-
- key <TLDE> { [ underscore, percent ] };
- key <AE01> { [ Thai_lakkhangyao, plus ] };
- key <AE02> { [ slash, Thai_leknung ] };
- key <AE03> { [ minus, Thai_leksong ] };
- key <AE04> { [ Thai_phosamphao, Thai_leksam ] };
- key <AE05> { [ Thai_thothung, Thai_leksi ] };
- key <AE06> { [ Thai_sarau, Thai_sarauu ] };
- key <AE07> { [ Thai_saraue, Thai_baht ] };
- key <AE08> { [ Thai_khokhwai, Thai_lekha ] };
- key <AE09> { [ Thai_totao, Thai_lekhok ] };
- key <AE10> { [ Thai_chochan, Thai_lekchet ] };
- key <AE11> { [ Thai_khokhai, Thai_lekpaet ] };
- key <AE12> { [ Thai_chochang, Thai_lekkao ] };
-
- key <AD01> { [ Thai_maiyamok, Thai_leksun ] };
- key <AD02> { [ Thai_saraaimaimalai, quotedbl ] };
- key <AD03> { [ Thai_saraam, Thai_dochada ] };
- key <AD04> { [ Thai_phophan, Thai_thonangmontho ] };
- key <AD05> { [ Thai_saraa, Thai_thothong ] };
- key <AD06> { [ Thai_maihanakat, Thai_nikhahit ] };
- key <AD07> { [ Thai_saraii, Thai_maitri ] };
- key <AD08> { [ Thai_rorua, Thai_nonen ] };
- key <AD09> { [ Thai_nonu, Thai_paiyannoi ] };
- key <AD10> { [ Thai_yoyak, Thai_yoying ] };
- key <AD11> { [ Thai_bobaimai, Thai_thothan ] };
- key <AD12> { [ Thai_loling, comma ] };
-
- key <AC01> { [ Thai_fofan, Thai_ru ] };
- key <AC02> { [ Thai_hohip, Thai_khorakhang ] };
- key <AC03> { [ Thai_kokai, Thai_topatak ] };
- key <AC04> { [ Thai_dodek, Thai_sarao ] };
- key <AC05> { [ Thai_sarae, Thai_chochoe ] };
- key <AC06> { [ Thai_maitho, Thai_maitaikhu ] };
- key <AC07> { [ Thai_maiek, Thai_maichattawa ] };
- key <AC08> { [ Thai_saraaa, Thai_sorusi ] };
- key <AC09> { [ Thai_sosua, Thai_sosala ] };
- key <AC10> { [ Thai_wowaen, Thai_soso ] };
- key <AC11> { [ Thai_ngongu, period ] };
-
- key <AB01> { [ Thai_phophung, parenleft ] };
- key <AB02> { [ Thai_popla, parenright ] };
- key <AB03> { [ Thai_saraae, Thai_choching ] };
- key <AB04> { [ Thai_oang, Thai_honokhuk ] };
- key <AB05> { [ Thai_sarai, Thai_phinthu ] };
- key <AB06> { [ Thai_sarauee, Thai_thanthakhat ] };
- key <AB07> { [ Thai_thothahan, question ] };
- key <AB08> { [ Thai_moma, Thai_thophuthao ] };
- key <AB09> { [ Thai_saraaimaimuan, Thai_lochula ] };
- key <AB10> { [ Thai_fofa, Thai_lu ] };
-
- key <BKSL> { [ Thai_khokhuat, Thai_khokhon ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "pat" {
- name[Group1]= "Thailand - Pattachote";
- // The thai layout defines a second keyboard group and changes
- // the behavior of a few modifier keys.
-
- // converted to THai keysysms - Pablo Saratxaga pablo@mandrakesoft.com
- // Pattachote modification by Visanu Euarchukiati -- visanu@inet.co.th
- key <TLDE> { [ underscore, Thai_baht ] };
- key <AE01> { [ equal, plus ] };
- key <AE02> { [ Thai_leksong, quotedbl ] };
- key <AE03> { [ Thai_leksam, slash ] };
- key <AE04> { [ Thai_leksi, comma ] };
- key <AE05> { [ Thai_lekha, question ] };
- key <AE06> { [ Thai_sarauu, Thai_sarau ] };
- key <AE07> { [ Thai_lekchet, underscore ] };
- key <AE08> { [ Thai_lekpaet, period ] };
- key <AE09> { [ Thai_lekkao, parenleft ] };
- key <AE10> { [ Thai_leksun, parenright ] };
- key <AE11> { [ Thai_leknung, minus ] };
- key <AE12> { [ Thai_lekhok, percent ] };
-
- key <AD01> { [ Thai_maitaikhu, Thai_maitri ] };
- key <AD02> { [ Thai_totao, Thai_ru ] };
- key <AD03> { [ Thai_yoyak, Thai_maiyamok ] };
- key <AD04> { [ Thai_oang, Thai_yoying ] };
- key <AD05> { [ Thai_rorua, Thai_sorusi ] };
- key <AD06> { [ Thai_maiek, Thai_saraue ] };
- key <AD07> { [ Thai_dodek, Thai_fofa ] };
- key <AD08> { [ Thai_moma, Thai_soso ] };
- key <AD09> { [ Thai_wowaen, Thai_thothung ] };
- key <AD10> { [ Thai_saraae, Thai_thophuthao ] };
- key <AD11> { [ Thai_saraaimaimuan, Thai_paiyannoi ] };
- key <AD12> { [ Thai_chochoe, Thai_lu ] };
-
- key <AC01> { [ Thai_maitho, Thai_maichattawa] };
- key <AC02> { [ Thai_thothahan, Thai_thothong ] };
- key <AC03> { [ Thai_ngongu, Thai_saraam ] };
- key <AC04> { [ Thai_kokai, Thai_nonen ] };
- key <AC05> { [ Thai_maihanakat, Thai_thanthakhat] };
- key <AC06> { [ Thai_saraii, Thai_sarauee ] };
- key <AC07> { [ Thai_saraaa, Thai_phophung ] };
- key <AC08> { [ Thai_nonu, Thai_chochang ] };
- key <AC09> { [ Thai_sarae, Thai_sarao ] };
- key <AC10> { [ Thai_saraaimaimalai, Thai_khorakhang ] };
- key <AC11> { [ Thai_khokhai, Thai_thonangmontho ] };
-
- key <AB01> { [ Thai_bobaimai, Thai_dochada ] };
- key <AB02> { [ Thai_popla, Thai_topatak ] };
- key <AB03> { [ Thai_loling, Thai_thothan ] };
- key <AB04> { [ Thai_hohip, Thai_phosamphao ] };
- key <AB05> { [ Thai_sarai, Thai_phinthu ] };
- key <AB06> { [ Thai_khokhwai, Thai_sosala ] };
- key <AB07> { [ Thai_sosua, Thai_honokhuk ] };
- key <AB08> { [ Thai_saraa, Thai_fofan ] };
- key <AB09> { [ Thai_chochan, Thai_choching ] };
- key <AB10> { [ Thai_phophan, Thai_lochula ] };
-
- key <BKSL> { [ Thai_lakkhangyao, Thai_nikhahit ] };
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "tis" {
- name[Group1]= "Thailand - TIS-820.2538";
- // The thai layout defines a second keyboard group and changes
- // the behavior of a few modifier keys.
-
- // converted to THai keysysms - Pablo Saratxaga <pablo@mandrakesoft.com>
- // modified to TIS-820.2538 - Theppitak Karoonboonyanan <thep@linux.thai.net>
- key <TLDE> { [ 0x1000e4f, 0x1000e5b ] };
- key <AE01> { [ Thai_baht, Thai_lakkhangyao] };
- key <AE02> { [ slash, Thai_leknung ] };
- key <AE03> { [ minus, Thai_leksong ] };
- key <AE04> { [ Thai_phosamphao, Thai_leksam ] };
- key <AE05> { [ Thai_thothung, Thai_leksi ] };
- key <AE06> { [ Thai_sarau, Thai_sarauu ] };
- key <AE07> { [ Thai_saraue, 0x1000e4e ] };
- key <AE08> { [ Thai_khokhwai, Thai_lekha ] };
- key <AE09> { [ Thai_totao, Thai_lekhok ] };
- key <AE10> { [ Thai_chochan, Thai_lekchet ] };
- key <AE11> { [ Thai_khokhai, Thai_lekpaet ] };
- key <AE12> { [ Thai_chochang, Thai_lekkao ] };
-
- key <AD01> { [ Thai_maiyamok, Thai_leksun ] };
- key <AD02> { [ Thai_saraaimaimalai, quotedbl ] };
- key <AD03> { [ Thai_saraam, Thai_dochada ] };
- key <AD04> { [ Thai_phophan, Thai_thonangmontho ] };
- key <AD05> { [ Thai_saraa, Thai_thothong ] };
- key <AD06> { [ Thai_maihanakat, Thai_nikhahit ] };
- key <AD07> { [ Thai_saraii, Thai_maitri ] };
- key <AD08> { [ Thai_rorua, Thai_nonen ] };
- key <AD09> {type[Group1]="THREE_LEVEL",
- [ Thai_nonu, Thai_paiyannoi, 0x1000e5a] };
- key <AD10> { [ Thai_yoyak, Thai_yoying ] };
- key <AD11> { [ Thai_bobaimai, Thai_thothan ] };
- key <AD12> { [ Thai_loling, comma ] };
-
- key <AC01> { [ Thai_fofan, Thai_ru ] };
- key <AC02> { [ Thai_hohip, Thai_khorakhang ] };
- key <AC03> { [ Thai_kokai, Thai_topatak ] };
- key <AC04> { [ Thai_dodek, Thai_sarao ] };
- key <AC05> { [ Thai_sarae, Thai_chochoe ] };
- key <AC06> { [ Thai_maitho, Thai_maitaikhu ] };
- key <AC07> { [ Thai_maiek, Thai_maichattawa ] };
- key <AC08> { [ Thai_saraaa, Thai_sorusi ] };
- key <AC09> { [ Thai_sosua, Thai_sosala ] };
- key <AC10> { [ Thai_wowaen, Thai_soso ] };
- key <AC11> { [ Thai_ngongu, period ] };
-
- key <AB01> { [ Thai_phophung, parenleft ] };
- key <AB02> { [ Thai_popla, parenright ] };
- key <AB03> { [ Thai_saraae, Thai_choching ] };
- key <AB04> { [ Thai_oang, Thai_honokhuk ] };
- key <AB05> { [ Thai_sarai, Thai_phinthu ] };
- key <AB06> { [ Thai_sarauee, Thai_thanthakhat ] };
- key <AB07> { [ Thai_thothahan, question ] };
- key <AB08> { [ Thai_moma, Thai_thophuthao ] };
- key <AB09> { [ Thai_saraaimaimuan, Thai_lochula ] };
- key <AB10> { [ Thai_fofa, Thai_lu ] };
-
- key <BKSL> { [ Thai_khokhon, Thai_khokhuat ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "olpc" {
-
- name[Group1]= "Thailand";
- // The OLPC thai layout
- // walter@laptop.org
-
- key <TLDE> { [ 0x1000E4F, 0x1000E5B ] };
- key <AE01> { [ 0x1000E3F, 0x1000E45 ] };
- key <AE02> { [ slash, 0x1000E51 ] };
- key <AE03> { [ minus, 0x1000E52 ] };
- key <AE04> { [ 0x1000E20, 0x1000E53 ] };
- key <AE05> { [ 0x1000E16, 0x1000E54 ] };
- key <AE06> { [ 0x1000E38, 0x1000E39 ] };
- key <AE07> { [ 0x1000E36, 0x1000E4E ] };
- key <AE08> { [ 0x1000E04, 0x1000E55 ] };
- key <AE09> { [ 0x1000E15, 0x1000E56 ] };
- key <AE10> { [ 0x1000E08, 0x1000E57 ] };
- key <AE11> { [ 0x1000E02, 0x1000E58 ] };
- key <AE12> { [ 0x1000E0A, 0x1000E59 ] };
-
- key <AD01> { [ 0x1000E46, 0x1000E50 ] };
- key <AD02> { [ 0x1000E44, quotedbl ] };
- key <AD03> { [ 0x1000E33, 0x1000E0E ] };
- key <AD04> { [ 0x1000E1E, 0x1000E11 ] };
- key <AD05> { [ 0x1000E30, 0x1000E18 ] };
- key <AD06> { [ 0x1000E31, 0x1000E4D ] };
- key <AD07> { [ 0x1000E35, 0x1000E4A ] };
- key <AD08> { [ 0x1000E23, 0x1000E13 ] };
- key <AD09> { [ 0x1000E19, 0x1000E2F ] };
- key <AD10> { [ 0x1000E22, 0x1000E0D ] };
- key <AD11> { [ 0x1000E1A, 0x1000E10 ] };
- key <AD12> { [ 0x1000E25, comma ] };
-
- key <AC01> { [ 0x1000E1F, 0x1000E24 ] };
- key <AC02> { [ 0x1000E2B, 0x1000E06 ] };
- key <AC03> { [ 0x1000E01, 0x1000E0F ] };
- key <AC04> { [ 0x1000E14, 0x1000E42 ] };
- key <AC05> { [ 0x1000E40, 0x1000E0C ] };
- key <AC06> { [ 0x1000E49, 0x1000E47 ] };
- key <AC07> { [ 0x1000E48, 0x1000E4B ] };
- key <AC08> { [ 0x1000E32, 0x1000E29 ] };
- key <AC09> { [ 0x1000E2A, 0x1000E28 ] };
- key <AC10> { [ 0x1000E27, 0x1000E0B ] };
- key <AC11> { [ 0x1000E07, period ] };
- key <BKSL> { [ 0x1000E05, 0x1000E03 ] };
-
- key <AB01> { [ 0x1000E1C, parenleft ] };
- key <AB02> { [ 0x1000E1B, parenright ] };
- key <AB03> { [ 0x1000E41, 0x1000E09 ] };
- key <AB04> { [ 0x1000E2D, 0x1000E2E ] };
- key <AB05> { [ 0x1000E34, 0x1000E3A ] };
- key <AB06> { [ 0x1000E37, 0x1000E4C ] };
- key <AB07> { [ 0x1000E17, question ] };
- key <AB08> { [ 0x1000E21, 0x1000E12 ] };
- key <AB09> { [ 0x1000E43, 0x1000E2C ] };
- key <AB10> { [ 0x1000E1D, 0x1000E26 ] };
-
- include "group(olpc)"
-};
+// based on a keyboard map from an 'xkb/symbols/th' file
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ name[Group1]= "Thailand";
+
+ // converted to THai keysysms - Pablo Saratxaga <pablo@mandrakesoft.com>
+
+ key <TLDE> { [ underscore, percent ] };
+ key <AE01> { [ Thai_lakkhangyao, plus ] };
+ key <AE02> { [ slash, Thai_leknung ] };
+ key <AE03> { [ minus, Thai_leksong ] };
+ key <AE04> { [ Thai_phosamphao, Thai_leksam ] };
+ key <AE05> { [ Thai_thothung, Thai_leksi ] };
+ key <AE06> { [ Thai_sarau, Thai_sarauu ] };
+ key <AE07> { [ Thai_saraue, Thai_baht ] };
+ key <AE08> { [ Thai_khokhwai, Thai_lekha ] };
+ key <AE09> { [ Thai_totao, Thai_lekhok ] };
+ key <AE10> { [ Thai_chochan, Thai_lekchet ] };
+ key <AE11> { [ Thai_khokhai, Thai_lekpaet ] };
+ key <AE12> { [ Thai_chochang, Thai_lekkao ] };
+
+ key <AD01> { [ Thai_maiyamok, Thai_leksun ] };
+ key <AD02> { [ Thai_saraaimaimalai, quotedbl ] };
+ key <AD03> { [ Thai_saraam, Thai_dochada ] };
+ key <AD04> { [ Thai_phophan, Thai_thonangmontho ] };
+ key <AD05> { [ Thai_saraa, Thai_thothong ] };
+ key <AD06> { [ Thai_maihanakat, Thai_nikhahit ] };
+ key <AD07> { [ Thai_saraii, Thai_maitri ] };
+ key <AD08> { [ Thai_rorua, Thai_nonen ] };
+ key <AD09> { [ Thai_nonu, Thai_paiyannoi ] };
+ key <AD10> { [ Thai_yoyak, Thai_yoying ] };
+ key <AD11> { [ Thai_bobaimai, Thai_thothan ] };
+ key <AD12> { [ Thai_loling, comma ] };
+
+ key <AC01> { [ Thai_fofan, Thai_ru ] };
+ key <AC02> { [ Thai_hohip, Thai_khorakhang ] };
+ key <AC03> { [ Thai_kokai, Thai_topatak ] };
+ key <AC04> { [ Thai_dodek, Thai_sarao ] };
+ key <AC05> { [ Thai_sarae, Thai_chochoe ] };
+ key <AC06> { [ Thai_maitho, Thai_maitaikhu ] };
+ key <AC07> { [ Thai_maiek, Thai_maichattawa ] };
+ key <AC08> { [ Thai_saraaa, Thai_sorusi ] };
+ key <AC09> { [ Thai_sosua, Thai_sosala ] };
+ key <AC10> { [ Thai_wowaen, Thai_soso ] };
+ key <AC11> { [ Thai_ngongu, period ] };
+
+ key <AB01> { [ Thai_phophung, parenleft ] };
+ key <AB02> { [ Thai_popla, parenright ] };
+ key <AB03> { [ Thai_saraae, Thai_choching ] };
+ key <AB04> { [ Thai_oang, Thai_honokhuk ] };
+ key <AB05> { [ Thai_sarai, Thai_phinthu ] };
+ key <AB06> { [ Thai_sarauee, Thai_thanthakhat ] };
+ key <AB07> { [ Thai_thothahan, question ] };
+ key <AB08> { [ Thai_moma, Thai_thophuthao ] };
+ key <AB09> { [ Thai_saraaimaimuan, Thai_lochula ] };
+ key <AB10> { [ Thai_fofa, Thai_lu ] };
+
+ key <BKSL> { [ Thai_khokhuat, Thai_khokhon ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "pat" {
+ name[Group1]= "Thailand - Pattachote";
+ // The thai layout defines a second keyboard group and changes
+ // the behavior of a few modifier keys.
+
+ // converted to THai keysysms - Pablo Saratxaga pablo@mandrakesoft.com
+ // Pattachote modification by Visanu Euarchukiati -- visanu@inet.co.th
+ key <TLDE> { [ underscore, Thai_baht ] };
+ key <AE01> { [ equal, plus ] };
+ key <AE02> { [ Thai_leksong, quotedbl ] };
+ key <AE03> { [ Thai_leksam, slash ] };
+ key <AE04> { [ Thai_leksi, comma ] };
+ key <AE05> { [ Thai_lekha, question ] };
+ key <AE06> { [ Thai_sarauu, Thai_sarau ] };
+ key <AE07> { [ Thai_lekchet, underscore ] };
+ key <AE08> { [ Thai_lekpaet, period ] };
+ key <AE09> { [ Thai_lekkao, parenleft ] };
+ key <AE10> { [ Thai_leksun, parenright ] };
+ key <AE11> { [ Thai_leknung, minus ] };
+ key <AE12> { [ Thai_lekhok, percent ] };
+
+ key <AD01> { [ Thai_maitaikhu, Thai_maitri ] };
+ key <AD02> { [ Thai_totao, Thai_ru ] };
+ key <AD03> { [ Thai_yoyak, Thai_maiyamok ] };
+ key <AD04> { [ Thai_oang, Thai_yoying ] };
+ key <AD05> { [ Thai_rorua, Thai_sorusi ] };
+ key <AD06> { [ Thai_maiek, Thai_saraue ] };
+ key <AD07> { [ Thai_dodek, Thai_fofa ] };
+ key <AD08> { [ Thai_moma, Thai_soso ] };
+ key <AD09> { [ Thai_wowaen, Thai_thothung ] };
+ key <AD10> { [ Thai_saraae, Thai_thophuthao ] };
+ key <AD11> { [ Thai_saraaimaimuan, Thai_paiyannoi ] };
+ key <AD12> { [ Thai_chochoe, Thai_lu ] };
+
+ key <AC01> { [ Thai_maitho, Thai_maichattawa] };
+ key <AC02> { [ Thai_thothahan, Thai_thothong ] };
+ key <AC03> { [ Thai_ngongu, Thai_saraam ] };
+ key <AC04> { [ Thai_kokai, Thai_nonen ] };
+ key <AC05> { [ Thai_maihanakat, Thai_thanthakhat] };
+ key <AC06> { [ Thai_saraii, Thai_sarauee ] };
+ key <AC07> { [ Thai_saraaa, Thai_phophung ] };
+ key <AC08> { [ Thai_nonu, Thai_chochang ] };
+ key <AC09> { [ Thai_sarae, Thai_sarao ] };
+ key <AC10> { [ Thai_saraaimaimalai, Thai_khorakhang ] };
+ key <AC11> { [ Thai_khokhai, Thai_thonangmontho ] };
+
+ key <AB01> { [ Thai_bobaimai, Thai_dochada ] };
+ key <AB02> { [ Thai_popla, Thai_topatak ] };
+ key <AB03> { [ Thai_loling, Thai_thothan ] };
+ key <AB04> { [ Thai_hohip, Thai_phosamphao ] };
+ key <AB05> { [ Thai_sarai, Thai_phinthu ] };
+ key <AB06> { [ Thai_khokhwai, Thai_sosala ] };
+ key <AB07> { [ Thai_sosua, Thai_honokhuk ] };
+ key <AB08> { [ Thai_saraa, Thai_fofan ] };
+ key <AB09> { [ Thai_chochan, Thai_choching ] };
+ key <AB10> { [ Thai_phophan, Thai_lochula ] };
+
+ key <BKSL> { [ Thai_lakkhangyao, Thai_nikhahit ] };
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "tis" {
+ name[Group1]= "Thailand - TIS-820.2538";
+ // The thai layout defines a second keyboard group and changes
+ // the behavior of a few modifier keys.
+
+ // converted to THai keysysms - Pablo Saratxaga <pablo@mandrakesoft.com>
+ // modified to TIS-820.2538 - Theppitak Karoonboonyanan <thep@linux.thai.net>
+ key <TLDE> { [ 0x1000e4f, 0x1000e5b ] };
+ key <AE01> { [ Thai_baht, Thai_lakkhangyao] };
+ key <AE02> { [ slash, Thai_leknung ] };
+ key <AE03> { [ minus, Thai_leksong ] };
+ key <AE04> { [ Thai_phosamphao, Thai_leksam ] };
+ key <AE05> { [ Thai_thothung, Thai_leksi ] };
+ key <AE06> { [ Thai_sarau, Thai_sarauu ] };
+ key <AE07> { [ Thai_saraue, 0x1000e4e ] };
+ key <AE08> { [ Thai_khokhwai, Thai_lekha ] };
+ key <AE09> { [ Thai_totao, Thai_lekhok ] };
+ key <AE10> { [ Thai_chochan, Thai_lekchet ] };
+ key <AE11> { [ Thai_khokhai, Thai_lekpaet ] };
+ key <AE12> { [ Thai_chochang, Thai_lekkao ] };
+
+ key <AD01> { [ Thai_maiyamok, Thai_leksun ] };
+ key <AD02> { [ Thai_saraaimaimalai, quotedbl ] };
+ key <AD03> { [ Thai_saraam, Thai_dochada ] };
+ key <AD04> { [ Thai_phophan, Thai_thonangmontho ] };
+ key <AD05> { [ Thai_saraa, Thai_thothong ] };
+ key <AD06> { [ Thai_maihanakat, Thai_nikhahit ] };
+ key <AD07> { [ Thai_saraii, Thai_maitri ] };
+ key <AD08> { [ Thai_rorua, Thai_nonen ] };
+ key <AD09> {type[Group1]="THREE_LEVEL",
+ [ Thai_nonu, Thai_paiyannoi, 0x1000e5a] };
+ key <AD10> { [ Thai_yoyak, Thai_yoying ] };
+ key <AD11> { [ Thai_bobaimai, Thai_thothan ] };
+ key <AD12> { [ Thai_loling, comma ] };
+
+ key <AC01> { [ Thai_fofan, Thai_ru ] };
+ key <AC02> { [ Thai_hohip, Thai_khorakhang ] };
+ key <AC03> { [ Thai_kokai, Thai_topatak ] };
+ key <AC04> { [ Thai_dodek, Thai_sarao ] };
+ key <AC05> { [ Thai_sarae, Thai_chochoe ] };
+ key <AC06> { [ Thai_maitho, Thai_maitaikhu ] };
+ key <AC07> { [ Thai_maiek, Thai_maichattawa ] };
+ key <AC08> { [ Thai_saraaa, Thai_sorusi ] };
+ key <AC09> { [ Thai_sosua, Thai_sosala ] };
+ key <AC10> { [ Thai_wowaen, Thai_soso ] };
+ key <AC11> { [ Thai_ngongu, period ] };
+
+ key <AB01> { [ Thai_phophung, parenleft ] };
+ key <AB02> { [ Thai_popla, parenright ] };
+ key <AB03> { [ Thai_saraae, Thai_choching ] };
+ key <AB04> { [ Thai_oang, Thai_honokhuk ] };
+ key <AB05> { [ Thai_sarai, Thai_phinthu ] };
+ key <AB06> { [ Thai_sarauee, Thai_thanthakhat ] };
+ key <AB07> { [ Thai_thothahan, question ] };
+ key <AB08> { [ Thai_moma, Thai_thophuthao ] };
+ key <AB09> { [ Thai_saraaimaimuan, Thai_lochula ] };
+ key <AB10> { [ Thai_fofa, Thai_lu ] };
+
+ key <BKSL> { [ Thai_khokhon, Thai_khokhuat ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "olpc" {
+
+ name[Group1]= "Thailand";
+ // The OLPC thai layout
+ // walter@laptop.org
+
+ key <TLDE> { [ 0x1000E4F, 0x1000E5B ] };
+ key <AE01> { [ 0x1000E3F, 0x1000E45 ] };
+ key <AE02> { [ slash, 0x1000E51 ] };
+ key <AE03> { [ minus, 0x1000E52 ] };
+ key <AE04> { [ 0x1000E20, 0x1000E53 ] };
+ key <AE05> { [ 0x1000E16, 0x1000E54 ] };
+ key <AE06> { [ 0x1000E38, 0x1000E39 ] };
+ key <AE07> { [ 0x1000E36, 0x1000E4E ] };
+ key <AE08> { [ 0x1000E04, 0x1000E55 ] };
+ key <AE09> { [ 0x1000E15, 0x1000E56 ] };
+ key <AE10> { [ 0x1000E08, 0x1000E57 ] };
+ key <AE11> { [ 0x1000E02, 0x1000E58 ] };
+ key <AE12> { [ 0x1000E0A, 0x1000E59 ] };
+
+ key <AD01> { [ 0x1000E46, 0x1000E50 ] };
+ key <AD02> { [ 0x1000E44, quotedbl ] };
+ key <AD03> { [ 0x1000E33, 0x1000E0E ] };
+ key <AD04> { [ 0x1000E1E, 0x1000E11 ] };
+ key <AD05> { [ 0x1000E30, 0x1000E18 ] };
+ key <AD06> { [ 0x1000E31, 0x1000E4D ] };
+ key <AD07> { [ 0x1000E35, 0x1000E4A ] };
+ key <AD08> { [ 0x1000E23, 0x1000E13 ] };
+ key <AD09> { [ 0x1000E19, 0x1000E2F ] };
+ key <AD10> { [ 0x1000E22, 0x1000E0D ] };
+ key <AD11> { [ 0x1000E1A, 0x1000E10 ] };
+ key <AD12> { [ 0x1000E25, comma ] };
+
+ key <AC01> { [ 0x1000E1F, 0x1000E24 ] };
+ key <AC02> { [ 0x1000E2B, 0x1000E06 ] };
+ key <AC03> { [ 0x1000E01, 0x1000E0F ] };
+ key <AC04> { [ 0x1000E14, 0x1000E42 ] };
+ key <AC05> { [ 0x1000E40, 0x1000E0C ] };
+ key <AC06> { [ 0x1000E49, 0x1000E47 ] };
+ key <AC07> { [ 0x1000E48, 0x1000E4B ] };
+ key <AC08> { [ 0x1000E32, 0x1000E29 ] };
+ key <AC09> { [ 0x1000E2A, 0x1000E28 ] };
+ key <AC10> { [ 0x1000E27, 0x1000E0B ] };
+ key <AC11> { [ 0x1000E07, period ] };
+ key <BKSL> { [ 0x1000E05, 0x1000E03 ] };
+
+ key <AB01> { [ 0x1000E1C, parenleft ] };
+ key <AB02> { [ 0x1000E1B, parenright ] };
+ key <AB03> { [ 0x1000E41, 0x1000E09 ] };
+ key <AB04> { [ 0x1000E2D, 0x1000E2E ] };
+ key <AB05> { [ 0x1000E34, 0x1000E3A ] };
+ key <AB06> { [ 0x1000E37, 0x1000E4C ] };
+ key <AB07> { [ 0x1000E17, question ] };
+ key <AB08> { [ 0x1000E21, 0x1000E12 ] };
+ key <AB09> { [ 0x1000E43, 0x1000E2C ] };
+ key <AB10> { [ 0x1000E1D, 0x1000E26 ] };
+
+ include "group(olpc)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/tj b/xorg-server/xkeyboard-config/symbols/tj
index 0dcb29d43..fdaf7321d 100644
--- a/xorg-server/xkeyboard-config/symbols/tj
+++ b/xorg-server/xkeyboard-config/symbols/tj
@@ -1,139 +1,136 @@
-// $XKeyboardConfig$
-
-// 17/07/2008
-// -------------------------------------------------------------
-// Standard Tojiki Keyboard Layout, Official Standard
-// -------------------------------------------------------------
-// Created by Victor Ibragimov <victor.ibragimov@gmail.com>
-// Tajik Fedora & Software Localization Team
-// -------------------------------------------------------------
-// DUAL INPUT METHOD
-// --------------------------------------------------------------------
-// -------------- Tajiki Official Keyboard Layout----------------------
-// --------------------------------------------------------------------
-//
-
-partial default alphanumeric_keys
-xkb_symbols "basic"
-{
- name[Group1] = "Tajikistan";
-
- include "kpdl(comma)"
- include "level3(ralt_switch)"
-
- key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] }; // я Я
- key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] }; // ч Ч
- key <AB03> { [ Cyrillic_es, Cyrillic_ES ] }; // с С
- key <AB04> { [ Cyrillic_em, Cyrillic_EM ] }; // м М
- key <AB05> { [ Cyrillic_i, Cyrillic_I ] }; // и И
- key <AB06> { [ Cyrillic_te, Cyrillic_TE ] }; // т Т
- key <AB07> { [ 0x10004e3, 0x10004e2 ] }; // ӣ Ӣ
- key <AB08> { [ Cyrillic_be, Cyrillic_BE ] }; // б Б
- key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] }; // ю Ю
- key <AB10> { [ period, comma ] }; // . ,
- key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] }; // ф Ф
- key <AC02> { [ 0x10004b7, 0x10004b6 ] }; // ҷ Ҷ
- key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] }; // в В
- key <AC04> { [ Cyrillic_a, Cyrillic_A ] }; // а А
- key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] }; // п П
- key <AC06> { [ Cyrillic_er, Cyrillic_ER ] }; // р Р
- key <AC07> { [ Cyrillic_o, Cyrillic_O ] }; // о О
- key <AC08> { [ Cyrillic_el, Cyrillic_EL ] }; // л Л
- key <AC09> { [ Cyrillic_de, Cyrillic_DE ] }; // д Д
- key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] }; // ж Ж
- key <AC11> { [ Cyrillic_e, Cyrillic_E ] }; // э Э
- key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; // й Й
- key <AD02> { [ 0x100049b, 0x100049a ] }; // қ Қ
- key <AD03> { [ Cyrillic_u, Cyrillic_U ] }; // у У
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] }; // к К
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] }; // е Е
- key <AD06> { [ Cyrillic_en, Cyrillic_EN ] }; // н Н
- key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] }; // г Г
- key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] }; // ш Ш
- key <AD09> { [ 0x10004b3, 0x10004b2 ] }; // ҳ Ҳ
- key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] }; // з З
- key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] }; // х Х
- key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; // ъ Ъ
- key <AE01> { [ 1, exclam, 0x10000a7 ] }; // 1 ! §
- key <AE02> { [ 2, quotedbl, 0x10000ab, 0x10000bb ] }; // 2 " « »
- key <AE03> { [ 3, numerosign ] }; // 3 №
- key <AE04> { [ 4, semicolon ] }; // 4 ;
- key <AE05> { [ 5, percent ] }; // 5 %
- key <AE06> { [ 6, colon, 0x1002013 ] }; // 6 : –
- key <AE07> { [ 7, question, ampersand ] }; // 7 ? &
- key <AE08> { [ 8, asterisk ] }; // 8 *
- key <AE09> { [ 9, parenleft ] }; // 9 (
- key <AE10> { [ 0, parenright, 0x10000b0 ] }; // 0 ) °
- key <AE11> { [ 0x1000493, 0x1000492, minus, underscore ] }; // ғ Ғ - _
- key <AE12> { [ 0x10004ef, 0x10004ee, equal, plus ] }; // ӯ Ӯ = +
- key <BKSL> { [ backslash, slash ] }; // \ /
- key <LSGT> { [ slash, bar ] }; // / |
- key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] }; // ё Ё
-};
-
-// --------------------------------------------------------------------
-// -------------- Tojiki Rusi Keyboard Layout--------------------------
-// --------------------------------------------------------------------
-// AEN <aen@logic.ru>
-// 2001/12/23 by Leon Kanter <leon@blackcatlinux.com>
-// 2005/12/09 Valery Inozemtsev <shrek@altlinux.ru>
-// Pablo Saratxaga <pablo@mandrakesoft> (for the dead keys changes)
-// --------------------------------------------------------------------
-
-xkb_symbols "legacy"
-{
- name[Group1] = "Tajikistan - Legacy";
-
- include "kpdl(comma)"
- include "level3(ralt_switch)"
-
- key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] }; // я Я
- key <AB02> { [ Cyrillic_che, Cyrillic_CHE, 0x10004b7, 0x10004b6 ] }; // ч Ч ҷ Ҷ
- key <AB03> { [ Cyrillic_es, Cyrillic_ES ] }; // с С
- key <AB04> { [ Cyrillic_em, Cyrillic_EM ] }; // м М
- key <AB05> { [ Cyrillic_i, Cyrillic_I, 0x10004e3, 0x10004e2 ] }; // и И ӣ Ӣ
- key <AB06> { [ Cyrillic_te, Cyrillic_TE ] }; // т Т
- key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; // ь Ь
- key <AB08> { [ Cyrillic_be, Cyrillic_BE ] }; // б Б
- key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] }; // ю Ю
- key <AB10> { [ period, comma ] }; // . ,
- key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] }; // ф Ф
- key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] }; // ы Ы
- key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] }; // в В
- key <AC04> { [ Cyrillic_a, Cyrillic_A ] }; // а А
- key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] }; // п П
- key <AC06> { [ Cyrillic_er, Cyrillic_ER ] }; // р Р
- key <AC07> { [ Cyrillic_o, Cyrillic_O ] }; // о О
- key <AC08> { [ Cyrillic_el, Cyrillic_EL ] }; // л Л
- key <AC09> { [ Cyrillic_de, Cyrillic_DE ] }; // д Д
- key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] }; // ж Ж
- key <AC11> { [ Cyrillic_e, Cyrillic_E ] }; // э Э
- key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; // й Й
- key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] }; // ц Ц
- key <AD03> { [ Cyrillic_u, Cyrillic_U, 0x10004ef, 0x10004ee ] }; // у У ӯ Ӯ
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA, 0x100049b, 0x100049a ] }; // к К қ Қ
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] }; // е Е
- key <AD06> { [ Cyrillic_en, Cyrillic_EN ] }; // н Н
- key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, 0x1000493, 0x1000492 ] }; // г Г ғ Ғ
- key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] }; // ш Ш
- key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; // щ Щ
- key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] }; // з З
- key <AD11> { [ Cyrillic_ha, Cyrillic_HA, 0x10004b3, 0x10004b2 ] }; // х Х ҳ Ҳ
- key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; // ъ Ъ
- key <AE01> { [ 1, exclam, 0x10000a7 ] }; // 1 ! §
- key <AE02> { [ 2, quotedbl, 0x10000ab, 0x10000bb ] }; // 2 " « »
- key <AE03> { [ 3, numerosign ] }; // 3 №
- key <AE04> { [ 4, semicolon ] }; // 4 ;
- key <AE05> { [ 5, percent ] }; // 5 %
- key <AE06> { [ 6, colon, 0x1002013 ] }; // 6 : –
- key <AE07> { [ 7, question, ampersand ] }; // 7 ? &
- key <AE08> { [ 8, asterisk ] }; // 8 *
- key <AE09> { [ 9, parenleft ] }; // 9 (
- key <AE10> { [ 0, parenright ] }; // 0 )
- key <AE11> { [ minus, underscore ] }; // - _
- key <AE12> { [ equal, plus ] }; // = +
- key <BKSL> { [ backslash, slash ] }; // \ /
- key <LSGT> { [ slash, bar ] }; // / |
- key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] }; // ё Ё
-};
-
+// 17/07/2008
+// -------------------------------------------------------------
+// Standard Tojiki Keyboard Layout, Official Standard
+// -------------------------------------------------------------
+// Created by Victor Ibragimov <victor.ibragimov@gmail.com>
+// Tajik Fedora & Software Localization Team
+// -------------------------------------------------------------
+// DUAL INPUT METHOD
+// --------------------------------------------------------------------
+// -------------- Tajiki Official Keyboard Layout----------------------
+// --------------------------------------------------------------------
+//
+
+partial default alphanumeric_keys
+xkb_symbols "basic"
+{
+ name[Group1] = "Tajikistan";
+
+ include "kpdl(comma)"
+ include "level3(ralt_switch)"
+
+ key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] }; // я Я
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] }; // ч Ч
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES ] }; // с С
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM ] }; // м М
+ key <AB05> { [ Cyrillic_i, Cyrillic_I ] }; // и И
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE ] }; // т Т
+ key <AB07> { [ 0x10004e3, 0x10004e2 ] }; // ӣ Ӣ
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE ] }; // б Б
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] }; // ю Ю
+ key <AB10> { [ period, comma ] }; // . ,
+ key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] }; // ф Ф
+ key <AC02> { [ 0x10004b7, 0x10004b6 ] }; // ҷ Ҷ
+ key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] }; // в В
+ key <AC04> { [ Cyrillic_a, Cyrillic_A ] }; // а А
+ key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] }; // п П
+ key <AC06> { [ Cyrillic_er, Cyrillic_ER ] }; // р Р
+ key <AC07> { [ Cyrillic_o, Cyrillic_O ] }; // о О
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL ] }; // л Л
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE ] }; // д Д
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] }; // ж Ж
+ key <AC11> { [ Cyrillic_e, Cyrillic_E ] }; // э Э
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; // й Й
+ key <AD02> { [ 0x100049b, 0x100049a ] }; // қ Қ
+ key <AD03> { [ Cyrillic_u, Cyrillic_U ] }; // у У
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] }; // к К
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] }; // е Е
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN ] }; // н Н
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] }; // г Г
+ key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] }; // ш Ш
+ key <AD09> { [ 0x10004b3, 0x10004b2 ] }; // ҳ Ҳ
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] }; // з З
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] }; // х Х
+ key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; // ъ Ъ
+ key <AE01> { [ 1, exclam, 0x10000a7 ] }; // 1 ! §
+ key <AE02> { [ 2, quotedbl, 0x10000ab, 0x10000bb ] }; // 2 " « »
+ key <AE03> { [ 3, numerosign ] }; // 3 №
+ key <AE04> { [ 4, semicolon ] }; // 4 ;
+ key <AE05> { [ 5, percent ] }; // 5 %
+ key <AE06> { [ 6, colon, 0x1002013 ] }; // 6 : –
+ key <AE07> { [ 7, question, ampersand ] }; // 7 ? &
+ key <AE08> { [ 8, asterisk ] }; // 8 *
+ key <AE09> { [ 9, parenleft ] }; // 9 (
+ key <AE10> { [ 0, parenright, 0x10000b0 ] }; // 0 ) °
+ key <AE11> { [ 0x1000493, 0x1000492, minus, underscore ] }; // ғ Ғ - _
+ key <AE12> { [ 0x10004ef, 0x10004ee, equal, plus ] }; // ӯ Ӯ = +
+ key <BKSL> { [ backslash, slash ] }; // \ /
+ key <LSGT> { [ slash, bar ] }; // / |
+ key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] }; // ё Ё
+};
+
+// --------------------------------------------------------------------
+// -------------- Tojiki Rusi Keyboard Layout--------------------------
+// --------------------------------------------------------------------
+// AEN <aen@logic.ru>
+// 2001/12/23 by Leon Kanter <leon@blackcatlinux.com>
+// 2005/12/09 Valery Inozemtsev <shrek@altlinux.ru>
+// Pablo Saratxaga <pablo@mandrakesoft> (for the dead keys changes)
+// --------------------------------------------------------------------
+
+xkb_symbols "legacy"
+{
+ name[Group1] = "Tajikistan - Legacy";
+
+ include "kpdl(comma)"
+ include "level3(ralt_switch)"
+
+ key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] }; // я Я
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE, 0x10004b7, 0x10004b6 ] }; // ч Ч ҷ Ҷ
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES ] }; // с С
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM ] }; // м М
+ key <AB05> { [ Cyrillic_i, Cyrillic_I, 0x10004e3, 0x10004e2 ] }; // и И ӣ Ӣ
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE ] }; // т Т
+ key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; // ь Ь
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE ] }; // б Б
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] }; // ю Ю
+ key <AB10> { [ period, comma ] }; // . ,
+ key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] }; // ф Ф
+ key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] }; // ы Ы
+ key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] }; // в В
+ key <AC04> { [ Cyrillic_a, Cyrillic_A ] }; // а А
+ key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] }; // п П
+ key <AC06> { [ Cyrillic_er, Cyrillic_ER ] }; // р Р
+ key <AC07> { [ Cyrillic_o, Cyrillic_O ] }; // о О
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL ] }; // л Л
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE ] }; // д Д
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] }; // ж Ж
+ key <AC11> { [ Cyrillic_e, Cyrillic_E ] }; // э Э
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; // й Й
+ key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] }; // ц Ц
+ key <AD03> { [ Cyrillic_u, Cyrillic_U, 0x10004ef, 0x10004ee ] }; // у У ӯ Ӯ
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA, 0x100049b, 0x100049a ] }; // к К қ Қ
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] }; // е Е
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN ] }; // н Н
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, 0x1000493, 0x1000492 ] }; // г Г ғ Ғ
+ key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] }; // ш Ш
+ key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; // щ Щ
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] }; // з З
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA, 0x10004b3, 0x10004b2 ] }; // х Х ҳ Ҳ
+ key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; // ъ Ъ
+ key <AE01> { [ 1, exclam, 0x10000a7 ] }; // 1 ! §
+ key <AE02> { [ 2, quotedbl, 0x10000ab, 0x10000bb ] }; // 2 " « »
+ key <AE03> { [ 3, numerosign ] }; // 3 №
+ key <AE04> { [ 4, semicolon ] }; // 4 ;
+ key <AE05> { [ 5, percent ] }; // 5 %
+ key <AE06> { [ 6, colon, 0x1002013 ] }; // 6 : –
+ key <AE07> { [ 7, question, ampersand ] }; // 7 ? &
+ key <AE08> { [ 8, asterisk ] }; // 8 *
+ key <AE09> { [ 9, parenleft ] }; // 9 (
+ key <AE10> { [ 0, parenright ] }; // 0 )
+ key <AE11> { [ minus, underscore ] }; // - _
+ key <AE12> { [ equal, plus ] }; // = +
+ key <BKSL> { [ backslash, slash ] }; // \ /
+ key <LSGT> { [ slash, bar ] }; // / |
+ key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] }; // ё Ё
+};
diff --git a/xorg-server/xkeyboard-config/symbols/tm b/xorg-server/xkeyboard-config/symbols/tm
index 241b4e822..56bd85d1e 100644
--- a/xorg-server/xkeyboard-config/symbols/tm
+++ b/xorg-server/xkeyboard-config/symbols/tm
@@ -1,49 +1,45 @@
-// $XKeyboardConfig$
-
-// $XFree86: xc/programs/xkbcomp/symbols/tm,v 0.2 2009/04/02 14:32:05 pascal Exp $
-// Nazar Annagurban <nazar_xg@hotmail.com>, 2009
-
-// Default layout (based on Vista Turkmen layout)
-default partial
-xkb_symbols "basic" {
- name[Group1]="Turkmenistan";
-
- include "us"
- key <TLDE> { [ zcaron, Zcaron, grave, asciitilde ] };
-
- key <AD01> { [ adiaeresis, Adiaeresis, q, Q ] };
- key <AD11> { [ ncaron, Ncaron, bracketleft, braceleft ] };
- key <AD12> { [odiaeresis, Odiaeresis, bracketright, braceright ] };
-
- key <AB02> { [udiaeresis, Udiaeresis, x, X ] };
- key <AB03> { [ ccedilla, Ccedilla, c, C ] };
- key <AB04> { [ yacute, Yacute, v, V ] };
-
- key <BKSL> { [ scedilla, Scedilla, backslash, bar ] };
-
- include "level3(ralt_switch)"
-};
-
-// Turkmen Alt-Q Layout
-// This layout provides turkmen letter via the AltGr key
-partial
-xkb_symbols "alt" {
- name[Group1]="Turkmenistan - Alt-Q";
-
- include "us"
-
- key <AD06> { [ y, Y, yacute, Yacute ] };
- key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
- key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
-
- key <AC01> { [ a, A, adiaeresis, Adiaeresis ] };
- key <AC02> { [ s, S, scedilla, Scedilla ] };
-
- key <AB01> { [ z, Z, zcaron, Zcaron ] };
- key <AB03> { [ c, C, ccedilla, Ccedilla ] };
- key <AB06> { [ n, N, ncaron, Ncaron ] };
-
- include "level3(ralt_switch)"
-
-};
-
+// Nazar Annagurban <nazar_xg@hotmail.com>, 2009
+
+// Default layout (based on Vista Turkmen layout)
+default partial
+xkb_symbols "basic" {
+ name[Group1]="Turkmenistan";
+
+ include "us"
+ key <TLDE> { [ zcaron, Zcaron, grave, asciitilde ] };
+
+ key <AD01> { [ adiaeresis, Adiaeresis, q, Q ] };
+ key <AD11> { [ ncaron, Ncaron, bracketleft, braceleft ] };
+ key <AD12> { [odiaeresis, Odiaeresis, bracketright, braceright ] };
+
+ key <AB02> { [udiaeresis, Udiaeresis, x, X ] };
+ key <AB03> { [ ccedilla, Ccedilla, c, C ] };
+ key <AB04> { [ yacute, Yacute, v, V ] };
+
+ key <BKSL> { [ scedilla, Scedilla, backslash, bar ] };
+
+ include "level3(ralt_switch)"
+};
+
+// Turkmen Alt-Q Layout
+// This layout provides turkmen letter via the AltGr key
+partial
+xkb_symbols "alt" {
+ name[Group1]="Turkmenistan - Alt-Q";
+
+ include "us"
+
+ key <AD06> { [ y, Y, yacute, Yacute ] };
+ key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
+ key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
+
+ key <AC01> { [ a, A, adiaeresis, Adiaeresis ] };
+ key <AC02> { [ s, S, scedilla, Scedilla ] };
+
+ key <AB01> { [ z, Z, zcaron, Zcaron ] };
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+ key <AB06> { [ n, N, ncaron, Ncaron ] };
+
+ include "level3(ralt_switch)"
+
+};
diff --git a/xorg-server/xkeyboard-config/symbols/tr b/xorg-server/xkeyboard-config/symbols/tr
index c217a7af0..9e9758c0e 100644
--- a/xorg-server/xkeyboard-config/symbols/tr
+++ b/xorg-server/xkeyboard-config/symbols/tr
@@ -1,356 +1,352 @@
-// $XKeyboardConfig$
-
-// based on
-// Turkish keyboard symbols for PC and xkb
-// This file distributed without any expressed or implied warranty
-// Nilgün Belma Bugüner <nilgun@belgeler.org>, 2005
-//
-// $XFree86: xc/programs/xkbcomp/symbols/tr,v 1.5 2003/04/19 12:22:12 pascal Exp $
-
-//Default Layout (Turkish Q)
-default partial
-xkb_symbols "basic" {
-
- include "latin"
-
- name[Group1]="Turkey";
-
- key <AE01> { [ 1, exclam, greater, exclamdown ] };
- key <AE02> { [ 2, apostrophe, sterling, twosuperior ] };
- key <AE03> { [ 3, asciicircum, numbersign, threesuperior ] };
- key <AE04> { [ 4, plus, dollar, onequarter ] };
- key <AE06> { [ 6, ampersand, threequarters, VoidSymbol ] };
- key <AE07> { [ 7, slash, braceleft, VoidSymbol ] };
- key <AE08> { [ 8, parenleft, bracketleft, VoidSymbol ] };
- key <AE09> { [ 9, parenright, bracketright, plusminus ] };
- key <AE10> { [ 0, equal, braceright, degree ] };
- key <AE11> { [ asterisk, question, backslash, questiondown ] };
- key <AE12> { [ minus, underscore, bar, VoidSymbol ] };
-
- key <AD02> { [ w, W, VoidSymbol, VoidSymbol ] };
- key <AD03> { [ e, E, EuroSign, VoidSymbol ] };
- key <AD05> { [ t, T, trademark, VoidSymbol ] };
- key <AD07> { [ u, U, ucircumflex, Ucircumflex ] };
- key <AD08> { type[group1] = "FOUR_LEVEL_ALPHABETIC",
- [ idotless, I, icircumflex, Icircumflex ] };
- key <AD09> { [ o, O, ocircumflex, Ocircumflex ] };
- key <AD10> { [ p, P, VoidSymbol, VoidSymbol ] };
- key <AD11> { [ gbreve, Gbreve ] };
- key <AD12> { [udiaeresis, Udiaeresis, asciitilde, dead_macron ] };
-
- key <AC01> { [ a, A, acircumflex, Acircumflex ] };
- key <AC02> { [ s, S, section, VoidSymbol ] };
- key <AC03> { [ d, D, VoidSymbol, VoidSymbol ] };
- key <AC04> { [ f, F, ordfeminine, VoidSymbol ] };
- key <AC05> { [ g, G, VoidSymbol, VoidSymbol ] };
- key <AC06> { [ h, H, VoidSymbol, VoidSymbol ] };
- key <AC08> { [ k, K, VoidSymbol, VoidSymbol ] };
- key <AC09> { [ l, L, VoidSymbol, VoidSymbol ] };
- key <AC10> { [ scedilla, Scedilla, acute, dead_acute ] };
- key <AC11> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",
- [ i, Iabovedot, apostrophe, dead_caron ] };
- key <TLDE> { [ quotedbl, eacute, less, degree ] };
-
- key <BKSL> { [ comma, semicolon, grave, dead_grave ] };
- key <LSGT> { [ less, greater, bar, brokenbar ] };
- key <AB08> { [odiaeresis, Odiaeresis, multiply, VoidSymbol ] };
- key <AB09> { [ ccedilla, Ccedilla, periodcentered, division ] };
- key <AB10> { [ period, colon, dead_abovedot, dead_abovedot ] };
-
- include "kpdl(comma)"
- include "level3(ralt_switch)"
-};
-
-
-// Turkish F Layout
-partial
-xkb_symbols "f" {
-
- include "latin"
-
- name[Group1]="Turkey - (F)";
-
- key <AE01> { [ 1, exclam, onesuperior, exclamdown ] };
- key <AE02> { [ 2, quotedbl, twosuperior, VoidSymbol ] };
- key <AE03> { [ 3, asciicircum, numbersign, threesuperior ] };
- key <AE04> { [ 4, dollar, onequarter, VoidSymbol ] };
- key <AE06> { [ 6, ampersand, threequarters, VoidSymbol ] };
- key <AE07> { [ 7, apostrophe, braceleft, VoidSymbol ] };
- key <AE08> { [ 8, parenleft, bracketleft, VoidSymbol ] };
- key <AE09> { [ 9, parenright, bracketright, plusminus ] };
- key <AE10> { [ 0, equal, braceright, degree ] };
- key <AE11> { [ slash, question, backslash, questiondown ] };
- key <AE12> { [ minus, underscore, bar, VoidSymbol ] };
-
- key <AD01> { [ f, F, at, VoidSymbol ] };
- key <AD02> { [ g, G, VoidSymbol, VoidSymbol ] };
- key <AD03> { [ gbreve, Gbreve, VoidSymbol, VoidSymbol ] };
- key <AD04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",
- [ idotless, I, paragraph, VoidSymbol ] };
- key <AD05> { [ o, O, ocircumflex, Ocircumflex ] };
- key <AD06> { [ d, D, yen, VoidSymbol ] };
- key <AD07> { [ r, R, registered, VoidSymbol ] };
- key <AD08> { [ n, N, VoidSymbol, VoidSymbol ] };
- key <AD09> { [ h, H, degree, VoidSymbol ] };
- key <AD10> { [ p, P, sterling, VoidSymbol ] };
- key <AD11> { [ q, Q, dead_diaeresis, dead_abovering ] };
- key <AD12> { [ w, W, asciitilde, dead_breve ] };
-
- key <AC01> { [ u, U, ucircumflex, Ucircumflex ] };
- key <AC02> { type[group1] = "FOUR_LEVEL_ALPHABETIC",
- [ i, Iabovedot, icircumflex, Icircumflex ] };
- key <AC03> { [ e, E, EuroSign, VoidSymbol ] };
- key <AC04> { [ a, A, acircumflex, Acircumflex ] };
- key <AC05> { [udiaeresis, Udiaeresis, ucircumflex, Ucircumflex ] };
- key <AC06> { [ t, T, trademark, VoidSymbol ] };
- key <AC07> { [ k, K, VoidSymbol, VoidSymbol ] };
- key <AC08> { [ m, M, mu, VoidSymbol ] };
- key <AC09> { [ l, L, VoidSymbol, VoidSymbol ] };
- key <AC10> { [ y, Y, acute, dead_acute ] };
- key <AC11> { [ scedilla, Scedilla, numbersign, dead_caron ] };
- key <TLDE> { [ plus, asterisk, notsign, plusminus ] };
-
- key <BKSL> { [ x, X, grave, dead_grave ] };
- key <AB01> { [ j, J, guillemotleft, VoidSymbol ] };
- key <AB02> { [odiaeresis, Odiaeresis, guillemotright, VoidSymbol ] };
- key <AB03> { [ v, V, leftdoublequotemark, VoidSymbol ] };
- key <AB04> { [ c, C, cent, copyright ] };
- key <AB05> { [ ccedilla, Ccedilla, rightdoublequotemark, VoidSymbol] };
- key <AB06> { [ z, Z, VoidSymbol, VoidSymbol ] };
- key <AB07> { [ s, S, section, VoidSymbol ] };
- key <AB08> { [ b, B, multiply, nobreakspace ] };
- key <AB09> { [ period, colon, division, dead_abovedot] };
- key <AB10> { [ comma, semicolon, periodcentered, VoidSymbol ] };
- key <LSGT> { [ less, greater, bar, brokenbar ] };
-
- include "kpdl(comma)"
- include "level3(ralt_switch)"
-};
-
-// Turkish Alt-Q Layout
-partial
-xkb_symbols "alt" {
-
- include "latin"
-
- name[Group1]="Turkey - Alt-Q";
-
- key <AE07> { [ 7, ampersand, lowleftcorner, upleftcorner ] };
- key <AE08> { [ 8, asterisk, leftt, topt ] };
- key <AE09> { [ 9, parenleft, rightt, bott ] };
- key <AE10> { [ 0, parenright, lowrightcorner, uprightcorner ] };
- key <AE11> { [ minus, underscore, horizlinescan5, vertbar ] };
- key <AE12> { [ equal, plus, crossinglines ] };
-
- key <AD03> { [ e, E, EuroSign, VoidSymbol ] };
-// key <AD05> { [ t, T, trademark, VoidSymbol >
- key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
- key <AD08> { [ i, I, idotless, Iabovedot ] };
- key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
- key <AC01> { [ a, A, acircumflex, Acircumflex ] };
- key <AC02> { [ s, S, scedilla, Scedilla ] };
- key <AC05> { [ g, G, gbreve, Gbreve ] };
-
- key <AB03> { [ c, C, ccedilla, Ccedilla ] };
-
- include "level3(ralt_switch)"
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "Sundeadkeys" {
-
- // For naming consistency
- include "tr(basic)"
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "sundeadkeys" {
-
- // For naming consistency
- include "tr(Sundeadkeys)"
-
- name[Group1]="Turkey - Sun dead keys";
-};
-
-// Kurdish Q Layout
-// Erdal Ronahi <erdal.ronahi@gmail.com>, 2006
-// http://ferheng.org
-// http://www.pckurd.net
-
-partial
-xkb_symbols "ku" {
-
- include "tr(basic)"
-
- name[Group1]="Turkey - Kurdish, Latin Q";
-
- key <AD08> { [ i, I, idotless, I ] };
- key <AD11> { [ x, X, gbreve, Gbreve ] };
- key <AD12> { [ucircumflex, Ucircumflex, asciitilde, dead_macron] };
- key <AC11> { [icircumflex, Icircumflex, apostrophe, dead_caron ] };
- key <AB08> { [ecircumflex, Ecircumflex, odiaeresis, Odiaeresis ] };
-};
-
-// Kurdish F Layout
-partial
-xkb_symbols "ku_f" {
-
- include "tr(f)"
-
- name[Group1]="Turkey - Kurdish, (F)";
-
- key <AD03> { [ x, X, gbreve, Gbreve] };
- key <AD04> { [ i, I, paragraph, VoidSymbol ] };
- key <AD05> { [ o, O, ocircumflex, Ocircumflex ] };
-
- key <AC01> { [ ucircumflex, Ucircumflex, udiaeresis, Udiaeresis ] };
- key <AC02> { [ icircumflex, Icircumflex, i, Iabovedot ] };
- key <AC05> { [ u, U, udiaeresis, Udiaeresis ] };
- key <AB02> { [ecircumflex, Ecircumflex, odiaeresis, Odiaeresis ] };
-
-};
-
-// Kurdish Alt-Q Layout
-partial
-xkb_symbols "ku_alt" {
-
- include "tr(alt)"
-
- name[Group1]="Turkey - Kurdish, Latin Alt-Q";
-
- key <AD03> { [ e, E, ecircumflex, Ecircumflex ] };
- key <AD07> { [ u, U, ucircumflex, Ucircumflex ] };
- key <AD08> { [ i, I, icircumflex, Icircumflex ] };
- key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
-};
-
-// Turkish international Q Layout
-// Alexis Pellicier <alexis.pellicier@nds.k12.tr>, 2007
-partial
-xkb_symbols "intl" {
- include "latin"
-
- name[Group1]="Turkey - International (with dead keys)";
-
- key <AE01> { type[group1] = "FOUR_LEVEL", [ 1, exclam, onesuperior, exclamdown ] };
- key <AE02> { type[group1] = "FOUR_LEVEL", [ 2, apostrophe, sterling, twosuperior ] };
- key <AE03> { type[group1] = "FOUR_LEVEL", [ 3, dead_circumflex, numbersign, threesuperior ] };
- key <AE04> { type[group1] = "FOUR_LEVEL", [ 4, plus, dollar, onequarter ] };
- key <AE06> { type[group1] = "FOUR_LEVEL", [ 6, ampersand, threequarters, VoidSymbol ] };
- key <AE07> { type[group1] = "FOUR_LEVEL", [ 7, slash, braceleft, VoidSymbol ] };
- key <AE08> { type[group1] = "FOUR_LEVEL", [ 8, parenleft, bracketleft, VoidSymbol ] };
- key <AE09> { type[group1] = "FOUR_LEVEL", [ 9, parenright, bracketright, plusminus ] };
- key <AE10> { type[group1] = "FOUR_LEVEL", [ 0, equal, braceright, degree ] };
- key <AE11> { type[group1] = "FOUR_LEVEL", [ asterisk, question, backslash, questiondown ] };
- key <AE12> { type[group1] = "FOUR_LEVEL", [ minus, underscore, division, VoidSymbol ] };
- key <AD02> { [ w, W, VoidSymbol, VoidSymbol ] };
- key <AD03> { [ e, E, EuroSign, cent ] };
- key <AD05> { [ t, T, trademark, VoidSymbol ] };
- key <AD07> { [ u, U, ucircumflex, Ucircumflex ] };
- key <AD08> { [ idotless, I, icircumflex, Icircumflex ] };
- key <AD09> { [ o, O, ocircumflex, Ocircumflex ] };
- key <AD10> { [ p, P, VoidSymbol, VoidSymbol ] };
- key <AD11> { [ gbreve, Gbreve, dead_diaeresis ] };
- key <AD12> { [udiaeresis, Udiaeresis, dead_tilde, dead_macron ] };
- key <AC01> { [ a, A, acircumflex, Acircumflex ] };
- key <AC02> { [ s, S, section, VoidSymbol ] };
- key <AC03> { [ d, D, VoidSymbol, VoidSymbol ] };
- key <AC04> { [ f, F, ordfeminine, VoidSymbol ] };
- key <AC05> { [ g, G, VoidSymbol, VoidSymbol ] };
- key <AC06> { [ h, H, VoidSymbol, VoidSymbol ] };
- key <AC08> { [ k, K, VoidSymbol, VoidSymbol ] };
- key <AC09> { [ l, L, VoidSymbol, VoidSymbol ] };
- key <AC10> { [ scedilla, Scedilla, dead_acute, dead_acute ] };
- key <AC11> { [ i, Iabovedot, apostrophe, dead_caron ] };
- key <TLDE> { type[group1] = "FOUR_LEVEL",[ quotedbl, eacute, plusminus, degree ] };
- key <BKSL> { type[group1] = "FOUR_LEVEL",[ comma, semicolon, dead_grave, dead_grave ] };
- key <LSGT> { type[group1] = "FOUR_LEVEL",[ less, greater, bar, brokenbar ] };
- key <AB08> { [odiaeresis, Odiaeresis, multiply, VoidSymbol ] };
- key <AB09> { [ ccedilla, Ccedilla, periodcentered, division ] };
- key <AB10> { type[group1] = "FOUR_LEVEL",[ period, colon, dead_abovedot, dead_abovedot ] };
-
- include "nbsp(level3)"
- include "level3(ralt_switch)"
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "olpc" {
- name[Group1]= "Turkey";
- include "tr(intl)"
-
- key <AE01> { [ 1, exclam, VoidSymbol, VoidSymbol ] };
- key <AE06> { [ 6, ampersand, VoidSymbol, VoidSymbol ] };
- key <AE12> { type[group1] = "FOUR_LEVEL", [ minus, underscore, bar, VoidSymbol ] };
-
-
- key <AB03> { [ c, C, leftdoublequotemark, VoidSymbol ] };
- key <AB04> { [ v, V, rightdoublequotemark, VoidSymbol ] };
- key <AB05> { [ b, B, VoidSymbol, VoidSymbol ] };
- key <AB08> { [odiaeresis, Odiaeresis, VoidSymbol, VoidSymbol ] };
-
- key <AB09> { [ ccedilla, Ccedilla, multiply, VoidSymbol ] };
- key <AB10> { [ period, colon, division, dead_abovedot ] };
-
- key <I219> { [ less, greater, VoidSymbol, VoidSymbol ] };
-
-};
-
-// Crimean Tatar (Crimean Turkish) layouts.
-// First released: 2009.
-// These layouts are currently experimental. In particular, the mapping of letter 'x',
-// included for foreign words and shortcuts, might change in the future...
-// Reşat SABIQ <tilde.birlik @ gmail . com>
-// Özgür Qarahan <qarahan @ gmail . com>
-
-// Crimean Tatar (Crimean Turkish) Q Layout
-partial
-xkb_symbols "crh" {
-
- include "tr(basic)"
-
- name[Group1]="Turkey - Crimean Tatar (Turkish Q)";
-
- key <AE11> { [ x, X, asterisk, question ] };
-
- key <AC04> { [ f, F, iacute, Iacute ] };
- key <AC07> { [ j, J, ibreve, Ibreve ] };
- key <TLDE> { [ quotedbl, backslash, less, degree ] };
-
- key <AB02> { [ ntilde, Ntilde, guillemotright, greater ] };
-};
-
-// Crimean Tatar (Crimean Turkish) F Layout
-partial
-xkb_symbols "crh_f" {
-
- include "tr(f)"
-
- name[Group1]="Turkey - Crimean Tatar (Turkish F)";
-
- key <AE11> { [ x, X, slash, question ] };
-
- key <AD04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",
- [ idotless, I, iacute, Iacute ] };
-
- key <AC07> { [ k, K, ibreve, Ibreve ] };
- key <TLDE> { [ plus, asterisk, backslash, plusminus ] };
-
- key <BKSL> { [ ntilde, Ntilde, grave, dead_grave ] };
-};
-
-// Crimean Tatar (Crimean Turkish) Alt-Q Layout
-partial
-xkb_symbols "crh_alt" {
-
- include "tr(alt)"
-
- name[Group1]="Turkey - Crimean Tatar (Turkish Alt-Q)";
-
- key <AC04> { [ f, F, iacute, Iacute ] };
- key <AC07> { [ j, J, ibreve, Ibreve ] };
-
- key <AB06> { [ n, N, ntilde, Ntilde ] };
-};
+// based on
+// Turkish keyboard symbols for PC and xkb
+// This file distributed without any expressed or implied warranty
+// Nilgün Belma Bugüner <nilgun@belgeler.org>, 2005
+
+//Default Layout (Turkish Q)
+default partial
+xkb_symbols "basic" {
+
+ include "latin"
+
+ name[Group1]="Turkey";
+
+ key <AE01> { [ 1, exclam, greater, exclamdown ] };
+ key <AE02> { [ 2, apostrophe, sterling, twosuperior ] };
+ key <AE03> { [ 3, asciicircum, numbersign, threesuperior ] };
+ key <AE04> { [ 4, plus, dollar, onequarter ] };
+ key <AE06> { [ 6, ampersand, threequarters, VoidSymbol ] };
+ key <AE07> { [ 7, slash, braceleft, VoidSymbol ] };
+ key <AE08> { [ 8, parenleft, bracketleft, VoidSymbol ] };
+ key <AE09> { [ 9, parenright, bracketright, plusminus ] };
+ key <AE10> { [ 0, equal, braceright, degree ] };
+ key <AE11> { [ asterisk, question, backslash, questiondown ] };
+ key <AE12> { [ minus, underscore, bar, VoidSymbol ] };
+
+ key <AD02> { [ w, W, VoidSymbol, VoidSymbol ] };
+ key <AD03> { [ e, E, EuroSign, VoidSymbol ] };
+ key <AD05> { [ t, T, trademark, VoidSymbol ] };
+ key <AD07> { [ u, U, ucircumflex, Ucircumflex ] };
+ key <AD08> { type[group1] = "FOUR_LEVEL_ALPHABETIC",
+ [ idotless, I, icircumflex, Icircumflex ] };
+ key <AD09> { [ o, O, ocircumflex, Ocircumflex ] };
+ key <AD10> { [ p, P, VoidSymbol, VoidSymbol ] };
+ key <AD11> { [ gbreve, Gbreve ] };
+ key <AD12> { [udiaeresis, Udiaeresis, asciitilde, dead_macron ] };
+
+ key <AC01> { [ a, A, acircumflex, Acircumflex ] };
+ key <AC02> { [ s, S, section, VoidSymbol ] };
+ key <AC03> { [ d, D, VoidSymbol, VoidSymbol ] };
+ key <AC04> { [ f, F, ordfeminine, VoidSymbol ] };
+ key <AC05> { [ g, G, VoidSymbol, VoidSymbol ] };
+ key <AC06> { [ h, H, VoidSymbol, VoidSymbol ] };
+ key <AC08> { [ k, K, VoidSymbol, VoidSymbol ] };
+ key <AC09> { [ l, L, VoidSymbol, VoidSymbol ] };
+ key <AC10> { [ scedilla, Scedilla, acute, dead_acute ] };
+ key <AC11> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",
+ [ i, Iabovedot, apostrophe, dead_caron ] };
+ key <TLDE> { [ quotedbl, eacute, less, degree ] };
+
+ key <BKSL> { [ comma, semicolon, grave, dead_grave ] };
+ key <LSGT> { [ less, greater, bar, brokenbar ] };
+ key <AB08> { [odiaeresis, Odiaeresis, multiply, VoidSymbol ] };
+ key <AB09> { [ ccedilla, Ccedilla, periodcentered, division ] };
+ key <AB10> { [ period, colon, dead_abovedot, dead_abovedot ] };
+
+ include "kpdl(comma)"
+ include "level3(ralt_switch)"
+};
+
+
+// Turkish F Layout
+partial
+xkb_symbols "f" {
+
+ include "latin"
+
+ name[Group1]="Turkey - (F)";
+
+ key <AE01> { [ 1, exclam, onesuperior, exclamdown ] };
+ key <AE02> { [ 2, quotedbl, twosuperior, VoidSymbol ] };
+ key <AE03> { [ 3, asciicircum, numbersign, threesuperior ] };
+ key <AE04> { [ 4, dollar, onequarter, VoidSymbol ] };
+ key <AE06> { [ 6, ampersand, threequarters, VoidSymbol ] };
+ key <AE07> { [ 7, apostrophe, braceleft, VoidSymbol ] };
+ key <AE08> { [ 8, parenleft, bracketleft, VoidSymbol ] };
+ key <AE09> { [ 9, parenright, bracketright, plusminus ] };
+ key <AE10> { [ 0, equal, braceright, degree ] };
+ key <AE11> { [ slash, question, backslash, questiondown ] };
+ key <AE12> { [ minus, underscore, bar, VoidSymbol ] };
+
+ key <AD01> { [ f, F, at, VoidSymbol ] };
+ key <AD02> { [ g, G, VoidSymbol, VoidSymbol ] };
+ key <AD03> { [ gbreve, Gbreve, VoidSymbol, VoidSymbol ] };
+ key <AD04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",
+ [ idotless, I, paragraph, VoidSymbol ] };
+ key <AD05> { [ o, O, ocircumflex, Ocircumflex ] };
+ key <AD06> { [ d, D, yen, VoidSymbol ] };
+ key <AD07> { [ r, R, registered, VoidSymbol ] };
+ key <AD08> { [ n, N, VoidSymbol, VoidSymbol ] };
+ key <AD09> { [ h, H, degree, VoidSymbol ] };
+ key <AD10> { [ p, P, sterling, VoidSymbol ] };
+ key <AD11> { [ q, Q, dead_diaeresis, dead_abovering ] };
+ key <AD12> { [ w, W, asciitilde, dead_breve ] };
+
+ key <AC01> { [ u, U, ucircumflex, Ucircumflex ] };
+ key <AC02> { type[group1] = "FOUR_LEVEL_ALPHABETIC",
+ [ i, Iabovedot, icircumflex, Icircumflex ] };
+ key <AC03> { [ e, E, EuroSign, VoidSymbol ] };
+ key <AC04> { [ a, A, acircumflex, Acircumflex ] };
+ key <AC05> { [udiaeresis, Udiaeresis, ucircumflex, Ucircumflex ] };
+ key <AC06> { [ t, T, trademark, VoidSymbol ] };
+ key <AC07> { [ k, K, VoidSymbol, VoidSymbol ] };
+ key <AC08> { [ m, M, mu, VoidSymbol ] };
+ key <AC09> { [ l, L, VoidSymbol, VoidSymbol ] };
+ key <AC10> { [ y, Y, acute, dead_acute ] };
+ key <AC11> { [ scedilla, Scedilla, numbersign, dead_caron ] };
+ key <TLDE> { [ plus, asterisk, notsign, plusminus ] };
+
+ key <BKSL> { [ x, X, grave, dead_grave ] };
+ key <AB01> { [ j, J, guillemotleft, VoidSymbol ] };
+ key <AB02> { [odiaeresis, Odiaeresis, guillemotright, VoidSymbol ] };
+ key <AB03> { [ v, V, leftdoublequotemark, VoidSymbol ] };
+ key <AB04> { [ c, C, cent, copyright ] };
+ key <AB05> { [ ccedilla, Ccedilla, rightdoublequotemark, VoidSymbol] };
+ key <AB06> { [ z, Z, VoidSymbol, VoidSymbol ] };
+ key <AB07> { [ s, S, section, VoidSymbol ] };
+ key <AB08> { [ b, B, multiply, nobreakspace ] };
+ key <AB09> { [ period, colon, division, dead_abovedot] };
+ key <AB10> { [ comma, semicolon, periodcentered, VoidSymbol ] };
+ key <LSGT> { [ less, greater, bar, brokenbar ] };
+
+ include "kpdl(comma)"
+ include "level3(ralt_switch)"
+};
+
+// Turkish Alt-Q Layout
+partial
+xkb_symbols "alt" {
+
+ include "latin"
+
+ name[Group1]="Turkey - Alt-Q";
+
+ key <AE07> { [ 7, ampersand, lowleftcorner, upleftcorner ] };
+ key <AE08> { [ 8, asterisk, leftt, topt ] };
+ key <AE09> { [ 9, parenleft, rightt, bott ] };
+ key <AE10> { [ 0, parenright, lowrightcorner, uprightcorner ] };
+ key <AE11> { [ minus, underscore, horizlinescan5, vertbar ] };
+ key <AE12> { [ equal, plus, crossinglines ] };
+
+ key <AD03> { [ e, E, EuroSign, VoidSymbol ] };
+// key <AD05> { [ t, T, trademark, VoidSymbol >
+ key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
+ key <AD08> { [ i, I, idotless, Iabovedot ] };
+ key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
+ key <AC01> { [ a, A, acircumflex, Acircumflex ] };
+ key <AC02> { [ s, S, scedilla, Scedilla ] };
+ key <AC05> { [ g, G, gbreve, Gbreve ] };
+
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+
+ include "level3(ralt_switch)"
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "Sundeadkeys" {
+
+ // For naming consistency
+ include "tr(basic)"
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "sundeadkeys" {
+
+ // For naming consistency
+ include "tr(Sundeadkeys)"
+
+ name[Group1]="Turkey - Sun dead keys";
+};
+
+// Kurdish Q Layout
+// Erdal Ronahi <erdal.ronahi@gmail.com>, 2006
+// http://ferheng.org
+// http://www.pckurd.net
+
+partial
+xkb_symbols "ku" {
+
+ include "tr(basic)"
+
+ name[Group1]="Turkey - Kurdish, Latin Q";
+
+ key <AD08> { [ i, I, idotless, I ] };
+ key <AD11> { [ x, X, gbreve, Gbreve ] };
+ key <AD12> { [ucircumflex, Ucircumflex, asciitilde, dead_macron] };
+ key <AC11> { [icircumflex, Icircumflex, apostrophe, dead_caron ] };
+ key <AB08> { [ecircumflex, Ecircumflex, odiaeresis, Odiaeresis ] };
+};
+
+// Kurdish F Layout
+partial
+xkb_symbols "ku_f" {
+
+ include "tr(f)"
+
+ name[Group1]="Turkey - Kurdish, (F)";
+
+ key <AD03> { [ x, X, gbreve, Gbreve] };
+ key <AD04> { [ i, I, paragraph, VoidSymbol ] };
+ key <AD05> { [ o, O, ocircumflex, Ocircumflex ] };
+
+ key <AC01> { [ ucircumflex, Ucircumflex, udiaeresis, Udiaeresis ] };
+ key <AC02> { [ icircumflex, Icircumflex, i, Iabovedot ] };
+ key <AC05> { [ u, U, udiaeresis, Udiaeresis ] };
+ key <AB02> { [ecircumflex, Ecircumflex, odiaeresis, Odiaeresis ] };
+
+};
+
+// Kurdish Alt-Q Layout
+partial
+xkb_symbols "ku_alt" {
+
+ include "tr(alt)"
+
+ name[Group1]="Turkey - Kurdish, Latin Alt-Q";
+
+ key <AD03> { [ e, E, ecircumflex, Ecircumflex ] };
+ key <AD07> { [ u, U, ucircumflex, Ucircumflex ] };
+ key <AD08> { [ i, I, icircumflex, Icircumflex ] };
+ key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
+};
+
+// Turkish international Q Layout
+// Alexis Pellicier <alexis.pellicier@nds.k12.tr>, 2007
+partial
+xkb_symbols "intl" {
+ include "latin"
+
+ name[Group1]="Turkey - International (with dead keys)";
+
+ key <AE01> { type[group1] = "FOUR_LEVEL", [ 1, exclam, onesuperior, exclamdown ] };
+ key <AE02> { type[group1] = "FOUR_LEVEL", [ 2, apostrophe, sterling, twosuperior ] };
+ key <AE03> { type[group1] = "FOUR_LEVEL", [ 3, dead_circumflex, numbersign, threesuperior ] };
+ key <AE04> { type[group1] = "FOUR_LEVEL", [ 4, plus, dollar, onequarter ] };
+ key <AE06> { type[group1] = "FOUR_LEVEL", [ 6, ampersand, threequarters, VoidSymbol ] };
+ key <AE07> { type[group1] = "FOUR_LEVEL", [ 7, slash, braceleft, VoidSymbol ] };
+ key <AE08> { type[group1] = "FOUR_LEVEL", [ 8, parenleft, bracketleft, VoidSymbol ] };
+ key <AE09> { type[group1] = "FOUR_LEVEL", [ 9, parenright, bracketright, plusminus ] };
+ key <AE10> { type[group1] = "FOUR_LEVEL", [ 0, equal, braceright, degree ] };
+ key <AE11> { type[group1] = "FOUR_LEVEL", [ asterisk, question, backslash, questiondown ] };
+ key <AE12> { type[group1] = "FOUR_LEVEL", [ minus, underscore, division, VoidSymbol ] };
+ key <AD02> { [ w, W, VoidSymbol, VoidSymbol ] };
+ key <AD03> { [ e, E, EuroSign, cent ] };
+ key <AD05> { [ t, T, trademark, VoidSymbol ] };
+ key <AD07> { [ u, U, ucircumflex, Ucircumflex ] };
+ key <AD08> { [ idotless, I, icircumflex, Icircumflex ] };
+ key <AD09> { [ o, O, ocircumflex, Ocircumflex ] };
+ key <AD10> { [ p, P, VoidSymbol, VoidSymbol ] };
+ key <AD11> { [ gbreve, Gbreve, dead_diaeresis ] };
+ key <AD12> { [udiaeresis, Udiaeresis, dead_tilde, dead_macron ] };
+ key <AC01> { [ a, A, acircumflex, Acircumflex ] };
+ key <AC02> { [ s, S, section, VoidSymbol ] };
+ key <AC03> { [ d, D, VoidSymbol, VoidSymbol ] };
+ key <AC04> { [ f, F, ordfeminine, VoidSymbol ] };
+ key <AC05> { [ g, G, VoidSymbol, VoidSymbol ] };
+ key <AC06> { [ h, H, VoidSymbol, VoidSymbol ] };
+ key <AC08> { [ k, K, VoidSymbol, VoidSymbol ] };
+ key <AC09> { [ l, L, VoidSymbol, VoidSymbol ] };
+ key <AC10> { [ scedilla, Scedilla, dead_acute, dead_acute ] };
+ key <AC11> { [ i, Iabovedot, apostrophe, dead_caron ] };
+ key <TLDE> { type[group1] = "FOUR_LEVEL",[ quotedbl, eacute, plusminus, degree ] };
+ key <BKSL> { type[group1] = "FOUR_LEVEL",[ comma, semicolon, dead_grave, dead_grave ] };
+ key <LSGT> { type[group1] = "FOUR_LEVEL",[ less, greater, bar, brokenbar ] };
+ key <AB08> { [odiaeresis, Odiaeresis, multiply, VoidSymbol ] };
+ key <AB09> { [ ccedilla, Ccedilla, periodcentered, division ] };
+ key <AB10> { type[group1] = "FOUR_LEVEL",[ period, colon, dead_abovedot, dead_abovedot ] };
+
+ include "nbsp(level3)"
+ include "level3(ralt_switch)"
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "olpc" {
+ name[Group1]= "Turkey";
+ include "tr(intl)"
+
+ key <AE01> { [ 1, exclam, VoidSymbol, VoidSymbol ] };
+ key <AE06> { [ 6, ampersand, VoidSymbol, VoidSymbol ] };
+ key <AE12> { type[group1] = "FOUR_LEVEL", [ minus, underscore, bar, VoidSymbol ] };
+
+
+ key <AB03> { [ c, C, leftdoublequotemark, VoidSymbol ] };
+ key <AB04> { [ v, V, rightdoublequotemark, VoidSymbol ] };
+ key <AB05> { [ b, B, VoidSymbol, VoidSymbol ] };
+ key <AB08> { [odiaeresis, Odiaeresis, VoidSymbol, VoidSymbol ] };
+
+ key <AB09> { [ ccedilla, Ccedilla, multiply, VoidSymbol ] };
+ key <AB10> { [ period, colon, division, dead_abovedot ] };
+
+ key <I219> { [ less, greater, VoidSymbol, VoidSymbol ] };
+
+};
+
+// Crimean Tatar (Crimean Turkish) layouts.
+// First released: 2009.
+// These layouts are currently experimental. In particular, the mapping of letter 'x',
+// included for foreign words and shortcuts, might change in the future...
+// Reşat SABIQ <tilde.birlik @ gmail . com>
+// Özgür Qarahan <qarahan @ gmail . com>
+
+// Crimean Tatar (Crimean Turkish) Q Layout
+partial
+xkb_symbols "crh" {
+
+ include "tr(basic)"
+
+ name[Group1]="Turkey - Crimean Tatar (Turkish Q)";
+
+ key <AE11> { [ x, X, asterisk, question ] };
+
+ key <AC04> { [ f, F, iacute, Iacute ] };
+ key <AC07> { [ j, J, ibreve, Ibreve ] };
+ key <TLDE> { [ quotedbl, backslash, less, degree ] };
+
+ key <AB02> { [ ntilde, Ntilde, guillemotright, greater ] };
+};
+
+// Crimean Tatar (Crimean Turkish) F Layout
+partial
+xkb_symbols "crh_f" {
+
+ include "tr(f)"
+
+ name[Group1]="Turkey - Crimean Tatar (Turkish F)";
+
+ key <AE11> { [ x, X, slash, question ] };
+
+ key <AD04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",
+ [ idotless, I, iacute, Iacute ] };
+
+ key <AC07> { [ k, K, ibreve, Ibreve ] };
+ key <TLDE> { [ plus, asterisk, backslash, plusminus ] };
+
+ key <BKSL> { [ ntilde, Ntilde, grave, dead_grave ] };
+};
+
+// Crimean Tatar (Crimean Turkish) Alt-Q Layout
+partial
+xkb_symbols "crh_alt" {
+
+ include "tr(alt)"
+
+ name[Group1]="Turkey - Crimean Tatar (Turkish Alt-Q)";
+
+ key <AC04> { [ f, F, iacute, Iacute ] };
+ key <AC07> { [ j, J, ibreve, Ibreve ] };
+
+ key <AB06> { [ n, N, ntilde, Ntilde ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/typo b/xorg-server/xkeyboard-config/symbols/typo
index eb6fbc4ac..5cbf6be3e 100644
--- a/xorg-server/xkeyboard-config/symbols/typo
+++ b/xorg-server/xkeyboard-config/symbols/typo
@@ -1,53 +1,51 @@
-// $XKeyboardConfig$
-
-// typographic keyboard
-// Sergei Stolyarov <sergei@regolit.com>
-//
-// Initial contribution by Alexey Ten <alexeyten+deb@gmail.com>
-//
-// Based on the layout proposed by Ilya Birman,
-// http://ilyabirman.ru/typography-layout/
-//
-
-// default layout
-default partial
-xkb_symbols "base" {
-// 1st keyboard row
- key <TLDE> { [NoSymbol, NoSymbol, NoSymbol, approxeq] };
- key <AE01> { [NoSymbol, NoSymbol, onesuperior] };
- key <AE02> { [NoSymbol, NoSymbol, twosuperior, onehalf] };
- key <AE03> { [NoSymbol, NoSymbol, threesuperior, onethird] };
- key <AE04> { [NoSymbol, NoSymbol, dollar, onequarter] };
- key <AE05> { [NoSymbol, NoSymbol, U2030] };
- key <AE07> { [NoSymbol, NoSymbol, ampersand] };
- key <AE08> { [NoSymbol, NoSymbol, enfilledcircbullet, oneeighth] };
- key <AE11> { [NoSymbol, NoSymbol, emdash, hyphen] };
- key <AE12> { [NoSymbol, NoSymbol, notequal, plusminus] };
-
-// 2nd keyboard row
- key <AD03> { [NoSymbol, NoSymbol, EuroSign] }; // "e"
- key <AD04> { [NoSymbol, NoSymbol, registered] }; // "r"
- key <AD05> { [NoSymbol, NoSymbol, trademark] }; // "t"
- key <AD06> { [NoSymbol, NoSymbol, yen] }; // "y"
- key <AD10> { [NoSymbol, NoSymbol, acute, doubleacute] }; // "p"
- key <AD11> { [NoSymbol, NoSymbol, bracketleft, braceleft ] }; // [
- key <AD12> { [NoSymbol, NoSymbol, bracketright, braceright ] }; // ]
-
-// 3rd keyboard row
- key <AC01> { [NoSymbol, NoSymbol, U0301, NoSymbol] }; // "a"
- key <AC02> { [NoSymbol, NoSymbol, section]}; // "s"
- key <AC03> { [NoSymbol, NoSymbol, degree, division] }; // "d"
- key <AC04> { [NoSymbol, NoSymbol, sterling, NoSymbol] }; // "f"
- key <AC07> { [NoSymbol, NoSymbol, doublelowquotemark, singlelowquotemark] }; // "j"
- key <AC08> { [NoSymbol, NoSymbol, leftdoublequotemark, leftsinglequotemark] }; // "k"
- key <AC09> { [NoSymbol, NoSymbol, rightdoublequotemark, rightsinglequotemark] }; // "l"
- key <AC10> { [NoSymbol, NoSymbol, leftsinglequotemark, minutes] }; // ";"
- key <AC11> { [NoSymbol, NoSymbol, rightsinglequotemark, seconds] }; // "'"
-
-// 4th keyboard row
- key <AB02> { [NoSymbol, NoSymbol, multiply, U22C5] }; // "x"
- key <AB03> { [NoSymbol, NoSymbol, copyright, cent] }; // "c"
- key <AB08> { [NoSymbol, NoSymbol, guillemotleft, less] }; // ","
- key <AB09> { [NoSymbol, NoSymbol, guillemotright, greater] }; // "."
- key <AB10> { [NoSymbol, NoSymbol, ellipsis] }; // "/"
-};
+// typographic keyboard
+// Sergei Stolyarov <sergei@regolit.com>
+//
+// Initial contribution by Alexey Ten <alexeyten+deb@gmail.com>
+//
+// Based on the layout proposed by Ilya Birman,
+// http://ilyabirman.ru/typography-layout/
+//
+
+// default layout
+default partial
+xkb_symbols "base" {
+// 1st keyboard row
+ key <TLDE> { [NoSymbol, NoSymbol, NoSymbol, approxeq] };
+ key <AE01> { [NoSymbol, NoSymbol, onesuperior] };
+ key <AE02> { [NoSymbol, NoSymbol, twosuperior, onehalf] };
+ key <AE03> { [NoSymbol, NoSymbol, threesuperior, onethird] };
+ key <AE04> { [NoSymbol, NoSymbol, dollar, onequarter] };
+ key <AE05> { [NoSymbol, NoSymbol, U2030] };
+ key <AE07> { [NoSymbol, NoSymbol, ampersand] };
+ key <AE08> { [NoSymbol, NoSymbol, enfilledcircbullet, oneeighth] };
+ key <AE11> { [NoSymbol, NoSymbol, emdash, hyphen] };
+ key <AE12> { [NoSymbol, NoSymbol, notequal, plusminus] };
+
+// 2nd keyboard row
+ key <AD03> { [NoSymbol, NoSymbol, EuroSign] }; // "e"
+ key <AD04> { [NoSymbol, NoSymbol, registered] }; // "r"
+ key <AD05> { [NoSymbol, NoSymbol, trademark] }; // "t"
+ key <AD06> { [NoSymbol, NoSymbol, yen] }; // "y"
+ key <AD10> { [NoSymbol, NoSymbol, acute, doubleacute] }; // "p"
+ key <AD11> { [NoSymbol, NoSymbol, bracketleft, braceleft ] }; // [
+ key <AD12> { [NoSymbol, NoSymbol, bracketright, braceright ] }; // ]
+
+// 3rd keyboard row
+ key <AC01> { [NoSymbol, NoSymbol, U0301, NoSymbol] }; // "a"
+ key <AC02> { [NoSymbol, NoSymbol, section]}; // "s"
+ key <AC03> { [NoSymbol, NoSymbol, degree, division] }; // "d"
+ key <AC04> { [NoSymbol, NoSymbol, sterling, NoSymbol] }; // "f"
+ key <AC07> { [NoSymbol, NoSymbol, doublelowquotemark, singlelowquotemark] }; // "j"
+ key <AC08> { [NoSymbol, NoSymbol, leftdoublequotemark, leftsinglequotemark] }; // "k"
+ key <AC09> { [NoSymbol, NoSymbol, rightdoublequotemark, rightsinglequotemark] }; // "l"
+ key <AC10> { [NoSymbol, NoSymbol, leftsinglequotemark, minutes] }; // ";"
+ key <AC11> { [NoSymbol, NoSymbol, rightsinglequotemark, seconds] }; // "'"
+
+// 4th keyboard row
+ key <AB02> { [NoSymbol, NoSymbol, multiply, U22C5] }; // "x"
+ key <AB03> { [NoSymbol, NoSymbol, copyright, cent] }; // "c"
+ key <AB08> { [NoSymbol, NoSymbol, guillemotleft, less] }; // ","
+ key <AB09> { [NoSymbol, NoSymbol, guillemotright, greater] }; // "."
+ key <AB10> { [NoSymbol, NoSymbol, ellipsis] }; // "/"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/tz b/xorg-server/xkeyboard-config/symbols/tz
index 8936a0363..64804d678 100644
--- a/xorg-server/xkeyboard-config/symbols/tz
+++ b/xorg-server/xkeyboard-config/symbols/tz
@@ -1,63 +1,59 @@
-// $XKeyboardConfig$
-
-// Keyboard layout for Swahili in Arabic script.
-// Based on Martin Vidner's Buckwalter transliteration variant of the Arabic keyboard
-// Please notify any corrections or omissions to
-// Kevin Donnelly (kevin@dotmon.com)
-
-partial default alphanumeric_keys
-xkb_symbols "swa" {
- name[Group1]= "Tanzania";
-
- key <TLDE> { [ 0x1000670, VoidSymbol ] };
-
- key <AE01> { [ 0x1000661, VoidSymbol ] };
- key <AE02> { [ 0x1000662, VoidSymbol ] };
- key <AE03> { [ 0x1000663, VoidSymbol ] };
- key <AE04> { [ 0x1000664, VoidSymbol ] };
- key <AE05> { [ 0x1000665, Arabic_percent ] };
- key <AE06> { [ 0x1000666, VoidSymbol ] };
- key <AE07> { [ 0x1000667, VoidSymbol ] };
- key <AE08> { [ 0x1000668, VoidSymbol ] };
- key <AE09> { [ 0x1000669, 0x100fd3e ] };
- key <AE10> { [ 0x1000660, 0x100fd3f ] };
- key <AE11> { [ minus, Arabic_tatweel ] };
- key <AE12> { [ equal, plus ] };
-
- key <AD01> { [ Arabic_qaf, Arabic_gaf ] };
- key <AD02> { [ Arabic_waw, Arabic_hamzaonwaw ] };
- key <AD03> { [ 0x1000656, Arabic_ain ] };
- key <AD04> { [ Arabic_ra, Arabic_tteh ] };
- key <AD05> { [ Arabic_teh, Arabic_tah ] };
- key <AD06> { [ Arabic_yeh, Arabic_alefmaksura ] };
- key <AD07> { [ Arabic_damma, Arabic_dammatan ] };
- key <AD08> { [ Arabic_kasra, Arabic_hamzaonyeh ] };
- key <AD09> { [ Arabic_sukun, 0x1000657 ] };
- key <AD10> { [ Arabic_peh, Arabic_tehmarbuta ] };
- key <AD12> { [ VoidSymbol, VoidSymbol ] };
-
- key <AC01> { [ Arabic_fatha, Arabic_alef ] };
- key <AC02> { [ Arabic_seen, Arabic_sad ] };
- key <AC03> { [ Arabic_dal, Arabic_dad ] };
- key <AC04> { [ Arabic_feh, Arabic_fathatan ] };
- key <AC05> { [ 0x10006A0, Arabic_ghain ] };
- key <AC06> { [ Arabic_ha, Arabic_hah ] };
- key <AC07> { [ Arabic_jeem, VoidSymbol ] };
- key <AC08> { [ Arabic_kaf, Arabic_kasratan ] };
- key <AC09> { [ Arabic_lam, Arabic_shadda ] };
- key <AC10> { [ Arabic_semicolon, VoidSymbol ] };
- key <AC11> { [ Arabic_hamza, VoidSymbol ] };
-
- key <AB01> { [ Arabic_zain, Arabic_zah ] };
- key <AB02> { [ Arabic_khah, VoidSymbol ] };
- key <AB03> { [ Arabic_tcheh, Arabic_sheen ] };
- key <AB04> { [ 0x10006A8, Arabic_theh ] };
- key <AB05> { [ Arabic_beh, Arabic_thal ] };
- key <AB06> { [ Arabic_noon, VoidSymbol ] };
- key <AB07> { [ Arabic_meem, VoidSymbol ] };
- key <AB08> { [ Arabic_comma, Arabic_hamzaunderalef ] };
- key <AB09> { [ 0x10006d4, Arabic_hamzaonalef ] };
- key <AB10> { [ VoidSymbol, Arabic_question_mark ] };
-};
-
-
+// Keyboard layout for Swahili in Arabic script.
+// Based on Martin Vidner's Buckwalter transliteration variant of the Arabic keyboard
+// Please notify any corrections or omissions to
+// Kevin Donnelly (kevin@dotmon.com)
+
+partial default alphanumeric_keys
+xkb_symbols "swa" {
+ name[Group1]= "Tanzania";
+
+ key <TLDE> { [ 0x1000670, VoidSymbol ] };
+
+ key <AE01> { [ 0x1000661, VoidSymbol ] };
+ key <AE02> { [ 0x1000662, VoidSymbol ] };
+ key <AE03> { [ 0x1000663, VoidSymbol ] };
+ key <AE04> { [ 0x1000664, VoidSymbol ] };
+ key <AE05> { [ 0x1000665, Arabic_percent ] };
+ key <AE06> { [ 0x1000666, VoidSymbol ] };
+ key <AE07> { [ 0x1000667, VoidSymbol ] };
+ key <AE08> { [ 0x1000668, VoidSymbol ] };
+ key <AE09> { [ 0x1000669, 0x100fd3e ] };
+ key <AE10> { [ 0x1000660, 0x100fd3f ] };
+ key <AE11> { [ minus, Arabic_tatweel ] };
+ key <AE12> { [ equal, plus ] };
+
+ key <AD01> { [ Arabic_qaf, Arabic_gaf ] };
+ key <AD02> { [ Arabic_waw, Arabic_hamzaonwaw ] };
+ key <AD03> { [ 0x1000656, Arabic_ain ] };
+ key <AD04> { [ Arabic_ra, Arabic_tteh ] };
+ key <AD05> { [ Arabic_teh, Arabic_tah ] };
+ key <AD06> { [ Arabic_yeh, Arabic_alefmaksura ] };
+ key <AD07> { [ Arabic_damma, Arabic_dammatan ] };
+ key <AD08> { [ Arabic_kasra, Arabic_hamzaonyeh ] };
+ key <AD09> { [ Arabic_sukun, 0x1000657 ] };
+ key <AD10> { [ Arabic_peh, Arabic_tehmarbuta ] };
+ key <AD12> { [ VoidSymbol, VoidSymbol ] };
+
+ key <AC01> { [ Arabic_fatha, Arabic_alef ] };
+ key <AC02> { [ Arabic_seen, Arabic_sad ] };
+ key <AC03> { [ Arabic_dal, Arabic_dad ] };
+ key <AC04> { [ Arabic_feh, Arabic_fathatan ] };
+ key <AC05> { [ 0x10006A0, Arabic_ghain ] };
+ key <AC06> { [ Arabic_ha, Arabic_hah ] };
+ key <AC07> { [ Arabic_jeem, VoidSymbol ] };
+ key <AC08> { [ Arabic_kaf, Arabic_kasratan ] };
+ key <AC09> { [ Arabic_lam, Arabic_shadda ] };
+ key <AC10> { [ Arabic_semicolon, VoidSymbol ] };
+ key <AC11> { [ Arabic_hamza, VoidSymbol ] };
+
+ key <AB01> { [ Arabic_zain, Arabic_zah ] };
+ key <AB02> { [ Arabic_khah, VoidSymbol ] };
+ key <AB03> { [ Arabic_tcheh, Arabic_sheen ] };
+ key <AB04> { [ 0x10006A8, Arabic_theh ] };
+ key <AB05> { [ Arabic_beh, Arabic_thal ] };
+ key <AB06> { [ Arabic_noon, VoidSymbol ] };
+ key <AB07> { [ Arabic_meem, VoidSymbol ] };
+ key <AB08> { [ Arabic_comma, Arabic_hamzaunderalef ] };
+ key <AB09> { [ 0x10006d4, Arabic_hamzaonalef ] };
+ key <AB10> { [ VoidSymbol, Arabic_question_mark ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/ua b/xorg-server/xkeyboard-config/symbols/ua
index 150ada562..a585ea2b3 100644
--- a/xorg-server/xkeyboard-config/symbols/ua
+++ b/xorg-server/xkeyboard-config/symbols/ua
@@ -1,334 +1,330 @@
-// $XKeyboardConfig$
-
-// based on
-// ukrainian standard keyboard
-// AEN <aen@logic.ru> & Leon Kanter <leon@geon.donetsk.ua>
-// Last Changes 2007/10/03 by Andriy Rysin <arysin@yahoo.com>
-//
-// $XFree86: xc/programs/xkbcomp/symbols/ua,v 1.4 2003/05/15 11:29:47 pascal Exp $
-
-// Unicode - 3d level added with some Unicode symbols (typographic quotes, m-dash, n-dash etc),
-// some often used cyrillics from other slavic languages and some ASCII symbols used often (slash, brackets...)
-partial default alphanumeric_keys
-xkb_symbols "unicode" {
- include "ua(winkeys)"
-
- name[Group1]= "Ukraine";
-
- key <TLDE> { [ U2019, apostrophe, U0301, asciitilde ] }; // Apostrophe and Stress symbol
- key <AE02> { [ 1, exclam, onesuperior ] };
- key <AE02> { [ 2, quotedbl, twosuperior ] };
- key <AE03> { [ 3, numerosign, U00A7, U20B4 ] }; // Paragraph and Hryvnia sign
- key <AE04> { [ 4, semicolon, dollar, EuroSign ] };
- key <AE05> { [ 5, percent, degree ] };
- key <AE06> { [ 6, colon, less ] };
- key <AE07> { [ 7, question, greater ] };
- key <AE08> { [ 8, asterisk, enfilledcircbullet ] };
- key <AE09> { [ 9, parenleft, bracketleft, braceleft ] };
- key <AE10> { [ 0, parenright, bracketright, braceright] };
- key <AE11> { [ minus, underscore, emdash, endash ] };
- key <AE12> { [ equal, plus, notequal, plusminus ] };
-
- key <AD03> { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ]};
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] }; // Registered tm
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] };
- key <AD12> { [ Ukrainian_yi,Ukrainian_YI, Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
- key <AC02> { [ Ukrainian_i, Ukrainian_I, Cyrillic_yeru, Cyrillic_YERU ] };
- key <AC11> { [ Ukrainian_ie,Ukrainian_IE, Cyrillic_e, Cyrillic_E ] };
-
- key <BKSL> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN, backslash, bar ] };
-
- key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] };
- key <AB06> { [ Cyrillic_te, Cyrillic_TE, trademark ] };
- key <AB08> { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark ] };
- key <AB09> { [ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark ] };
- key <AB10> { [ period, comma, slash, ellipsis ] };
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "legacy" {
-
- name[Group1]= "Ukraine - Legacy";
-
- key <TLDE> { [ apostrophe, asciitilde ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, quotedbl ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, asterisk ] };
- key <AE05> { [ 5, colon ] };
- key <AE06> { [ 6, comma ] };
- key <AE07> { [ 7, period ] };
- key <AE08> { [ 8, semicolon ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
-
- key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <AD03> { [ Cyrillic_u, Cyrillic_U ] };
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] };
- key <AD06> { [ Cyrillic_en, Cyrillic_EN ] };
- key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <AD12> { [ Ukrainian_yi, Ukrainian_YI ] };
- key <BKSL> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
-
- key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <AC02> { [ Ukrainian_i, Ukrainian_I ] };
- key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <AC04> { [ Cyrillic_a, Cyrillic_A ] };
- key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
- key <AC07> { [ Cyrillic_o, Cyrillic_O ] };
- key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
- key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
- key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <AC11> { [ Ukrainian_ie, Ukrainian_IE ] };
-
- key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
- key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
- key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
- key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
- key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
- key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
- key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
- key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
- key <AB10> { [ slash, question ] };
-
- key <LSGT> { [ slash, bar ] };
- // End alphanumeric section
-};
-
-partial alphanumeric_keys
-xkb_symbols "winkeys" {
- include "ua(legacy)"
-
- name[Group1]= "Ukraine - Winkeys";
-
- key <AE03> { [ 3, numerosign ] };
- key <AE04> { [ 4, semicolon ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, colon ] };
- key <AE07> { [ 7, question ] };
- key <AE08> { [ 8, asterisk ] };
- key <AB10> { [ period, comma ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "typewriter" {
- include "ua(legacy)"
-
- name[Group1]= "Ukraine - Typewriter";
-
- key <TLDE> { [ apostrophe, quotedbl ] };
- key <AE01> { [ exclam, 1 ] };
- key <AE02> { [ numerosign, 2 ] };
- key <AE03> { [ slash, 3 ] };
- key <AE04> { [ semicolon, 4 ] };
- key <AE05> { [ colon, 5 ] };
- key <AE06> { [ comma, 6 ] };
- key <AE07> { [ period, 7 ] };
- key <AE08> { [ underscore, 8 ] };
- key <AE09> { [ question, 9 ] };
- key <AE10> { [ percent, 0 ] };
-
- key <AD12> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
-
- key <AC02> { [ Cyrillic_i, Cyrillic_I ] };
-
- key <AB05> { [ Ukrainian_i, Ukrainian_I ] };
-
- key <AB10> { [ Ukrainian_yi, Ukrainian_YI ] };
-
- key <BKSL> { [ parenleft, parenright ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "phonetic" {
- include "ua(legacy)"
-
- name[Group1]= "Ukraine - Phonetic";
-
- key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
- key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
- key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
- key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
- key <LatY> { [ Cyrillic_i, Cyrillic_I ] };
- key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
- key <LatI> { [ Ukrainian_i, Ukrainian_I ] };
- key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
- key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
-
- key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
- key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
- key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
- key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <LatH> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
- key <AC10> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
- key <AC11> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <BKSL> { [ Cyrillic_yu, Cyrillic_YU ] };
-
- key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <LatX> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
- key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <LatV> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
- key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
- key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
- key <AB08> { [ Ukrainian_yi, Ukrainian_YI ] };
- key <AB09> { [ Ukrainian_ie, Ukrainian_IE ] };
- key <AB10> { [ slash, question ] };
-};
-
-// ukrainian keyboard layout RSTU 2019-91 (Respublikanskij STandart Ukrajiny)
-// Andrew Porokhnyak <aop@porokhnyak.org>
-partial alphanumeric_keys
-xkb_symbols "rstu" {
- include "ua(legacy)"
-
- name[Group1]= "Ukraine - Standard RSTU";
-
- key <TLDE> { [ apostrophe, question ] };
- key <AE01> { [ exclam, 1 ] };
- key <AE02> { [ quotedbl, 2 ] };
- key <AE03> { [ numbersign, 3 ] };
- key <AE04> { [ semicolon, 4 ] };
- key <AE05> { [ colon, 5 ] };
- key <AE06> { [ comma, 6 ] };
- key <AE07> { [ period, 7 ] };
- key <AE08> { [ asterisk, 8 ] };
- key <AE09> { [ parenleft, 9 ] };
- key <AE10> { [ parenright, 0 ] };
-
- key <AD12> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
-
- key <AC02> { [ Cyrillic_i, Cyrillic_I ] };
-
- key <AB05> { [ Ukrainian_i, Ukrainian_I ] };
-
- key <AB10> { [ Ukrainian_yi, Ukrainian_YI ] };
-
- key <BKSL> { [ slash, percent ] };
-};
-
-// russian keyboard layout RSTU 2019-91 (Respublikanskij STandart Ukrajiny)
-// Andrew Porokhnyak <aop@porokhnyak.org>
-partial alphanumeric_keys
-xkb_symbols "rstu_ru" {
- include "ru(common)"
- name[Group1]= "Ukraine - Standard RSTU on Russian layout";
-
- key <TLDE> { [ apostrophe, question ] };
- key <AE01> { [ exclam, 1 ] };
- key <AE02> { [ quotedbl, 2 ] };
- key <AE03> { [ numbersign, 3 ] };
- key <AE04> { [ semicolon, 4 ] };
- key <AE05> { [ colon, 5 ] };
- key <AE06> { [ comma, 6 ] };
- key <AE07> { [ period, 7 ] };
- key <AE08> { [ asterisk, 8 ] };
- key <AE09> { [ parenleft, 9 ] };
- key <AE10> { [ parenright, 0 ] };
- key <BKSL> { [ slash, percent ] };
-
-key.type[group1]="ALPHABETIC";
-
- key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
-};
-
-//Homophonic keyboard layout (Tomas Marko Miljenović)
-//Based on Ukrainian National Transliteration, commonly used phonetic layouts for Mac and Win.
-//Existing layout "phonetic" used as template.
-partial alphanumeric_keys
-xkb_symbols "homophonic" {
- include "ua(legacy)"
- name[Group1]= "Ukraine - Homophonic";
-
- key <TLDE> { [ grave, underscore ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, semicolon ] };
- key <AE04> { [ 4, colon ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, apostrophe ] };
- key <AE07> { [ 7, quotedbl ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ Ukrainian_ie, Ukrainian_IE ] };
- key <AE12> { [ Ukrainian_yi, Ukrainian_YI ] };
-
- key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
- key <LatW> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
- key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
- key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
- key <LatY> { [ Cyrillic_i, Cyrillic_I ] };
- key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
- key <LatI> { [ Ukrainian_i, Ukrainian_I ] };
- key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
- key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <AD11> { [ Cyrillic_yu, Cyrillic_YU ] };
- key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
-
- key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
- key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
- key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
- key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <LatG> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
- key <LatH> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
- key <AC10> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AC11> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <BKSL> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
-
- key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <LatV> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
- key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
- key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
- key <AB08> { [ comma, less ] };
- key <AB09> { [ period, greater ] };
- key <AB10> { [ slash, question ] };
-};
-
-// Crimean Tatar (Crimean Turkish) layouts.
-partial
-xkb_symbols "crh" {
- include "tr(crh)"
-
- name[Group1]="Ukraine - Crimean Tatar (Turkish Q)";
-};
-
-partial
-xkb_symbols "crh_f" {
- include "tr(crh_f)"
-
- name[Group1]="Ukraine - Crimean Tatar (Turkish F)";
-};
-
-partial
-xkb_symbols "crh_alt" {
- include "tr(crh_alt)"
-
- name[Group1]="Ukraine - Crimean Tatar (Turkish Alt-Q)";
-};
+// based on
+// ukrainian standard keyboard
+// AEN <aen@logic.ru> & Leon Kanter <leon@geon.donetsk.ua>
+// Last Changes 2007/10/03 by Andriy Rysin <arysin@yahoo.com>
+
+// Unicode - 3d level added with some Unicode symbols (typographic quotes, m-dash, n-dash etc),
+// some often used cyrillics from other slavic languages and some ASCII symbols used often (slash, brackets...)
+partial default alphanumeric_keys
+xkb_symbols "unicode" {
+ include "ua(winkeys)"
+
+ name[Group1]= "Ukraine";
+
+ key <TLDE> { [ U2019, apostrophe, U0301, asciitilde ] }; // Apostrophe and Stress symbol
+ key <AE02> { [ 1, exclam, onesuperior ] };
+ key <AE02> { [ 2, quotedbl, twosuperior ] };
+ key <AE03> { [ 3, numerosign, U00A7, U20B4 ] }; // Paragraph and Hryvnia sign
+ key <AE04> { [ 4, semicolon, dollar, EuroSign ] };
+ key <AE05> { [ 5, percent, degree ] };
+ key <AE06> { [ 6, colon, less ] };
+ key <AE07> { [ 7, question, greater ] };
+ key <AE08> { [ 8, asterisk, enfilledcircbullet ] };
+ key <AE09> { [ 9, parenleft, bracketleft, braceleft ] };
+ key <AE10> { [ 0, parenright, bracketright, braceright] };
+ key <AE11> { [ minus, underscore, emdash, endash ] };
+ key <AE12> { [ equal, plus, notequal, plusminus ] };
+
+ key <AD03> { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ]};
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] }; // Registered tm
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] };
+ key <AD12> { [ Ukrainian_yi,Ukrainian_YI, Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
+ key <AC02> { [ Ukrainian_i, Ukrainian_I, Cyrillic_yeru, Cyrillic_YERU ] };
+ key <AC11> { [ Ukrainian_ie,Ukrainian_IE, Cyrillic_e, Cyrillic_E ] };
+
+ key <BKSL> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN, backslash, bar ] };
+
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] };
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE, trademark ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark ] };
+ key <AB10> { [ period, comma, slash, ellipsis ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "legacy" {
+
+ name[Group1]= "Ukraine - Legacy";
+
+ key <TLDE> { [ apostrophe, asciitilde ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, quotedbl ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, asterisk ] };
+ key <AE05> { [ 5, colon ] };
+ key <AE06> { [ 6, comma ] };
+ key <AE07> { [ 7, period ] };
+ key <AE08> { [ 8, semicolon ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <AD12> { [ Ukrainian_yi, Ukrainian_YI ] };
+ key <BKSL> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
+
+ key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <AC02> { [ Ukrainian_i, Ukrainian_I ] };
+ key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <AC04> { [ Cyrillic_a, Cyrillic_A ] };
+ key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O ] };
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AC11> { [ Ukrainian_ie, Ukrainian_IE ] };
+
+ key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
+ key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
+ key <AB10> { [ slash, question ] };
+
+ key <LSGT> { [ slash, bar ] };
+ // End alphanumeric section
+};
+
+partial alphanumeric_keys
+xkb_symbols "winkeys" {
+ include "ua(legacy)"
+
+ name[Group1]= "Ukraine - Winkeys";
+
+ key <AE03> { [ 3, numerosign ] };
+ key <AE04> { [ 4, semicolon ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, colon ] };
+ key <AE07> { [ 7, question ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AB10> { [ period, comma ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "typewriter" {
+ include "ua(legacy)"
+
+ name[Group1]= "Ukraine - Typewriter";
+
+ key <TLDE> { [ apostrophe, quotedbl ] };
+ key <AE01> { [ exclam, 1 ] };
+ key <AE02> { [ numerosign, 2 ] };
+ key <AE03> { [ slash, 3 ] };
+ key <AE04> { [ semicolon, 4 ] };
+ key <AE05> { [ colon, 5 ] };
+ key <AE06> { [ comma, 6 ] };
+ key <AE07> { [ period, 7 ] };
+ key <AE08> { [ underscore, 8 ] };
+ key <AE09> { [ question, 9 ] };
+ key <AE10> { [ percent, 0 ] };
+
+ key <AD12> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
+
+ key <AC02> { [ Cyrillic_i, Cyrillic_I ] };
+
+ key <AB05> { [ Ukrainian_i, Ukrainian_I ] };
+
+ key <AB10> { [ Ukrainian_yi, Ukrainian_YI ] };
+
+ key <BKSL> { [ parenleft, parenright ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "phonetic" {
+ include "ua(legacy)"
+
+ name[Group1]= "Ukraine - Phonetic";
+
+ key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <LatY> { [ Cyrillic_i, Cyrillic_I ] };
+ key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
+ key <LatI> { [ Ukrainian_i, Ukrainian_I ] };
+ key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
+ key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+
+ key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
+ key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <LatH> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <AC10> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
+ key <AC11> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <BKSL> { [ Cyrillic_yu, Cyrillic_YU ] };
+
+ key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <LatX> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <LatV> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <AB08> { [ Ukrainian_yi, Ukrainian_YI ] };
+ key <AB09> { [ Ukrainian_ie, Ukrainian_IE ] };
+ key <AB10> { [ slash, question ] };
+};
+
+// ukrainian keyboard layout RSTU 2019-91 (Respublikanskij STandart Ukrajiny)
+// Andrew Porokhnyak <aop@porokhnyak.org>
+partial alphanumeric_keys
+xkb_symbols "rstu" {
+ include "ua(legacy)"
+
+ name[Group1]= "Ukraine - Standard RSTU";
+
+ key <TLDE> { [ apostrophe, question ] };
+ key <AE01> { [ exclam, 1 ] };
+ key <AE02> { [ quotedbl, 2 ] };
+ key <AE03> { [ numbersign, 3 ] };
+ key <AE04> { [ semicolon, 4 ] };
+ key <AE05> { [ colon, 5 ] };
+ key <AE06> { [ comma, 6 ] };
+ key <AE07> { [ period, 7 ] };
+ key <AE08> { [ asterisk, 8 ] };
+ key <AE09> { [ parenleft, 9 ] };
+ key <AE10> { [ parenright, 0 ] };
+
+ key <AD12> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
+
+ key <AC02> { [ Cyrillic_i, Cyrillic_I ] };
+
+ key <AB05> { [ Ukrainian_i, Ukrainian_I ] };
+
+ key <AB10> { [ Ukrainian_yi, Ukrainian_YI ] };
+
+ key <BKSL> { [ slash, percent ] };
+};
+
+// russian keyboard layout RSTU 2019-91 (Respublikanskij STandart Ukrajiny)
+// Andrew Porokhnyak <aop@porokhnyak.org>
+partial alphanumeric_keys
+xkb_symbols "rstu_ru" {
+ include "ru(common)"
+ name[Group1]= "Ukraine - Standard RSTU on Russian layout";
+
+ key <TLDE> { [ apostrophe, question ] };
+ key <AE01> { [ exclam, 1 ] };
+ key <AE02> { [ quotedbl, 2 ] };
+ key <AE03> { [ numbersign, 3 ] };
+ key <AE04> { [ semicolon, 4 ] };
+ key <AE05> { [ colon, 5 ] };
+ key <AE06> { [ comma, 6 ] };
+ key <AE07> { [ period, 7 ] };
+ key <AE08> { [ asterisk, 8 ] };
+ key <AE09> { [ parenleft, 9 ] };
+ key <AE10> { [ parenright, 0 ] };
+ key <BKSL> { [ slash, percent ] };
+
+key.type[group1]="ALPHABETIC";
+
+ key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
+};
+
+//Homophonic keyboard layout (Tomas Marko Miljenović)
+//Based on Ukrainian National Transliteration, commonly used phonetic layouts for Mac and Win.
+//Existing layout "phonetic" used as template.
+partial alphanumeric_keys
+xkb_symbols "homophonic" {
+ include "ua(legacy)"
+ name[Group1]= "Ukraine - Homophonic";
+
+ key <TLDE> { [ grave, underscore ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, semicolon ] };
+ key <AE04> { [ 4, colon ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, apostrophe ] };
+ key <AE07> { [ 7, quotedbl ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ Ukrainian_ie, Ukrainian_IE ] };
+ key <AE12> { [ Ukrainian_yi, Ukrainian_YI ] };
+
+ key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <LatW> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <LatY> { [ Cyrillic_i, Cyrillic_I ] };
+ key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
+ key <LatI> { [ Ukrainian_i, Ukrainian_I ] };
+ key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
+ key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <AD11> { [ Cyrillic_yu, Cyrillic_YU ] };
+ key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+
+ key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
+ key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <LatG> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
+ key <LatH> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <AC10> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AC11> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <BKSL> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+
+ key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <LatV> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
+};
+
+// Crimean Tatar (Crimean Turkish) layouts.
+partial
+xkb_symbols "crh" {
+ include "tr(crh)"
+
+ name[Group1]="Ukraine - Crimean Tatar (Turkish Q)";
+};
+
+partial
+xkb_symbols "crh_f" {
+ include "tr(crh_f)"
+
+ name[Group1]="Ukraine - Crimean Tatar (Turkish F)";
+};
+
+partial
+xkb_symbols "crh_alt" {
+ include "tr(crh_alt)"
+
+ name[Group1]="Ukraine - Crimean Tatar (Turkish Alt-Q)";
+};
diff --git a/xorg-server/xkeyboard-config/symbols/us b/xorg-server/xkeyboard-config/symbols/us
index 092fb747d..8ff7ae537 100644
--- a/xorg-server/xkeyboard-config/symbols/us
+++ b/xorg-server/xkeyboard-config/symbols/us
@@ -1,1196 +1,1188 @@
-// $XKeyboardConfig$
-
-//
-// $XdotOrg: xc/programs/xkbcomp/symbols/us,v 1.1.4.3 2004/03/05 13:41:33 eich Exp $
-// $XFree86: xc/programs/xkbcomp/symbols/us,v 1.6 2003/10/31 14:32:05 pascal Exp $
-
-default
-partial alphanumeric_keys modifier_keys
-xkb_symbols "basic" {
-
- name[Group1]= "USA";
-
- // Alphanumeric section
- key <TLDE> { [ grave, asciitilde ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, asciicircum ] };
- key <AE07> { [ 7, ampersand ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
-
- key <AD01> { [ q, Q ] };
- key <AD02> { [ w, W ] };
- key <AD03> { [ e, E ] };
- key <AD04> { [ r, R ] };
- key <AD05> { [ t, T ] };
- key <AD06> { [ y, Y ] };
- key <AD07> { [ u, U ] };
- key <AD08> { [ i, I ] };
- key <AD09> { [ o, O ] };
- key <AD10> { [ p, P ] };
- key <AD11> { [ bracketleft, braceleft ] };
- key <AD12> { [ bracketright, braceright ] };
-
- key <AC01> { [ a, A ] };
- key <AC02> { [ s, S ] };
- key <AC03> { [ d, D ] };
- key <AC04> { [ f, F ] };
- key <AC05> { [ g, G ] };
- key <AC06> { [ h, H ] };
- key <AC07> { [ j, J ] };
- key <AC08> { [ k, K ] };
- key <AC09> { [ l, L ] };
- key <AC10> { [ semicolon, colon ] };
- key <AC11> { [ apostrophe, quotedbl ] };
-
- key <AB01> { [ z, Z ] };
- key <AB02> { [ x, X ] };
- key <AB03> { [ c, C ] };
- key <AB04> { [ v, V ] };
- key <AB05> { [ b, B ] };
- key <AB06> { [ n, N ] };
- key <AB07> { [ m, M ] };
- key <AB08> { [ comma, less ] };
- key <AB09> { [ period, greater ] };
- key <AB10> { [ slash, question ] };
-
- key <BKSL> { [ backslash, bar ] };
- // End alphanumeric section
-};
-
-partial alphanumeric_keys
-xkb_symbols "euro" {
-
- name[Group1]= "USA - With EuroSign on 5";
-
- include "us(basic)"
-
- include "eurosign(5)"
-
- include "level3(ralt_switch)"
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "intl" {
-
- name[Group1]= "USA - International (with dead keys)";
-
- include "us(basic)"
-
- // Alphanumeric section
- key <TLDE> { [dead_grave, dead_tilde, grave, asciitilde ] };
- key <AE01> { [ 1, exclam, exclamdown, onesuperior ] };
- key <AE02> { [ 2, at, twosuperior, dead_doubleacute ] };
- key <AE03> { [ 3, numbersign, threesuperior, dead_macron ] };
- key <AE04> { [ 4, dollar, currency, sterling ] };
- key <AE05> { [ 5, percent, EuroSign, dead_cedilla ] };
- key <AE06> { [ 6, dead_circumflex, onequarter, asciicircum ] };
- key <AE07> { [ 7, ampersand, onehalf, dead_horn ] };
- key <AE08> { [ 8, asterisk, threequarters, dead_ogonek ] };
- key <AE09> { [ 9, parenleft, leftsinglequotemark, dead_breve ] };
- key <AE10> { [ 0, parenright, rightsinglequotemark, dead_abovering ] };
- key <AE11> { [ minus, underscore, yen, dead_belowdot ] };
- key <AE12> { [ equal, plus, multiply, division ] };
-
- key <AD01> { [ q, Q, adiaeresis, Adiaeresis ] };
- key <AD02> { [ w, W, aring, Aring ] };
- key <AD03> { [ e, E, eacute, Eacute ] };
- key <AD04> { [ r, R, registered, registered ] };
- key <AD05> { [ t, T, thorn, THORN ] };
- key <AD06> { [ y, Y, udiaeresis, Udiaeresis ] };
- key <AD07> { [ u, U, uacute, Uacute ] };
- key <AD08> { [ i, I, iacute, Iacute ] };
- key <AD09> { [ o, O, oacute, Oacute ] };
- key <AD10> { [ p, P, odiaeresis, Odiaeresis ] };
- key <AD11> { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] };
- key <AD12> { [bracketright, braceright, guillemotright, rightdoublequotemark ] };
-
- key <AC01> { [ a, A, aacute, Aacute ] };
- key <AC02> { [ s, S, ssharp, section ] };
- key <AC03> { [ d, D, eth, ETH ] };
- key <AC04> { [ f, F, f, F ] };
- key <AC05> { [ g, G, g, G ] };
- key <AC06> { [ h, H, h, H ] };
- key <AC07> { [ j, J, j, J ] };
- key <AC08> { [ k, K, oe, OE ] };
-
- key <AC09> { [ l, L, oslash, Ooblique ] };
- key <AC10> { [ semicolon, colon, paragraph, degree ] };
- key <AC11> { [dead_acute, dead_diaeresis, apostrophe, quotedbl ] };
-
- key <AB01> { [ z, Z, ae, AE ] };
- key <AB02> { [ x, X, x, X ] };
- key <AB03> { [ c, C, copyright, cent ] };
- key <AB04> { [ v, V, v, V ] };
- key <AB05> { [ b, B, b, B ] };
- key <AB06> { [ n, N, ntilde, Ntilde ] };
- key <AB07> { [ m, M, mu, mu ] };
- key <AB08> { [ comma, less, ccedilla, Ccedilla ] };
- key <AB09> { [ period, greater, dead_abovedot, dead_caron ] };
- key <AB10> { [ slash, question, questiondown, dead_hook ] };
- key <BKSL> { [ backslash, bar, notsign, brokenbar ] };
-
- include "level3(ralt_switch)"
-};
-
-// Based on symbols/us_intl keyboard map:
-// Dead-keys definition for a very simple US/ASCII layout.
-// by Conectiva (http://www.conectiva.com.br)
-// modified by Ricardo Y. Igarashi (iga@that.com.br)
-
-// Added the following deadkeys, to make it truly international:
-//
-// dead_macron: on AltGr-minus
-// dead_breve: on AltGr-parenleft
-// dead_abovedot: on AltGr-period
-// dead_abovering: on AltGr-0
-// dead_doubleacute: on AltGr-equal (as quotedbl is already used)
-// dead_caron: on AltGr-less (AltGr-shift-comma)
-// dead_cedilla: on AltGr-comma
-// dead_ogonek: on AltGr-semicolon
-// dead_belowdot: on AltGr-underscore (AltGr-shift-minus)
-// dead_hook: on AltGr-question
-// dead_horn: on AltGr-plus (AltGr-shift-equal)
-// dead_diaeresis: on AltGr-colon (Alt-shift-semicolon)
-//
-// those were already there:
-// dead_grave
-// dead_acute
-// dead_circumflex
-// dead_tilde
-// dead_diaeresis
-
-partial alphanumeric_keys
-xkb_symbols "alt-intl" {
-
- name[Group1]= "USA - Alternative international";
-
- include "us"
-
- key <TLDE> { [ dead_grave, dead_tilde, grave, asciitilde ] };
- key <AE05> { [ 5, percent, EuroSign ] };
- key <AE06> { [ 6, dead_circumflex, asciicircum, asciicircum ] };
- key <AE09> { [ 9, parenleft, leftsinglequotemark, dead_breve ] };
- key <AE10> { [ 0, parenright, rightsinglequotemark, dead_abovering ] };
- key <AE11> { [ minus, underscore, dead_macron, dead_belowdot ] };
- key <AE12> { [ equal, plus, dead_doubleacute, dead_horn ] };
-
- key <AD03> { [ e, E, EuroSign, cent ] };
-
- key <AC10> { [ semicolon, colon, dead_ogonek, dead_diaeresis ] };
- key <AC11> { [ dead_acute, dead_diaeresis, apostrophe, quotedbl ] };
-
- key <AB08> { [ comma, less, dead_cedilla, dead_caron ] };
- key <AB09> { [ period, greater, dead_abovedot, dead_circumflex ] };
- key <AB10> { [ slash, question, dead_hook, dead_hook ] };
-
- include "level3(ralt_switch)"
-};
-
-// based on a keyboard map from an 'xkb/symbols/dk' file
-//
-// $XFree86: xc/programs/xkbcomp/symbols/dvorak,v 1.5 2004/01/03 16:35:07 herrb Exp $
-
-partial alphanumeric_keys
-xkb_symbols "dvorak" {
-
- name[Group1]= "USA - Dvorak";
-
- // Alphanumeric section
-
- key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] };
-
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, asciicircum, dead_circumflex, dead_circumflex ] };
- key <AE07> { [ 7, ampersand ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft, dead_grave] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ bracketleft, braceleft ] };
- key <AE12> { [ bracketright, braceright, dead_tilde] };
-
- key <AD01> { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] };
- key <AD02> { [ comma, less, dead_cedilla, dead_caron ] };
- key <AD03> { [ period, greater, dead_abovedot, periodcentered ] };
- key <AD04> { [ p, P ] };
- key <AD05> { [ y, Y ] };
- key <AD06> { [ f, F ] };
- key <AD07> { [ g, G ] };
- key <AD08> { [ c, C ] };
- key <AD09> { [ r, R ] };
- key <AD10> { [ l, L ] };
- key <AD11> { [ slash, question ] };
- key <AD12> { [ equal, plus ] };
-
- key <AC01> { [ a, A ] };
- key <AC02> { [ o, O ] };
- key <AC03> { [ e, E ] };
- key <AC04> { [ u, U ] };
- key <AC05> { [ i, I ] };
- key <AC06> { [ d, D ] };
- key <AC07> { [ h, H ] };
- key <AC08> { [ t, T ] };
- key <AC09> { [ n, N ] };
- key <AC10> { [ s, S ] };
- key <AC11> { [ minus, underscore ] };
-
- key <AB01> { [ semicolon, colon, dead_ogonek, dead_doubleacute ] };
- key <AB02> { [ q, Q ] };
- key <AB03> { [ j, J ] };
- key <AB04> { [ k, K ] };
- key <AB05> { [ x, X ] };
- key <AB06> { [ b, B ] };
- key <AB07> { [ m, M ] };
- key <AB08> { [ w, W ] };
- key <AB09> { [ v, V ] };
- key <AB10> { [ z, Z ] };
-
- key <BKSL> { [ backslash, bar ] };
-};
-
-// Dvorak international with dead keys
-// Olivier Mehani (shtrom-xorg@ssji.net)
-// Reproduce the per-key mapping of us(intl) for the dvorak layout
-// aka "I just swapped my keys over"
-partial alphanumeric_keys
-xkb_symbols "dvorak-intl" {
-
- name[Group1]= "USA - Dvorak international (with dead keys)";
-
- include "us(dvorak)"
-
- key <TLDE> { [dead_grave, dead_tilde, grave, asciitilde ] };
-
- key <AE01> { [ 1, exclam, exclamdown, onesuperior ] };
- key <AE02> { [ 2, at, twosuperior, dead_doubleacute ] };
- key <AE03> { [ 3, numbersign, threesuperior, dead_macron ] };
- key <AE04> { [ 4, dollar, currency, sterling ] };
- key <AE05> { [ 5, percent, EuroSign, dead_cedilla ] };
- key <AE06> { [ 6, dead_circumflex, onequarter, asciicircum ] };
- key <AE07> { [ 7, ampersand, onehalf, dead_horn ] };
- key <AE08> { [ 8, asterisk, threequarters, dead_ogonek ] };
- key <AE09> { [ 9, parenleft, leftsinglequotemark, dead_breve ] };
- key <AE10> { [ 0, parenright, rightsinglequotemark, dead_abovering ] };
- key <AE11> { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] };
- key <AE12> { [bracketright, braceright, guillemotright, rightdoublequotemark ] };
-
- key <AD01> { [dead_acute, dead_diaeresis, apostrophe, quotedbl ] };
- key <AD02> { [ comma, less, ccedilla, Ccedilla ] };
- key <AD03> { [ period, greater, dead_abovedot, dead_caron ] };
- key <AD04> { [ p, P, odiaeresis, Odiaeresis ] };
- key <AD05> { [ y, Y, udiaeresis, Udiaeresis ] };
- // key <AD06> { [ f, F ] };
- // key <AD07> { [ g, G ] };
- key <AD08> { [ c, C, copyright, cent ] };
- key <AD09> { [ r, R, registered, registered ] };
- key <AD10> { [ l, L, oslash, Ooblique ] };
- key <AD11> { [ slash, question, questiondown, dead_hook ] };
- // key <AD12> { [ equal, plus, multiply, division ] };
-
- key <AC01> { [ a, A, aacute, Aacute ] };
- key <AC02> { [ o, O, oacute, Oacute ] };
- key <AC03> { [ e, E, eacute, Eacute ] };
- key <AC04> { [ u, U, uacute, Uacute ] };
- key <AC05> { [ i, I, iacute, Iacute ] };
- key <AC06> { [ d, D, eth, ETH ] };
- // key <AC07> { [ h, H ] };
- key <AC08> { [ t, T, thorn, THORN ] };
- key <AC09> { [ n, N, ntilde, Ntilde ] };
- key <AC10> { [ s, S, ssharp, section ] };
- // key <AC11> { [ minus, underscore, yen, dead_belowdot ] };
-
- key <AB01> { [ semicolon, colon, paragraph, degree ] };
- key <AB02> { [ q, Q, adiaeresis, Adiaeresis ] };
- // key <AB03> { [ j, J ] };
- key <AB04> { [ k, K, oe, OE ] };
- // key <AB05> { [ x, X ] };
- // key <AB06> { [ b, B ] };
- key <AB07> { [ m, M, mu, mu ] };
- key <AB08> { [ w, W, aring, Aring ] };
- // key <AB09> { [ v, V ] };
- key <AB10> { [ z, Z, ae, AE ] };
-
- key <BKSL> { [ backslash, bar, notsign, brokenbar ] };
-
- include "level3(ralt_switch)"
-};
-
-// Dvorak international without dead keys
-// Stephane Magnenat (stephane at magnenat dot net, http://stephane.magnenat.net)
-// Based on information from http://www.poupinou.org/dvorak/index.html
-//
-// ` 1 2 3 4 5 6 7 8 9 0 [ ] \
-// €
-//
-// ' , . p y f g c r l / =
-// ä ê ë ü ç
-//
-// a o e u i d h t n s -
-// à ô é û î ß
-//
-// ; q j k x b m w v z
-// â ö è ù ï
-
-partial alphanumeric_keys
-xkb_symbols "dvorak-alt-intl" {
-
- name[Group1]= "USA - Dvorak alternative international (no dead keys)";
-
- include "us(dvorak)"
-
- key <AE04> { [ 4, dollar, EuroSign ] };
-
- key <AD02> { [ comma, less, adiaeresis, dead_caron ] };
- key <AD03> { [ period, greater, ecircumflex, periodcentered ] };
- key <AD04> { [ p, P, ediaeresis, dead_cedilla ] };
- key <AD05> { [ y, Y, udiaeresis ] };
- key <AD08> { [ c, C, ccedilla, dead_abovedot ] };
-
- key <AC01> { [ a, A, agrave ] };
- key <AC02> { [ o, O, ocircumflex ] };
- key <AC03> { [ e, E, eacute ] };
- key <AC04> { [ u, U, ucircumflex ] };
- key <AC05> { [ i, I, icircumflex ] };
- key <AC10> { [ s, S, ssharp ] };
-
- key <AB01> { [ semicolon, colon, acircumflex ] };
- key <AB02> { [ q, Q, odiaeresis, dead_ogonek ] };
- key <AB03> { [ j, J, egrave, dead_doubleacute ] };
- key <AB04> { [ k, K, ugrave ] };
- key <AB05> { [ x, X, idiaeresis ] };
-
- include "level3(ralt_switch)"
-};
-
-// Left and right handed dvorak layouts
-// by sqweek <sqweek@gmail.com> 2006-01-30
-// Based on the corresponding layouts in the console-tools package.
-partial alphanumeric_keys
-xkb_symbols "dvorak-l" {
-
- include "us(dvorak)"
- name[Group1]= "USA - Left handed Dvorak";
-
- key <AE01> { [ bracketleft, braceleft ] };
- key <AE02> { [ bracketright, braceright ] };
- key <AE03> { [ slash, question ] };
- key <AE04> { [ p, P ] };
- key <AE05> { [ f, F ] };
- key <AE06> { [ m, M ] };
- key <AE07> { [ l, L ] };
- key <AE08> { [ j, J ] };
- key <AE09> { [ 4, dollar ] };
- key <AE10> { [ 3, numbersign ] };
- key <AE11> { [ 2, at ] };
- key <AE12> { [ 1, exclam ] };
-
- key <AD01> { [ semicolon, colon ] };
- key <AD02> { [ q, Q ] };
- key <AD03> { [ b, B ] };
- key <AD04> { [ y, Y ] };
- key <AD05> { [ u, U ] };
- key <AD06> { [ r, R ] };
- key <AD07> { [ s, S ] };
- key <AD08> { [ o, O ] };
- key <AD09> { [ period, greater ] };
- key <AD10> { [ 6, asciicircum ] };
- key <AD11> { [ 5, percent ] };
- key <AD12> { [ equal, plus ] };
-
- key <AC01> { [ minus, underscore ] };
- key <AC02> { [ k, K ] };
- key <AC03> { [ c, C ] };
- key <AC04> { [ d, D ] };
- key <AC05> { [ t, T ] };
- key <AC06> { [ h, H ] };
- key <AC07> { [ e, E ] };
- key <AC08> { [ a, A ] };
- key <AC09> { [ z, Z ] };
- key <AC10> { [ 8, asterisk ] };
- key <AC11> { [ 7, ampersand ] };
-
- key <AB01> { [ apostrophe, quotedbl ] };
- key <AB02> { [ x, X ] };
- key <AB03> { [ g, G ] };
- key <AB04> { [ v, V ] };
- key <AB05> { [ w, W ] };
- key <AB06> { [ n, N ] };
- key <AB07> { [ i, I ] };
- key <AB08> { [ comma, less ] };
- key <AB09> { [ 0, parenright ] };
- key <AB10> { [ 9, parenleft ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "dvorak-r" {
-
- include "us(dvorak)"
- name[Group1]= "USA - Right handed Dvorak";
-
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, dollar ] };
- key <AE05> { [ j, J ] };
- key <AE06> { [ l, L ] };
- key <AE07> { [ m, M ] };
- key <AE08> { [ f, F ] };
- key <AE09> { [ p, P ] };
- key <AE10> { [ slash, question ] };
- key <AE11> { [ bracketleft, braceleft ] };
- key <AE12> { [ bracketright, braceright ] };
-
- key <AD01> { [ 5, percent ] };
- key <AD02> { [ 6, asciicircum ] };
- key <AD03> { [ q, Q ] };
- key <AD04> { [ period, greater ] };
- key <AD05> { [ o, O ] };
- key <AD06> { [ r, R ] };
- key <AD07> { [ s, S ] };
- key <AD08> { [ u, U ] };
- key <AD09> { [ y, Y ] };
- key <AD10> { [ b, B ] };
- key <AD11> { [ semicolon, colon ] };
- key <AD12> { [ equal, plus ] };
-
- key <AC01> { [ 7, ampersand ] };
- key <AC02> { [ 8, asterisk ] };
- key <AC03> { [ z, Z ] };
- key <AC04> { [ a, A ] };
- key <AC05> { [ e, E ] };
- key <AC06> { [ h, H ] };
- key <AC07> { [ t, T ] };
- key <AC08> { [ d, D ] };
- key <AC09> { [ c, C ] };
- key <AC10> { [ k, K ] };
- key <AC11> { [ minus, underscore ] };
-
- key <AB01> { [ 9, parenleft ] };
- key <AB02> { [ 0, parenright ] };
- key <AB03> { [ x, X ] };
- key <AB04> { [ comma, less ] };
- key <AB05> { [ i, I ] };
- key <AB06> { [ n, N ] };
- key <AB07> { [ w, W ] };
- key <AB08> { [ v, V ] };
- key <AB09> { [ g, G ] };
- key <AB10> { [ apostrophe, quotedbl ] };
-};
-
-// Classic dvorak layout
-// by Piter Punk <piterpk@terra.com.br> - 2006-07-06
-// Based on dvorak layout and e-mail from Russel L. Harris rlharris@oplink.net
-// on xorg list.
-partial alphanumeric_keys
-xkb_symbols "dvorak-classic" {
-
- name[Group1]= "USA - Classic Dvorak";
-
- // Alphanumeric section
-
- key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] };
-
- key <AE01> { [ bracketleft, braceleft ] };
- key <AE02> { [ 7, ampersand ] };
- key <AE03> { [ 5, percent ] };
- key <AE04> { [ 3, numbersign ] };
- key <AE05> { [ 1, exclam ] };
- key <AE06> { [ 9, parenleft, dead_grave] };
- key <AE07> { [ 0, parenright ] };
- key <AE08> { [ 2, at ] };
- key <AE09> { [ 4, dollar ] };
- key <AE10> { [ 6, asciicircum, dead_circumflex, dead_circumflex ] };
- key <AE11> { [ 8, asterisk ] };
- key <AE12> { [ bracketright, braceright, dead_tilde] };
-
- key <AD01> { [ slash, question ] };
- key <AD02> { [ comma, less, dead_cedilla, dead_caron ] };
- key <AD03> { [ period, greater, dead_abovedot, periodcentered ] };
- key <AD04> { [ p, P ] };
- key <AD05> { [ y, Y ] };
- key <AD06> { [ f, F ] };
- key <AD07> { [ g, G ] };
- key <AD08> { [ c, C ] };
- key <AD09> { [ r, R ] };
- key <AD10> { [ l, L ] };
- key <AD11> { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] };
- key <AD12> { [ equal, plus ] };
-
- key <AC01> { [ a, A ] };
- key <AC02> { [ o, O ] };
- key <AC03> { [ e, E ] };
- key <AC04> { [ u, U ] };
- key <AC05> { [ i, I ] };
- key <AC06> { [ d, D ] };
- key <AC07> { [ h, H ] };
- key <AC08> { [ t, T ] };
- key <AC09> { [ n, N ] };
- key <AC10> { [ s, S ] };
- key <AC11> { [ minus, underscore ] };
-
- key <AB01> { [ semicolon, colon, dead_ogonek, dead_doubleacute ] };
- key <AB02> { [ q, Q ] };
- key <AB03> { [ j, J ] };
- key <AB04> { [ k, K ] };
- key <AB05> { [ x, X ] };
- key <AB06> { [ b, B ] };
- key <AB07> { [ m, M ] };
- key <AB08> { [ w, W ] };
- key <AB09> { [ v, V ] };
- key <AB10> { [ z, Z ] };
- key <BKSL> { [ backslash, bar ] };
-};
-
-// Programmer Dvorak, by Roland Kaufmann <rlndkfmn at gmail dot com>
-// License: BSD, available at <http://www.kaufmann.no/roland/dvorak/license.html>
-// Main features: Numbers are in shift position (like French), symbols have been
-// placed in locations that give good hand-alternation and finger rolling with
-// symbols that usually follows, accented characters are possible for I18N.
-partial alphanumeric_keys
-xkb_symbols "dvp" {
- include "us(dvorak)"
-
- name[Group1] = "USA - Programmer Dvorak";
-
- // Unmodified Shift AltGr Shift+AltGr
- // symbols row, left side
- key <TLDE> { [ dollar, asciitilde, dead_tilde ] };
- key <AE01> { [ ampersand, percent ] };
- key <AE02> { [ bracketleft, 7, currency ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
- key <AE03> { [ braceleft, 5, cent ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
- key <AE04> { [ braceright, 3, yen ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
- key <AE05> { [ parenleft, 1, EuroSign ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
- key <AE06> { [ equal, 9, sterling ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
-
- // symbols row, right side
- key <AE07> { [ asterisk, 0 ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
- key <AE08> { [ parenright, 2, onehalf ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
- key <AE09> { [ plus, 4 ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
- key <AE10> { [ bracketright, 6 ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
- key <AE11> { [ exclam, 8, exclamdown ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
- key <AE12> { [ numbersign, grave, dead_grave ] };
- key <BKSP> { [ BackSpace ] };
-
- // upper row, left side
- key <AD01> { [ semicolon, colon, dead_diaeresis ] };
- key <AD02> { [ comma, less, guillemotleft ] };
- key <AD03> { [ period, greater, guillemotright ] };
- key <AD04> { [ p, P, paragraph, section ] };
- key <AD05> { [ y, Y, udiaeresis, Udiaeresis ] };
-
- // upper row, right side
- key <AD08> { [ c, C, ccedilla, Ccedilla ] };
- key <AD09> { [ r, R, registered, trademark ] };
- key <AD11> { [ slash, question, questiondown ] };
- key <AD12> { [ at, asciicircum, dead_circumflex, dead_caron ] };
-
- // home row, left side
- key <AC01> { [ a, A, aring, Aring ] };
- key <AC02> { [ o, O, oslash, Ooblique ] };
- key <AC03> { [ e, E, ae, AE ] };
- key <AC04> { [ u, U, eacute, Eacute ] };
-
- // home row, right side
- key <AC06> { [ d, D, eth, ETH ] };
- key <AC07> { [ h, H, dead_acute ] };
- key <AC08> { [ t, T, thorn, THORN ] };
- key <AC09> { [ n, N, ntilde, Ntilde ] };
- key <AC10> { [ s, S, ssharp ] };
- key <AC11> { [ minus, underscore, hyphen ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
- key <BKSL> { [ backslash, bar ] };
-
- // lower row, left side
- key <AB01> { [ apostrophe, quotedbl, dead_acute ] };
-};
-
-// phonetic layout for Russian letters on an US keyboard
-// by Ivan Popov <pin@konvalo.org> 2005-07-17
-
-// level3 modifier is a shortcut to the "us" meaning of the keys where
-// we place cyrillic letters, handy for accessing the corresponding
-// punctuation marks.
-// It is important to have access to punctuation marks, and the rest of
-// alphabetical keys are added for being consequent so that the users
-// can expect the level3 modifier to give what the key label shows.
-
-partial alphanumeric_keys
-xkb_symbols "rus" {
-
- name[Group1]= "USA - Russian phonetic";
-
- include "us(basic)"
-
-key.type[group1]="FOUR_LEVEL_ALPHABETIC";
-
- key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
- key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
- key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
- key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
- key <TLDE> { [ Cyrillic_io, Cyrillic_IO, grave, asciitilde ] };
- key <LatV> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <LatI> { [ Cyrillic_i, Cyrillic_I ] };
- key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
- key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
- key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
- key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
- key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
- key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
- key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
- key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
- key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <LatH> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <AC10> { [ Cyrillic_che, Cyrillic_CHE, semicolon, colon ] };
- key <AD11> { [ Cyrillic_sha, Cyrillic_SHA, bracketleft, braceleft] };
- key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA, bracketright, braceright ] };
- key <AE12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, equal, plus ] };
- key <LatY> { [ Cyrillic_yeru, Cyrillic_YERU ] };
- key <LatX> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
- key <BKSL> { [ Cyrillic_e, Cyrillic_E, backslash, bar ] };
- key <AC11> { [ Cyrillic_yu, Cyrillic_YU, apostrophe, quotedbl ] };
- key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "mac" {
-
- include "us(basic)"
- name[Group1]= "USA - Macintosh";
- key.type[group1]="FOUR_LEVEL";
-
- // Slightly improvised from http://homepage.mac.com/thgewecke/kblayout.jpg
- key <LSGT> { [ section, plusminus, section, plusminus ] };
- key <TLDE> { [ grave, asciitilde, dead_grave, dead_horn ] };
- key <AE01> { [ 1, exclam, exclamdown, U2044 ] };
- key <AE02> { [ 2, at, trademark, EuroSign ] };
- key <AE03> { [ 3, numbersign, sterling, U2039 ] };
- key <AE04> { [ 4, dollar, cent, U203A ] };
- key <AE05> { [ 5, percent, infinity, UFB01 ] };
- key <AE06> { [ 6,asciicircum, section, UFB02 ] };
- key <AE07> { [ 7, ampersand, paragraph, doubledagger ] };
- key <AE08> { [ 8, asterisk, enfilledcircbullet, degree ] };
- key <AE09> { [ 9, parenleft, ordfeminine, periodcentered ] };
- key <AE10> { [ 0, parenright, masculine,singlelowquotemark] };
- key <AE11> { [ minus, underscore, endash, emdash ] };
- key <AE12> { [ equal, plus, notequal, plusminus ] };
-
- key <AD01> { [ q, Q, oe, OE ] };
- key <AD02> { [ w, W, U2211,doublelowquotemark] };
- key <AD03> { [ e, E, dead_acute, acute ] };
- key <AD04> { [ r, R, registered, U2030 ] };
- key <AD05> { [ t, T, dagger, dead_caron ] };
- key <AD06> { [ y, Y, yen, onequarter ] };
- key <AD07> { [ u, U, dead_diaeresis, diaeresis ] };
- key <AD08> { [ i, I, dead_circumflex, U02C6 ] };
- key <AD09> { [ o, O, oslash, Ooblique ] };
- key <AD10> { [ p, P, Greek_pi, U220F ] };
- key <AD11> { [ bracketleft, braceleft, leftdoublequotemark, rightdoublequotemark ] };
- key <AD12> { [bracketright, braceright, leftsinglequotemark, rightsinglequotemark ] };
- key <BKSL> { [ backslash, bar, guillemotleft, guillemotright ] };
-
- key <AC01> { [ a, A, aring, Aring ] };
- key <AC02> { [ s, S, ssharp, dead_stroke ] };
- key <AC03> { [ d, D, partialderivative, eth ] };
- key <AC04> { [ f, F, function, dead_hook ] };
- key <AC05> { [ g, G, copyright, dead_doubleacute ] };
- key <AC06> { [ h, H, dead_abovedot, dead_belowdot ] };
- key <AC07> { [ j, J, U2206, onehalf ] };
- key <AC08> { [ k, K,dead_abovering, UF8FF ] };
-
- key <AC09> { [ l, L, notsign, THORN ] };
- key <AC10> { [ semicolon, colon, U2026, thorn ] };
- key <AC11> { [apostrophe, quotedbl, ae, AE ] };
-
- key <AB01> { [ z, Z, Greek_OMEGA, dead_cedilla ] };
- key <AB02> { [ x, X, U2248, dead_ogonek ] };
- // unclear whether "approxeq" is 2248 or 2245
- key <AB03> { [ c, C, ccedilla, Ccedilla ] };
- key <AB04> { [ v, V, squareroot, U25CA ] };
- key <AB05> { [ b, B, integral, idotless ] };
- key <AB06> { [ n, N, dead_tilde, U02DC ] };
- key <AB07> { [ m, M, mu, threequarters ] };
- key <AB08> { [ comma, less, lessthanequal, dead_macron ] };
- key <AB09> { [ period, greater, greaterthanequal, dead_breve ] };
- key <AB10> { [ slash, question, division, questiondown ] };
-
- include "level3(ralt_switch)"
-};
-
-// Colemak symbols for xkb on X.Org Server 7.x
-// 2006-01-01 Shai Coleman, http://colemak.com/ . Public domain.
-
-partial alphanumeric_keys
-xkb_symbols "colemak" {
- include "us"
- name[Group1]= "USA - Colemak";
-
- // Alphanumeric section
- key <TLDE> { [ grave, asciitilde, dead_tilde, asciitilde ] };
- key <AE01> { [ 1, exclam, exclamdown, onesuperior ] };
- key <AE02> { [ 2, at, masculine, twosuperior ] };
- key <AE03> { [ 3, numbersign, ordfeminine, threesuperior ] };
- key <AE04> { [ 4, dollar, cent, sterling ] };
- key <AE05> { [ 5, percent, EuroSign, yen ] };
- key <AE06> { [ 6, asciicircum, hstroke, Hstroke ] };
- key <AE07> { [ 7, ampersand, eth, ETH ] };
- key <AE08> { [ 8, asterisk, thorn, THORN ] };
- key <AE09> { [ 9, parenleft, leftsinglequotemark, leftdoublequotemark ] };
- key <AE10> { [ 0, parenright, rightsinglequotemark, rightdoublequotemark ] };
- key <AE11> { [ minus, underscore, endash, emdash ] };
- key <AE12> { [ equal, plus, multiply, division ] };
-
- key <AD01> { [ q, Q, adiaeresis, Adiaeresis ] };
- key <AD02> { [ w, W, aring, Aring ] };
- key <AD03> { [ f, F, atilde, Atilde ] };
- key <AD04> { [ p, P, oslash, Ooblique ] };
- key <AD05> { [ g, G, dead_ogonek, asciitilde ] };
- key <AD06> { [ j, J, dstroke, Dstroke ] };
- key <AD07> { [ l, L, lstroke, Lstroke ] };
- key <AD08> { [ u, U, uacute, Uacute ] };
- key <AD09> { [ y, Y, udiaeresis, Udiaeresis ] };
- key <AD10> { [ semicolon, colon, odiaeresis, Odiaeresis ] };
- key <AD11> { [ bracketleft, braceleft, guillemotleft, 0x1002039 ] };
- key <AD12> { [ bracketright, braceright, guillemotright, 0x100203a ] };
- key <BKSL> { [ backslash, bar, asciitilde, asciitilde ] };
-
- key <AC01> { [ a, A, aacute, Aacute ] };
- key <AC02> { [ r, R, dead_grave, asciitilde ] };
- key <AC03> { [ s, S, ssharp, asciitilde ] };
- key <AC04> { [ t, T, dead_acute, dead_doubleacute ] };
- key <AC05> { [ d, D, dead_diaeresis, asciitilde ] };
- key <AC06> { [ h, H, dead_caron, asciitilde ] };
- key <AC07> { [ n, N, ntilde, Ntilde ] };
- key <AC08> { [ e, E, eacute, Eacute ] };
- key <AC09> { [ i, I, iacute, Iacute ] };
- key <AC10> { [ o, O, oacute, Oacute ] };
- key <AC11> { [ apostrophe, quotedbl, otilde, Otilde ] };
-
- key <AB01> { [ z, Z, ae, AE ] };
- key <AB02> { [ x, X, dead_circumflex, asciitilde ] };
- key <AB03> { [ c, C, ccedilla, Ccedilla ] };
- key <AB04> { [ v, V, oe, OE ] };
- key <AB05> { [ b, B, dead_breve, asciitilde ] };
- key <AB06> { [ k, K, dead_abovering, asciitilde ] };
- key <AB07> { [ m, M, dead_macron, asciitilde ] };
- key <AB08> { [ comma, less, dead_cedilla, asciitilde ] };
- key <AB09> { [ period, greater, dead_abovedot, asciitilde ] };
- key <AB10> { [ slash, question, questiondown, asciitilde ] };
-
- key <CAPS> { [ BackSpace, BackSpace, BackSpace, BackSpace ] };
- key <LSGT> { [ minus, underscore, endash, emdash ] };
- key <SPCE> { [ space, space, space, nobreakspace ] };
-
- include "level3(ralt_switch)"
-};
-
-// I do NOT like dead-keys - the International keyboard as defined by Microsoft
-// doesn't fit my needs. Why use two keystrokes for all simple characters (eg '
-// and <space> generates a single ') just to have an é (eacute) in two strokes
-// as well? I type ' more often than é (eacute).
-//
-// This file works just like a regular keyboard, BUT has all dead-keys
-// accessible at level3 (through AltGr). An ë (ediaeresis) is now: AltGr+"
-// followed by an e. In other words, this keyboard is not international as long
-// as you leave the right Alt key alone.
-//
-// The original MS International keyboard was intended for Latin1 (iso8859-1).
-// With the introduction of iso8859-15, the (important) ligature oe (and OE)
-// became available. I added them next to ae. Because I write ediaeresis more
-// often than registered, I moved registered to be next to copyright and added
-// ediaeresis and idiaeresis. - Adriaan
-
-partial alphanumeric_keys
-xkb_symbols "altgr-intl" {
-
- name[Group1]= "USA - International (AltGr dead keys)";
-
- include "us(intl)"
-
-// five dead keys moved into level3:
-
- key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] };
- key <AC11> { [apostrophe,quotedbl, dead_acute, dead_diaeresis ] };
-
-// diversions from the MS Intl keyboard:
-
- key <AE01> { [ 1, exclam, onesuperior, exclamdown ] };
- key <AD04> { [ r, R, ediaeresis, Ediaeresis ] };
- key <AC07> { [ j, J, idiaeresis, Idiaeresis ] };
- key <AB02> { [ x, X, oe, OE ] };
- key <AB04> { [ v, V, registered, registered ] };
-
-// onequarter etc (not in iso8859-15) moved to get three unshifted deadkeys:
-
- key <AE06> { [ 6, asciicircum, dead_circumflex, onequarter ] };
- key <AE07> { [ 7, ampersand, dead_horn, onehalf ] };
- key <AE08> { [ 8, asterisk, dead_ogonek, threequarters ] };
-
- include "level3(ralt_switch)"
-};
-
-// Intel ClassmatePC Keyboard Layout
-// by Piter PUNK <piterpk@terra.com.br>
-//
-// The keyboard layouts below maps the us(basic), us(intl) and us(alt-intl)
-// to ClassmatePC keyboard. All layouts uses RCTL as level3(switch) since
-// the keyboard doesn't have AltGr key. The EuroSign is engraved at 5 key.
-
-// classmate - us(basic)
-partial alphanumeric_keys
-xkb_symbols "classmate" {
- include "us(basic)"
- name[Group1]= "USA - ClassmatePC";
-
- key <LSGT> { [ backslash, bar, backslash, bar ] };
-
- include "eurosign(5)"
- include "level3(switch)"
-};
-
-// classmate-intl - us(intl)
-// RCTL is generated by Fn+Alt, because that, when trying to access
-// the level3 symbols at 7,8,9,0,u,i,o,p,j,k,l,;,m,. and / we got
-// the keypad keycodes. The keypad is changed to make Fn+Alt+<KP_key>
-// generate the same symbol as the original key.
-partial alphanumeric_keys
-xkb_symbols "classmate-intl" {
- include "us(intl)"
- name[Group1]= "USA - ClassmatePC (International)";
- key.type[Group1]="FOUR_LEVEL";
-
- key <LSGT> { [ backslash, bar, backslash, bar ] };
-
- key <KP7> { [ KP_Home, KP_7,
- onehalf, dead_horn ] };
- key <KP8> { [ KP_Up, KP_8,
- threequarters, dead_ogonek ] };
- key <KP9> { [ KP_Prior, KP_9,
- leftsinglequotemark, dead_breve ] };
- key <KPMU> { [ KP_Multiply, KP_Multiply,
- rightsinglequotemark, dead_abovering ] };
-
- key <KP4> { [ KP_Left, KP_4,
- uacute, Uacute ] };
- key <KP5> { [ KP_Begin, KP_5,
- iacute, Iacute ] };
- key <KP6> { [ KP_Right, KP_6,
- oacute, Oacute ] };
- key <KPSU> { [ KP_Subtract, KP_Subtract,
- odiaeresis, Odiaeresis ] };
-
- key <KP2> { [ KP_Down, KP_2,
- oe, OE ] };
- key <KP3> { [ KP_Next, KP_3,
- oslash, Ooblique ] };
- key <KPAD> { [ KP_Add, KP_Add,
- paragraph, degree ] };
-
- key <KP0> { [ KP_Insert, KP_0,
- mu, mu ] };
- key <KPDL> { [ KP_Delete, KP_Decimal,
- dead_abovedot, dead_caron ] };
- key <KPDV> { [ KP_Divide, KP_Divide,
- questiondown, dead_hook ] };
-
- include "level3(switch)"
-};
-
-// classmate-alt-intl - us(alt-intl)
-// RCTL is generated by Fn+Alt, because that, when trying to access
-// the level3 symbols at 7,8,9,0,u,i,o,p,j,k,l,;,m,. and / we got
-// the keypad keycodes. The keypad is changed to make Fn+Alt+<KP_key>
-// generate the same symbol as the original key.
-partial alphanumeric_keys
-xkb_symbols "classmate-alt-intl" {
- include "us(alt-intl)"
- name[Group1]= "USA - ClassmatePC (Alternative international)";
- key.type[Group1]="FOUR_LEVEL";
-
- key <LSGT> { [ backslash, bar, backslash, bar ] };
-
- key <KPSU> { [ KP_Subtract, KP_Subtract ] };
-
- key <KP9> { [ KP_Prior, KP_9,
- leftsinglequotemark, dead_breve ] };
- key <KPMU> { [ KP_Multiply, KP_Multiply,
- rightsinglequotemark, dead_abovering ] };
-
- key <KPAD> { [ KP_Add, KP_Add,
- dead_ogonek, dead_diaeresis ] };
-
- key <KPDL> { [ KP_Delete, KP_Decimal,
- dead_abovedot, dead_circumflex ] };
- key <KPDV> { [ KP_Divide, KP_Divide,
- dead_hook, dead_hook ] };
-
- include "level3(switch)"
-};
-
-// classmate-altgr-intl - us(altgr-intl)
-// RCTL is generated by Fn+Alt, because that, when trying to access
-// the level3 symbols at 7,8,9,0,u,i,o,p,j,k,l,;,m,. and / we got
-// the keypad keycodes. The keypad is changed to make Fn+Alt+<KP_key>
-// generate the same symbol as the original key.
-partial alphanumeric_keys
-xkb_symbols "classmate-altgr-intl" {
- include "us(altgr-intl)"
- name[Group1]= "USA - ClassmatePC (International Fn+Alt dead-keys)";
- key.type[Group1]="FOUR_LEVEL";
-
- key <LSGT> { [ backslash, bar, backslash, bar ] };
-
- key <KP7> { [ KP_Home, KP_7,
- dead_horn, dead_horn ] };
- key <KP8> { [ KP_Up, KP_8,
- dead_ogonek, dead_ogonek ] };
- key <KP9> { [ KP_Prior, KP_9,
- leftsinglequotemark, dead_breve ] };
- key <KPMU> { [ KP_Multiply, KP_Multiply,
- rightsinglequotemark, dead_abovering ] };
-
- key <KP4> { [ KP_Left, KP_4,
- uacute, Uacute ] };
- key <KP5> { [ KP_Begin, KP_5,
- iacute, Iacute ] };
- key <KP6> { [ KP_Right, KP_6,
- oacute, Oacute ] };
- key <KPSU> { [ KP_Subtract, KP_Subtract,
- odiaeresis, Odiaeresis ] };
-
- key <KP1> { [ KP_End, KP_1,
- idiaeresis, Idiaeresis ] };
- key <KP2> { [ KP_Down, KP_2,
- oe, OE ] };
- key <KP3> { [ KP_Next, KP_3,
- oslash, Ooblique ] };
- key <KPAD> { [ KP_Add, KP_Add,
- paragraph, degree ] };
-
- key <KP0> { [ KP_Insert, KP_0,
- mu, mu ] };
- key <KPDL> { [ KP_Delete, KP_Decimal,
- dead_abovedot, dead_caron ] };
- key <KPDV> { [ KP_Divide, KP_Divide,
- questiondown, dead_hook ] };
-
- include "level3(switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "olpc" {
-
- include "us(basic)"
- name[Group1]= "USA";
-
- // OLPC international US English keyboard layout.
- // It's a little different from the usual international layout.
- // See: http://wiki.laptop.org/go/Image:Keyboard_english.png
-
- key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] };
- key <AE01> { [ 1, exclam, exclamdown, exclamdown ] };
- key <AE02> { [ 2, at, notsign, notsign ] };
- key <AE03> { [ 3, numbersign, 0x1000300, 0x1000300 ] }; // combining grave
- key <AE04> { [ 4, dollar, 0x1000301, 0x1000301 ] }; // combining acute
- key <AE05> { [ 5, percent, 0x1000306, 0x1000306 ] }; // combining breve above
- key <AE06> { [ 6,asciicircum, 0x100030A, 0x100030A ] }; // combining ring above
- key <AE07> { [ 7, ampersand, 0x1000302, 0x1000302 ] }; // combining circumflex above
- key <AE08> { [ 8, asterisk, 0x100030C, 0x100030C ] }; // combining caron above
- key <AE09> { [ 9, parenleft, 0x1000307, 0x1000307 ] }; // combining dot above
- key <AE10> { [ 0, parenright, 0x1000308, 0x1000308 ] }; // combining diaeresis above
- key <AE11> { [ minus, underscore, 0x1000304, 0x1000304 ] }; // combining macron above
- key <AE12> { [ equal, plus, 0x1000303, 0x1000303 ] }; // combining tilde above
-
- key <AD01> { [ q, Q, Greek_omega, Greek_OMEGA ] };
- key <AD02> { [ w, W, oslash, Oslash ] };
- key <AD03> { [ e, E, oe, OE ] };
- key <AD04> { [ r, R, 0x1000327, 0x1000327 ] }; // combining cedilla
- key <AD05> { [ t, T, 0x100032E, 0x100032E ] }; // combining breve below
- key <AD06> { [ y, Y, 0x1000325, 0x1000325 ] }; // combining ring below
- key <AD07> { [ u, U, 0x100032D, 0x100032D ] }; // combining circumflex below
- key <AD08> { [ i, I, 0x100032C, 0x100032C ] }; // combining caron below
- key <AD09> { [ o, O, 0x1000323, 0x1000323 ] }; // combining dot below
- key <AD10> { [ p, P, 0x1000324, 0x1000324 ] }; // combining diaeresis below
- key <AD11> { [ bracketleft, braceleft, 0x1000331, 0x1000331 ] }; // combining macron below
- key <AD12> { [bracketright, braceright, 0x1000330, 0x1000330 ] }; // combining tilde below
-
- key <AC01> { [ a, A, ae, AE ] };
- key <AC02> { [ s, S, ssharp, 0x1001E9C ] }; // uppercase S sharp
- key <AC03> { [ d, D, eth, ETH ] };
- key <AC04> { [ f, F, thorn, THORN ] };
- key <AC06> { [ h, H, sterling, sterling ] };
- key <AC07> { [ j, J, EuroSign, EuroSign ] };
- key <AC10> { [ semicolon, colon, masculine, ordfeminine ] };
- key <AC11> { [ apostrophe, quotedbl, currency, currency ] };
- key <BKSL> { [ backslash, bar, section, section ] };
-
- key <AB03> { [ c, C, ccedilla, Ccedilla ] };
- key <AB06> { [ n, N, ntilde, Ntilde ] };
- key <AB07> { [ m, M, mu, mu ] };
- key <AB08> { [ comma, less, guillemotleft, guillemotleft ] };
- key <AB09> { [ period, greater, guillemotright, guillemotright ] };
- key <AB10> { [ slash, question, questiondown, questiondown ] };
-
- key <I219> { [ multiply, division, ISO_Next_Group, ISO_Prev_Group ] };
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "olpc2" {
- include "us(olpc)"
- name[Group1]= "USA - Layout toggle on multiply/divide key";
- include "group(olpc)"
-};
-
-// Based on Cherokee Nation Official Layout
-// http://www.cherokee.org/extras/downloads/font/Keyboard.htm
-
-partial alphanumeric_keys modifier_keys
-xkb_symbols "chr" {
-
- name[Group1]= "USA - Cherokee";
- key.type[group1]="ALPHABETIC";
-
- // Alphanumeric section
- key <TLDE> { [ grave, U13CA ] };
- key <AE01> { [ 1, U13B1 ] };
- key <AE02> { [ 2, U13C7 ] };
- key <AE03> { [ 3, U13E7 ] };
- key <AE04> { [ U13D9, U13B0 ] };
- key <AE05> { [ U13E6, U13B9 ] };
- key <AE06> { [ U13DC, U13DD ] };
- key <AE07> { [ U13CB, U13E1 ] };
- key <AE08> { [ U13D6, U13BA ] };
- key <AE09> { [ U13D2, parenleft ] };
- key <AE10> { [ U13C4, parenright ] };
- key <AE11> { [ U13BF, U13BC ] };
- key <AE12> { [ U13F3, U13BD ] };
-
- key <AD01> { [ U13AA, U13C6 ] };
- key <AD02> { [ U13B3, U13EB ] };
- key <AD03> { [ U13A1, U13E3 ] };
- key <AD04> { [ U13DB, U13CF ] };
- key <AD05> { [ U13D4, U13D8 ] };
- key <AD06> { [ U13EF, U13F2 ] };
- key <AD07> { [ U13A4, U13AD ] };
- key <AD08> { [ U13A2, U13F1 ] };
- key <AD09> { [ U13A3, U13EC ] };
- key <AD10> { [ U13C1, U13EA ] };
- key <AD11> { [ U13D5, U13D1 ] };
- key <AD12> { [ U13B6, U13E4 ] };
- key <BKSL> { [ U13E9, U13EE ] };
-
- key <AC01> { [ U13A0, U13CC ] };
- key <AC02> { [ U13CD, U13CE ] };
- key <AC03> { [ U13D7, U13D0 ] };
- key <AC04> { [ U13A9, U13C8 ] };
- key <AC05> { [ U13A6, U13E5 ] };
- key <AC06> { [ U13AF, U13B2 ] };
- key <AC07> { [ U13DA, U13AB ] };
- key <AC08> { [ U13B8, U13A7 ] };
- key <AC09> { [ U13B5, U13AE ] };
- key <AC10> { [ U13E8, U13E0 ] };
- key <AC11> { [ apostrophe, quotedbl ] };
-
- key <AB01> { [ U13AC, U13C3 ] };
- key <AB02> { [ U13F4, U13ED ] };
- key <AB03> { [ U13D3, U13DF ] };
- key <AB04> { [ U13A5, U13DE ] };
- key <AB05> { [ U13A8, U13F0 ] };
- key <AB06> { [ U13BE, U13BB ] };
- key <AB07> { [ U13C5, U13B7 ] };
- key <AB08> { [ comma, U13E2 ] };
- key <AB09> { [ period, U13B4 ] };
- key <AB10> { [ U13C2, U13C9 ] };
-
- // End alphanumeric section
-};
-
-// Serbian charecters added as third level symbols to US keyboard layout.
-
-partial alphanumeric_keys
-xkb_symbols "hbs" {
-
- name[Group1]= "USA - Serbo-Croatian";
-
- include "us"
-
- key <TLDE> { [ grave, asciitilde ] };
- key <AE06> { [ 6, dead_caron, asciicircum, asciicircum ] };
- key <AC09> { [ l, L, U1C9, U1C8 ] };
- key <AB06> { [ n, N, U1CC, U1CB ] };
- key <AB01> { [ z, Z, U1C6, U1C5 ] };
- key <AD03> { [ e, E, EuroSign, cent ] };
- key <AC03> { [ d, D, dstroke, Dstroke ] };
- key <AC11> { [ dead_acute, quotedbl, apostrophe, apostrophe ] };
- key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
- key <AB08> { [ comma, less, NoSymbol, guillemotright ] };
- key <AB09> { [ period, greater, NoSymbol, guillemotleft ] };
-
- include "level3(ralt_switch)"
-};
-
-//based on http://upload.wikimedia.org/wikipedia/commons/1/18/T-Mobile_G1_launch_event_2.jpg
-partial alphanumeric_keys
-xkb_symbols "htcdream" {
- include "inet(htcdream)"
- name[Group1]= "USA - htcdream";
-
- //second row
- key <AD01> { [ q, Q, Tab, Tab ] };
- key <AD02> { [ w, W, grave, grave ] };
- key <AD03> { [ e, E, underscore, underscore ] };
- key <AD04> { [ r, R, sterling, sterling ] };
- key <AD05> { [ t, T, EuroSign, EuroSign ] };
- key <AD06> { [ y, Y, division, division ] };
- key <AD07> { [ u, U, multiply, multiply ] };
- key <AD08> { [ i, I, minus, minus ] };
- key <AD09> { [ o, O, plus, plus ] };
- key <AD10> { [ p, P, equal, equal ] };
-
- //third row
- key <AC01> { [ a, A, NoSymbol, NoSymbol ] };
- key <AC02> { [ s, S, bar, bar ] };
- key <AC03> { [ d ,D, backslash, backslash ] };
- key <AC04> { [ f, F, braceleft, braceleft ] };
- key <AC05> { [ g, G, braceright, braceright ] };
- key <AC06> { [ h, H, colon, colon ] };
- key <AC07> { [ j, J, semicolon, semicolon ] };
- key <AC08> { [ k, K, quotedbl, quotedbl ] };
- key <AC09> { [ l, L, apostrophe, apostrophe ] };
-
- //forth row
- key <AB01> { [ z, Z, NoSymbol, NoSymbol ] };
- key <AB02> { [ x, X, NoSymbol, NoSymbol ] };
- key <AB03> { [ c, C, NoSymbol, NoSymbol ] };
- key <AB04> { [ v, V, bracketleft, bracketleft ] };
- key <AB05> { [ b, B, bracketright, bracketright ] };
- key <AB06> { [ n, N, less, less ] };
- key <AB07> { [ m, M, greater, greater ] };
- key <AB08> { [ comma, comma, question, question ] };
-
- //fifth row
- key <FK15> { [ at, at, asciitilde, asciitilde ] };
-
- include "level3(alt_switch)"
-};
+default
+partial alphanumeric_keys modifier_keys
+xkb_symbols "basic" {
+
+ name[Group1]= "USA";
+
+ // Alphanumeric section
+ key <TLDE> { [ grave, asciitilde ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E ] };
+ key <AD04> { [ r, R ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y ] };
+ key <AD07> { [ u, U ] };
+ key <AD08> { [ i, I ] };
+ key <AD09> { [ o, O ] };
+ key <AD10> { [ p, P ] };
+ key <AD11> { [ bracketleft, braceleft ] };
+ key <AD12> { [ bracketright, braceright ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ s, S ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K ] };
+ key <AC09> { [ l, L ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ apostrophe, quotedbl ] };
+
+ key <AB01> { [ z, Z ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
+
+ key <BKSL> { [ backslash, bar ] };
+ // End alphanumeric section
+};
+
+partial alphanumeric_keys
+xkb_symbols "euro" {
+
+ name[Group1]= "USA - With EuroSign on 5";
+
+ include "us(basic)"
+
+ include "eurosign(5)"
+
+ include "level3(ralt_switch)"
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "intl" {
+
+ name[Group1]= "USA - International (with dead keys)";
+
+ include "us(basic)"
+
+ // Alphanumeric section
+ key <TLDE> { [dead_grave, dead_tilde, grave, asciitilde ] };
+ key <AE01> { [ 1, exclam, exclamdown, onesuperior ] };
+ key <AE02> { [ 2, at, twosuperior, dead_doubleacute ] };
+ key <AE03> { [ 3, numbersign, threesuperior, dead_macron ] };
+ key <AE04> { [ 4, dollar, currency, sterling ] };
+ key <AE05> { [ 5, percent, EuroSign, dead_cedilla ] };
+ key <AE06> { [ 6, dead_circumflex, onequarter, asciicircum ] };
+ key <AE07> { [ 7, ampersand, onehalf, dead_horn ] };
+ key <AE08> { [ 8, asterisk, threequarters, dead_ogonek ] };
+ key <AE09> { [ 9, parenleft, leftsinglequotemark, dead_breve ] };
+ key <AE10> { [ 0, parenright, rightsinglequotemark, dead_abovering ] };
+ key <AE11> { [ minus, underscore, yen, dead_belowdot ] };
+ key <AE12> { [ equal, plus, multiply, division ] };
+
+ key <AD01> { [ q, Q, adiaeresis, Adiaeresis ] };
+ key <AD02> { [ w, W, aring, Aring ] };
+ key <AD03> { [ e, E, eacute, Eacute ] };
+ key <AD04> { [ r, R, registered, registered ] };
+ key <AD05> { [ t, T, thorn, THORN ] };
+ key <AD06> { [ y, Y, udiaeresis, Udiaeresis ] };
+ key <AD07> { [ u, U, uacute, Uacute ] };
+ key <AD08> { [ i, I, iacute, Iacute ] };
+ key <AD09> { [ o, O, oacute, Oacute ] };
+ key <AD10> { [ p, P, odiaeresis, Odiaeresis ] };
+ key <AD11> { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] };
+ key <AD12> { [bracketright, braceright, guillemotright, rightdoublequotemark ] };
+
+ key <AC01> { [ a, A, aacute, Aacute ] };
+ key <AC02> { [ s, S, ssharp, section ] };
+ key <AC03> { [ d, D, eth, ETH ] };
+ key <AC04> { [ f, F, f, F ] };
+ key <AC05> { [ g, G, g, G ] };
+ key <AC06> { [ h, H, h, H ] };
+ key <AC07> { [ j, J, j, J ] };
+ key <AC08> { [ k, K, oe, OE ] };
+
+ key <AC09> { [ l, L, oslash, Ooblique ] };
+ key <AC10> { [ semicolon, colon, paragraph, degree ] };
+ key <AC11> { [dead_acute, dead_diaeresis, apostrophe, quotedbl ] };
+
+ key <AB01> { [ z, Z, ae, AE ] };
+ key <AB02> { [ x, X, x, X ] };
+ key <AB03> { [ c, C, copyright, cent ] };
+ key <AB04> { [ v, V, v, V ] };
+ key <AB05> { [ b, B, b, B ] };
+ key <AB06> { [ n, N, ntilde, Ntilde ] };
+ key <AB07> { [ m, M, mu, mu ] };
+ key <AB08> { [ comma, less, ccedilla, Ccedilla ] };
+ key <AB09> { [ period, greater, dead_abovedot, dead_caron ] };
+ key <AB10> { [ slash, question, questiondown, dead_hook ] };
+ key <BKSL> { [ backslash, bar, notsign, brokenbar ] };
+
+ include "level3(ralt_switch)"
+};
+
+// Based on symbols/us_intl keyboard map:
+// Dead-keys definition for a very simple US/ASCII layout.
+// by Conectiva (http://www.conectiva.com.br)
+// modified by Ricardo Y. Igarashi (iga@that.com.br)
+
+// Added the following deadkeys, to make it truly international:
+//
+// dead_macron: on AltGr-minus
+// dead_breve: on AltGr-parenleft
+// dead_abovedot: on AltGr-period
+// dead_abovering: on AltGr-0
+// dead_doubleacute: on AltGr-equal (as quotedbl is already used)
+// dead_caron: on AltGr-less (AltGr-shift-comma)
+// dead_cedilla: on AltGr-comma
+// dead_ogonek: on AltGr-semicolon
+// dead_belowdot: on AltGr-underscore (AltGr-shift-minus)
+// dead_hook: on AltGr-question
+// dead_horn: on AltGr-plus (AltGr-shift-equal)
+// dead_diaeresis: on AltGr-colon (Alt-shift-semicolon)
+//
+// those were already there:
+// dead_grave
+// dead_acute
+// dead_circumflex
+// dead_tilde
+// dead_diaeresis
+
+partial alphanumeric_keys
+xkb_symbols "alt-intl" {
+
+ name[Group1]= "USA - Alternative international";
+
+ include "us"
+
+ key <TLDE> { [ dead_grave, dead_tilde, grave, asciitilde ] };
+ key <AE05> { [ 5, percent, EuroSign ] };
+ key <AE06> { [ 6, dead_circumflex, asciicircum, asciicircum ] };
+ key <AE09> { [ 9, parenleft, leftsinglequotemark, dead_breve ] };
+ key <AE10> { [ 0, parenright, rightsinglequotemark, dead_abovering ] };
+ key <AE11> { [ minus, underscore, dead_macron, dead_belowdot ] };
+ key <AE12> { [ equal, plus, dead_doubleacute, dead_horn ] };
+
+ key <AD03> { [ e, E, EuroSign, cent ] };
+
+ key <AC10> { [ semicolon, colon, dead_ogonek, dead_diaeresis ] };
+ key <AC11> { [ dead_acute, dead_diaeresis, apostrophe, quotedbl ] };
+
+ key <AB08> { [ comma, less, dead_cedilla, dead_caron ] };
+ key <AB09> { [ period, greater, dead_abovedot, dead_circumflex ] };
+ key <AB10> { [ slash, question, dead_hook, dead_hook ] };
+
+ include "level3(ralt_switch)"
+};
+
+// based on a keyboard map from an 'xkb/symbols/dk' file
+
+partial alphanumeric_keys
+xkb_symbols "dvorak" {
+
+ name[Group1]= "USA - Dvorak";
+
+ // Alphanumeric section
+
+ key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] };
+
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, asciicircum, dead_circumflex, dead_circumflex ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft, dead_grave] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ bracketleft, braceleft ] };
+ key <AE12> { [ bracketright, braceright, dead_tilde] };
+
+ key <AD01> { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] };
+ key <AD02> { [ comma, less, dead_cedilla, dead_caron ] };
+ key <AD03> { [ period, greater, dead_abovedot, periodcentered ] };
+ key <AD04> { [ p, P ] };
+ key <AD05> { [ y, Y ] };
+ key <AD06> { [ f, F ] };
+ key <AD07> { [ g, G ] };
+ key <AD08> { [ c, C ] };
+ key <AD09> { [ r, R ] };
+ key <AD10> { [ l, L ] };
+ key <AD11> { [ slash, question ] };
+ key <AD12> { [ equal, plus ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ o, O ] };
+ key <AC03> { [ e, E ] };
+ key <AC04> { [ u, U ] };
+ key <AC05> { [ i, I ] };
+ key <AC06> { [ d, D ] };
+ key <AC07> { [ h, H ] };
+ key <AC08> { [ t, T ] };
+ key <AC09> { [ n, N ] };
+ key <AC10> { [ s, S ] };
+ key <AC11> { [ minus, underscore ] };
+
+ key <AB01> { [ semicolon, colon, dead_ogonek, dead_doubleacute ] };
+ key <AB02> { [ q, Q ] };
+ key <AB03> { [ j, J ] };
+ key <AB04> { [ k, K ] };
+ key <AB05> { [ x, X ] };
+ key <AB06> { [ b, B ] };
+ key <AB07> { [ m, M ] };
+ key <AB08> { [ w, W ] };
+ key <AB09> { [ v, V ] };
+ key <AB10> { [ z, Z ] };
+
+ key <BKSL> { [ backslash, bar ] };
+};
+
+// Dvorak international with dead keys
+// Olivier Mehani (shtrom-xorg@ssji.net)
+// Reproduce the per-key mapping of us(intl) for the dvorak layout
+// aka "I just swapped my keys over"
+partial alphanumeric_keys
+xkb_symbols "dvorak-intl" {
+
+ name[Group1]= "USA - Dvorak international (with dead keys)";
+
+ include "us(dvorak)"
+
+ key <TLDE> { [dead_grave, dead_tilde, grave, asciitilde ] };
+
+ key <AE01> { [ 1, exclam, exclamdown, onesuperior ] };
+ key <AE02> { [ 2, at, twosuperior, dead_doubleacute ] };
+ key <AE03> { [ 3, numbersign, threesuperior, dead_macron ] };
+ key <AE04> { [ 4, dollar, currency, sterling ] };
+ key <AE05> { [ 5, percent, EuroSign, dead_cedilla ] };
+ key <AE06> { [ 6, dead_circumflex, onequarter, asciicircum ] };
+ key <AE07> { [ 7, ampersand, onehalf, dead_horn ] };
+ key <AE08> { [ 8, asterisk, threequarters, dead_ogonek ] };
+ key <AE09> { [ 9, parenleft, leftsinglequotemark, dead_breve ] };
+ key <AE10> { [ 0, parenright, rightsinglequotemark, dead_abovering ] };
+ key <AE11> { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] };
+ key <AE12> { [bracketright, braceright, guillemotright, rightdoublequotemark ] };
+
+ key <AD01> { [dead_acute, dead_diaeresis, apostrophe, quotedbl ] };
+ key <AD02> { [ comma, less, ccedilla, Ccedilla ] };
+ key <AD03> { [ period, greater, dead_abovedot, dead_caron ] };
+ key <AD04> { [ p, P, odiaeresis, Odiaeresis ] };
+ key <AD05> { [ y, Y, udiaeresis, Udiaeresis ] };
+ // key <AD06> { [ f, F ] };
+ // key <AD07> { [ g, G ] };
+ key <AD08> { [ c, C, copyright, cent ] };
+ key <AD09> { [ r, R, registered, registered ] };
+ key <AD10> { [ l, L, oslash, Ooblique ] };
+ key <AD11> { [ slash, question, questiondown, dead_hook ] };
+ // key <AD12> { [ equal, plus, multiply, division ] };
+
+ key <AC01> { [ a, A, aacute, Aacute ] };
+ key <AC02> { [ o, O, oacute, Oacute ] };
+ key <AC03> { [ e, E, eacute, Eacute ] };
+ key <AC04> { [ u, U, uacute, Uacute ] };
+ key <AC05> { [ i, I, iacute, Iacute ] };
+ key <AC06> { [ d, D, eth, ETH ] };
+ // key <AC07> { [ h, H ] };
+ key <AC08> { [ t, T, thorn, THORN ] };
+ key <AC09> { [ n, N, ntilde, Ntilde ] };
+ key <AC10> { [ s, S, ssharp, section ] };
+ // key <AC11> { [ minus, underscore, yen, dead_belowdot ] };
+
+ key <AB01> { [ semicolon, colon, paragraph, degree ] };
+ key <AB02> { [ q, Q, adiaeresis, Adiaeresis ] };
+ // key <AB03> { [ j, J ] };
+ key <AB04> { [ k, K, oe, OE ] };
+ // key <AB05> { [ x, X ] };
+ // key <AB06> { [ b, B ] };
+ key <AB07> { [ m, M, mu, mu ] };
+ key <AB08> { [ w, W, aring, Aring ] };
+ // key <AB09> { [ v, V ] };
+ key <AB10> { [ z, Z, ae, AE ] };
+
+ key <BKSL> { [ backslash, bar, notsign, brokenbar ] };
+
+ include "level3(ralt_switch)"
+};
+
+// Dvorak international without dead keys
+// Stephane Magnenat (stephane at magnenat dot net, http://stephane.magnenat.net)
+// Based on information from http://www.poupinou.org/dvorak/index.html
+//
+// ` 1 2 3 4 5 6 7 8 9 0 [ ] \
+// €
+//
+// ' , . p y f g c r l / =
+// ä ê ë ü ç
+//
+// a o e u i d h t n s -
+// à ô é û î ß
+//
+// ; q j k x b m w v z
+// â ö è ù ï
+
+partial alphanumeric_keys
+xkb_symbols "dvorak-alt-intl" {
+
+ name[Group1]= "USA - Dvorak alternative international (no dead keys)";
+
+ include "us(dvorak)"
+
+ key <AE04> { [ 4, dollar, EuroSign ] };
+
+ key <AD02> { [ comma, less, adiaeresis, dead_caron ] };
+ key <AD03> { [ period, greater, ecircumflex, periodcentered ] };
+ key <AD04> { [ p, P, ediaeresis, dead_cedilla ] };
+ key <AD05> { [ y, Y, udiaeresis ] };
+ key <AD08> { [ c, C, ccedilla, dead_abovedot ] };
+
+ key <AC01> { [ a, A, agrave ] };
+ key <AC02> { [ o, O, ocircumflex ] };
+ key <AC03> { [ e, E, eacute ] };
+ key <AC04> { [ u, U, ucircumflex ] };
+ key <AC05> { [ i, I, icircumflex ] };
+ key <AC10> { [ s, S, ssharp ] };
+
+ key <AB01> { [ semicolon, colon, acircumflex ] };
+ key <AB02> { [ q, Q, odiaeresis, dead_ogonek ] };
+ key <AB03> { [ j, J, egrave, dead_doubleacute ] };
+ key <AB04> { [ k, K, ugrave ] };
+ key <AB05> { [ x, X, idiaeresis ] };
+
+ include "level3(ralt_switch)"
+};
+
+// Left and right handed dvorak layouts
+// by sqweek <sqweek@gmail.com> 2006-01-30
+// Based on the corresponding layouts in the console-tools package.
+partial alphanumeric_keys
+xkb_symbols "dvorak-l" {
+
+ include "us(dvorak)"
+ name[Group1]= "USA - Left handed Dvorak";
+
+ key <AE01> { [ bracketleft, braceleft ] };
+ key <AE02> { [ bracketright, braceright ] };
+ key <AE03> { [ slash, question ] };
+ key <AE04> { [ p, P ] };
+ key <AE05> { [ f, F ] };
+ key <AE06> { [ m, M ] };
+ key <AE07> { [ l, L ] };
+ key <AE08> { [ j, J ] };
+ key <AE09> { [ 4, dollar ] };
+ key <AE10> { [ 3, numbersign ] };
+ key <AE11> { [ 2, at ] };
+ key <AE12> { [ 1, exclam ] };
+
+ key <AD01> { [ semicolon, colon ] };
+ key <AD02> { [ q, Q ] };
+ key <AD03> { [ b, B ] };
+ key <AD04> { [ y, Y ] };
+ key <AD05> { [ u, U ] };
+ key <AD06> { [ r, R ] };
+ key <AD07> { [ s, S ] };
+ key <AD08> { [ o, O ] };
+ key <AD09> { [ period, greater ] };
+ key <AD10> { [ 6, asciicircum ] };
+ key <AD11> { [ 5, percent ] };
+ key <AD12> { [ equal, plus ] };
+
+ key <AC01> { [ minus, underscore ] };
+ key <AC02> { [ k, K ] };
+ key <AC03> { [ c, C ] };
+ key <AC04> { [ d, D ] };
+ key <AC05> { [ t, T ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ e, E ] };
+ key <AC08> { [ a, A ] };
+ key <AC09> { [ z, Z ] };
+ key <AC10> { [ 8, asterisk ] };
+ key <AC11> { [ 7, ampersand ] };
+
+ key <AB01> { [ apostrophe, quotedbl ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ g, G ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ w, W ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ i, I ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ 0, parenright ] };
+ key <AB10> { [ 9, parenleft ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "dvorak-r" {
+
+ include "us(dvorak)"
+ name[Group1]= "USA - Right handed Dvorak";
+
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ j, J ] };
+ key <AE06> { [ l, L ] };
+ key <AE07> { [ m, M ] };
+ key <AE08> { [ f, F ] };
+ key <AE09> { [ p, P ] };
+ key <AE10> { [ slash, question ] };
+ key <AE11> { [ bracketleft, braceleft ] };
+ key <AE12> { [ bracketright, braceright ] };
+
+ key <AD01> { [ 5, percent ] };
+ key <AD02> { [ 6, asciicircum ] };
+ key <AD03> { [ q, Q ] };
+ key <AD04> { [ period, greater ] };
+ key <AD05> { [ o, O ] };
+ key <AD06> { [ r, R ] };
+ key <AD07> { [ s, S ] };
+ key <AD08> { [ u, U ] };
+ key <AD09> { [ y, Y ] };
+ key <AD10> { [ b, B ] };
+ key <AD11> { [ semicolon, colon ] };
+ key <AD12> { [ equal, plus ] };
+
+ key <AC01> { [ 7, ampersand ] };
+ key <AC02> { [ 8, asterisk ] };
+ key <AC03> { [ z, Z ] };
+ key <AC04> { [ a, A ] };
+ key <AC05> { [ e, E ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ t, T ] };
+ key <AC08> { [ d, D ] };
+ key <AC09> { [ c, C ] };
+ key <AC10> { [ k, K ] };
+ key <AC11> { [ minus, underscore ] };
+
+ key <AB01> { [ 9, parenleft ] };
+ key <AB02> { [ 0, parenright ] };
+ key <AB03> { [ x, X ] };
+ key <AB04> { [ comma, less ] };
+ key <AB05> { [ i, I ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ w, W ] };
+ key <AB08> { [ v, V ] };
+ key <AB09> { [ g, G ] };
+ key <AB10> { [ apostrophe, quotedbl ] };
+};
+
+// Classic dvorak layout
+// by Piter Punk <piterpk@terra.com.br> - 2006-07-06
+// Based on dvorak layout and e-mail from Russel L. Harris rlharris@oplink.net
+// on xorg list.
+partial alphanumeric_keys
+xkb_symbols "dvorak-classic" {
+
+ name[Group1]= "USA - Classic Dvorak";
+
+ // Alphanumeric section
+
+ key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] };
+
+ key <AE01> { [ bracketleft, braceleft ] };
+ key <AE02> { [ 7, ampersand ] };
+ key <AE03> { [ 5, percent ] };
+ key <AE04> { [ 3, numbersign ] };
+ key <AE05> { [ 1, exclam ] };
+ key <AE06> { [ 9, parenleft, dead_grave] };
+ key <AE07> { [ 0, parenright ] };
+ key <AE08> { [ 2, at ] };
+ key <AE09> { [ 4, dollar ] };
+ key <AE10> { [ 6, asciicircum, dead_circumflex, dead_circumflex ] };
+ key <AE11> { [ 8, asterisk ] };
+ key <AE12> { [ bracketright, braceright, dead_tilde] };
+
+ key <AD01> { [ slash, question ] };
+ key <AD02> { [ comma, less, dead_cedilla, dead_caron ] };
+ key <AD03> { [ period, greater, dead_abovedot, periodcentered ] };
+ key <AD04> { [ p, P ] };
+ key <AD05> { [ y, Y ] };
+ key <AD06> { [ f, F ] };
+ key <AD07> { [ g, G ] };
+ key <AD08> { [ c, C ] };
+ key <AD09> { [ r, R ] };
+ key <AD10> { [ l, L ] };
+ key <AD11> { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] };
+ key <AD12> { [ equal, plus ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ o, O ] };
+ key <AC03> { [ e, E ] };
+ key <AC04> { [ u, U ] };
+ key <AC05> { [ i, I ] };
+ key <AC06> { [ d, D ] };
+ key <AC07> { [ h, H ] };
+ key <AC08> { [ t, T ] };
+ key <AC09> { [ n, N ] };
+ key <AC10> { [ s, S ] };
+ key <AC11> { [ minus, underscore ] };
+
+ key <AB01> { [ semicolon, colon, dead_ogonek, dead_doubleacute ] };
+ key <AB02> { [ q, Q ] };
+ key <AB03> { [ j, J ] };
+ key <AB04> { [ k, K ] };
+ key <AB05> { [ x, X ] };
+ key <AB06> { [ b, B ] };
+ key <AB07> { [ m, M ] };
+ key <AB08> { [ w, W ] };
+ key <AB09> { [ v, V ] };
+ key <AB10> { [ z, Z ] };
+ key <BKSL> { [ backslash, bar ] };
+};
+
+// Programmer Dvorak, by Roland Kaufmann <rlndkfmn at gmail dot com>
+// License: BSD, available at <http://www.kaufmann.no/roland/dvorak/license.html>
+// Main features: Numbers are in shift position (like French), symbols have been
+// placed in locations that give good hand-alternation and finger rolling with
+// symbols that usually follows, accented characters are possible for I18N.
+partial alphanumeric_keys
+xkb_symbols "dvp" {
+ include "us(dvorak)"
+
+ name[Group1] = "USA - Programmer Dvorak";
+
+ // Unmodified Shift AltGr Shift+AltGr
+ // symbols row, left side
+ key <TLDE> { [ dollar, asciitilde, dead_tilde ] };
+ key <AE01> { [ ampersand, percent ] };
+ key <AE02> { [ bracketleft, 7, currency ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <AE03> { [ braceleft, 5, cent ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <AE04> { [ braceright, 3, yen ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <AE05> { [ parenleft, 1, EuroSign ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <AE06> { [ equal, 9, sterling ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+
+ // symbols row, right side
+ key <AE07> { [ asterisk, 0 ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <AE08> { [ parenright, 2, onehalf ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <AE09> { [ plus, 4 ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <AE10> { [ bracketright, 6 ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <AE11> { [ exclam, 8, exclamdown ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <AE12> { [ numbersign, grave, dead_grave ] };
+ key <BKSP> { [ BackSpace ] };
+
+ // upper row, left side
+ key <AD01> { [ semicolon, colon, dead_diaeresis ] };
+ key <AD02> { [ comma, less, guillemotleft ] };
+ key <AD03> { [ period, greater, guillemotright ] };
+ key <AD04> { [ p, P, paragraph, section ] };
+ key <AD05> { [ y, Y, udiaeresis, Udiaeresis ] };
+
+ // upper row, right side
+ key <AD08> { [ c, C, ccedilla, Ccedilla ] };
+ key <AD09> { [ r, R, registered, trademark ] };
+ key <AD11> { [ slash, question, questiondown ] };
+ key <AD12> { [ at, asciicircum, dead_circumflex, dead_caron ] };
+
+ // home row, left side
+ key <AC01> { [ a, A, aring, Aring ] };
+ key <AC02> { [ o, O, oslash, Ooblique ] };
+ key <AC03> { [ e, E, ae, AE ] };
+ key <AC04> { [ u, U, eacute, Eacute ] };
+
+ // home row, right side
+ key <AC06> { [ d, D, eth, ETH ] };
+ key <AC07> { [ h, H, dead_acute ] };
+ key <AC08> { [ t, T, thorn, THORN ] };
+ key <AC09> { [ n, N, ntilde, Ntilde ] };
+ key <AC10> { [ s, S, ssharp ] };
+ key <AC11> { [ minus, underscore, hyphen ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <BKSL> { [ backslash, bar ] };
+
+ // lower row, left side
+ key <AB01> { [ apostrophe, quotedbl, dead_acute ] };
+};
+
+// phonetic layout for Russian letters on an US keyboard
+// by Ivan Popov <pin@konvalo.org> 2005-07-17
+
+// level3 modifier is a shortcut to the "us" meaning of the keys where
+// we place cyrillic letters, handy for accessing the corresponding
+// punctuation marks.
+// It is important to have access to punctuation marks, and the rest of
+// alphabetical keys are added for being consequent so that the users
+// can expect the level3 modifier to give what the key label shows.
+
+partial alphanumeric_keys
+xkb_symbols "rus" {
+
+ name[Group1]= "USA - Russian phonetic";
+
+ include "us(basic)"
+
+key.type[group1]="FOUR_LEVEL_ALPHABETIC";
+
+ key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
+ key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <TLDE> { [ Cyrillic_io, Cyrillic_IO, grave, asciitilde ] };
+ key <LatV> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <LatI> { [ Cyrillic_i, Cyrillic_I ] };
+ key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
+ key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
+ key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <LatH> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AC10> { [ Cyrillic_che, Cyrillic_CHE, semicolon, colon ] };
+ key <AD11> { [ Cyrillic_sha, Cyrillic_SHA, bracketleft, braceleft] };
+ key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA, bracketright, braceright ] };
+ key <AE12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, equal, plus ] };
+ key <LatY> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <LatX> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <BKSL> { [ Cyrillic_e, Cyrillic_E, backslash, bar ] };
+ key <AC11> { [ Cyrillic_yu, Cyrillic_YU, apostrophe, quotedbl ] };
+ key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "mac" {
+
+ include "us(basic)"
+ name[Group1]= "USA - Macintosh";
+ key.type[group1]="FOUR_LEVEL";
+
+ // Slightly improvised from http://homepage.mac.com/thgewecke/kblayout.jpg
+ key <LSGT> { [ section, plusminus, section, plusminus ] };
+ key <TLDE> { [ grave, asciitilde, dead_grave, dead_horn ] };
+ key <AE01> { [ 1, exclam, exclamdown, U2044 ] };
+ key <AE02> { [ 2, at, trademark, EuroSign ] };
+ key <AE03> { [ 3, numbersign, sterling, U2039 ] };
+ key <AE04> { [ 4, dollar, cent, U203A ] };
+ key <AE05> { [ 5, percent, infinity, UFB01 ] };
+ key <AE06> { [ 6,asciicircum, section, UFB02 ] };
+ key <AE07> { [ 7, ampersand, paragraph, doubledagger ] };
+ key <AE08> { [ 8, asterisk, enfilledcircbullet, degree ] };
+ key <AE09> { [ 9, parenleft, ordfeminine, periodcentered ] };
+ key <AE10> { [ 0, parenright, masculine,singlelowquotemark] };
+ key <AE11> { [ minus, underscore, endash, emdash ] };
+ key <AE12> { [ equal, plus, notequal, plusminus ] };
+
+ key <AD01> { [ q, Q, oe, OE ] };
+ key <AD02> { [ w, W, U2211,doublelowquotemark] };
+ key <AD03> { [ e, E, dead_acute, acute ] };
+ key <AD04> { [ r, R, registered, U2030 ] };
+ key <AD05> { [ t, T, dagger, dead_caron ] };
+ key <AD06> { [ y, Y, yen, onequarter ] };
+ key <AD07> { [ u, U, dead_diaeresis, diaeresis ] };
+ key <AD08> { [ i, I, dead_circumflex, U02C6 ] };
+ key <AD09> { [ o, O, oslash, Ooblique ] };
+ key <AD10> { [ p, P, Greek_pi, U220F ] };
+ key <AD11> { [ bracketleft, braceleft, leftdoublequotemark, rightdoublequotemark ] };
+ key <AD12> { [bracketright, braceright, leftsinglequotemark, rightsinglequotemark ] };
+ key <BKSL> { [ backslash, bar, guillemotleft, guillemotright ] };
+
+ key <AC01> { [ a, A, aring, Aring ] };
+ key <AC02> { [ s, S, ssharp, dead_stroke ] };
+ key <AC03> { [ d, D, partialderivative, eth ] };
+ key <AC04> { [ f, F, function, dead_hook ] };
+ key <AC05> { [ g, G, copyright, dead_doubleacute ] };
+ key <AC06> { [ h, H, dead_abovedot, dead_belowdot ] };
+ key <AC07> { [ j, J, U2206, onehalf ] };
+ key <AC08> { [ k, K,dead_abovering, UF8FF ] };
+
+ key <AC09> { [ l, L, notsign, THORN ] };
+ key <AC10> { [ semicolon, colon, U2026, thorn ] };
+ key <AC11> { [apostrophe, quotedbl, ae, AE ] };
+
+ key <AB01> { [ z, Z, Greek_OMEGA, dead_cedilla ] };
+ key <AB02> { [ x, X, U2248, dead_ogonek ] };
+ // unclear whether "approxeq" is 2248 or 2245
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+ key <AB04> { [ v, V, squareroot, U25CA ] };
+ key <AB05> { [ b, B, integral, idotless ] };
+ key <AB06> { [ n, N, dead_tilde, U02DC ] };
+ key <AB07> { [ m, M, mu, threequarters ] };
+ key <AB08> { [ comma, less, lessthanequal, dead_macron ] };
+ key <AB09> { [ period, greater, greaterthanequal, dead_breve ] };
+ key <AB10> { [ slash, question, division, questiondown ] };
+
+ include "level3(ralt_switch)"
+};
+
+// Colemak symbols for xkb on X.Org Server 7.x
+// 2006-01-01 Shai Coleman, http://colemak.com/ . Public domain.
+
+partial alphanumeric_keys
+xkb_symbols "colemak" {
+ include "us"
+ name[Group1]= "USA - Colemak";
+
+ // Alphanumeric section
+ key <TLDE> { [ grave, asciitilde, dead_tilde, asciitilde ] };
+ key <AE01> { [ 1, exclam, exclamdown, onesuperior ] };
+ key <AE02> { [ 2, at, masculine, twosuperior ] };
+ key <AE03> { [ 3, numbersign, ordfeminine, threesuperior ] };
+ key <AE04> { [ 4, dollar, cent, sterling ] };
+ key <AE05> { [ 5, percent, EuroSign, yen ] };
+ key <AE06> { [ 6, asciicircum, hstroke, Hstroke ] };
+ key <AE07> { [ 7, ampersand, eth, ETH ] };
+ key <AE08> { [ 8, asterisk, thorn, THORN ] };
+ key <AE09> { [ 9, parenleft, leftsinglequotemark, leftdoublequotemark ] };
+ key <AE10> { [ 0, parenright, rightsinglequotemark, rightdoublequotemark ] };
+ key <AE11> { [ minus, underscore, endash, emdash ] };
+ key <AE12> { [ equal, plus, multiply, division ] };
+
+ key <AD01> { [ q, Q, adiaeresis, Adiaeresis ] };
+ key <AD02> { [ w, W, aring, Aring ] };
+ key <AD03> { [ f, F, atilde, Atilde ] };
+ key <AD04> { [ p, P, oslash, Ooblique ] };
+ key <AD05> { [ g, G, dead_ogonek, asciitilde ] };
+ key <AD06> { [ j, J, dstroke, Dstroke ] };
+ key <AD07> { [ l, L, lstroke, Lstroke ] };
+ key <AD08> { [ u, U, uacute, Uacute ] };
+ key <AD09> { [ y, Y, udiaeresis, Udiaeresis ] };
+ key <AD10> { [ semicolon, colon, odiaeresis, Odiaeresis ] };
+ key <AD11> { [ bracketleft, braceleft, guillemotleft, 0x1002039 ] };
+ key <AD12> { [ bracketright, braceright, guillemotright, 0x100203a ] };
+ key <BKSL> { [ backslash, bar, asciitilde, asciitilde ] };
+
+ key <AC01> { [ a, A, aacute, Aacute ] };
+ key <AC02> { [ r, R, dead_grave, asciitilde ] };
+ key <AC03> { [ s, S, ssharp, asciitilde ] };
+ key <AC04> { [ t, T, dead_acute, dead_doubleacute ] };
+ key <AC05> { [ d, D, dead_diaeresis, asciitilde ] };
+ key <AC06> { [ h, H, dead_caron, asciitilde ] };
+ key <AC07> { [ n, N, ntilde, Ntilde ] };
+ key <AC08> { [ e, E, eacute, Eacute ] };
+ key <AC09> { [ i, I, iacute, Iacute ] };
+ key <AC10> { [ o, O, oacute, Oacute ] };
+ key <AC11> { [ apostrophe, quotedbl, otilde, Otilde ] };
+
+ key <AB01> { [ z, Z, ae, AE ] };
+ key <AB02> { [ x, X, dead_circumflex, asciitilde ] };
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+ key <AB04> { [ v, V, oe, OE ] };
+ key <AB05> { [ b, B, dead_breve, asciitilde ] };
+ key <AB06> { [ k, K, dead_abovering, asciitilde ] };
+ key <AB07> { [ m, M, dead_macron, asciitilde ] };
+ key <AB08> { [ comma, less, dead_cedilla, asciitilde ] };
+ key <AB09> { [ period, greater, dead_abovedot, asciitilde ] };
+ key <AB10> { [ slash, question, questiondown, asciitilde ] };
+
+ key <CAPS> { [ BackSpace, BackSpace, BackSpace, BackSpace ] };
+ key <LSGT> { [ minus, underscore, endash, emdash ] };
+ key <SPCE> { [ space, space, space, nobreakspace ] };
+
+ include "level3(ralt_switch)"
+};
+
+// I do NOT like dead-keys - the International keyboard as defined by Microsoft
+// doesn't fit my needs. Why use two keystrokes for all simple characters (eg '
+// and <space> generates a single ') just to have an é (eacute) in two strokes
+// as well? I type ' more often than é (eacute).
+//
+// This file works just like a regular keyboard, BUT has all dead-keys
+// accessible at level3 (through AltGr). An ë (ediaeresis) is now: AltGr+"
+// followed by an e. In other words, this keyboard is not international as long
+// as you leave the right Alt key alone.
+//
+// The original MS International keyboard was intended for Latin1 (iso8859-1).
+// With the introduction of iso8859-15, the (important) ligature oe (and OE)
+// became available. I added them next to ae. Because I write ediaeresis more
+// often than registered, I moved registered to be next to copyright and added
+// ediaeresis and idiaeresis. - Adriaan
+
+partial alphanumeric_keys
+xkb_symbols "altgr-intl" {
+
+ name[Group1]= "USA - International (AltGr dead keys)";
+
+ include "us(intl)"
+
+// five dead keys moved into level3:
+
+ key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] };
+ key <AC11> { [apostrophe,quotedbl, dead_acute, dead_diaeresis ] };
+
+// diversions from the MS Intl keyboard:
+
+ key <AE01> { [ 1, exclam, onesuperior, exclamdown ] };
+ key <AD04> { [ r, R, ediaeresis, Ediaeresis ] };
+ key <AC07> { [ j, J, idiaeresis, Idiaeresis ] };
+ key <AB02> { [ x, X, oe, OE ] };
+ key <AB04> { [ v, V, registered, registered ] };
+
+// onequarter etc (not in iso8859-15) moved to get three unshifted deadkeys:
+
+ key <AE06> { [ 6, asciicircum, dead_circumflex, onequarter ] };
+ key <AE07> { [ 7, ampersand, dead_horn, onehalf ] };
+ key <AE08> { [ 8, asterisk, dead_ogonek, threequarters ] };
+
+ include "level3(ralt_switch)"
+};
+
+// Intel ClassmatePC Keyboard Layout
+// by Piter PUNK <piterpk@terra.com.br>
+//
+// The keyboard layouts below maps the us(basic), us(intl) and us(alt-intl)
+// to ClassmatePC keyboard. All layouts uses RCTL as level3(switch) since
+// the keyboard doesn't have AltGr key. The EuroSign is engraved at 5 key.
+
+// classmate - us(basic)
+partial alphanumeric_keys
+xkb_symbols "classmate" {
+ include "us(basic)"
+ name[Group1]= "USA - ClassmatePC";
+
+ key <LSGT> { [ backslash, bar, backslash, bar ] };
+
+ include "eurosign(5)"
+ include "level3(switch)"
+};
+
+// classmate-intl - us(intl)
+// RCTL is generated by Fn+Alt, because that, when trying to access
+// the level3 symbols at 7,8,9,0,u,i,o,p,j,k,l,;,m,. and / we got
+// the keypad keycodes. The keypad is changed to make Fn+Alt+<KP_key>
+// generate the same symbol as the original key.
+partial alphanumeric_keys
+xkb_symbols "classmate-intl" {
+ include "us(intl)"
+ name[Group1]= "USA - ClassmatePC (International)";
+ key.type[Group1]="FOUR_LEVEL";
+
+ key <LSGT> { [ backslash, bar, backslash, bar ] };
+
+ key <KP7> { [ KP_Home, KP_7,
+ onehalf, dead_horn ] };
+ key <KP8> { [ KP_Up, KP_8,
+ threequarters, dead_ogonek ] };
+ key <KP9> { [ KP_Prior, KP_9,
+ leftsinglequotemark, dead_breve ] };
+ key <KPMU> { [ KP_Multiply, KP_Multiply,
+ rightsinglequotemark, dead_abovering ] };
+
+ key <KP4> { [ KP_Left, KP_4,
+ uacute, Uacute ] };
+ key <KP5> { [ KP_Begin, KP_5,
+ iacute, Iacute ] };
+ key <KP6> { [ KP_Right, KP_6,
+ oacute, Oacute ] };
+ key <KPSU> { [ KP_Subtract, KP_Subtract,
+ odiaeresis, Odiaeresis ] };
+
+ key <KP2> { [ KP_Down, KP_2,
+ oe, OE ] };
+ key <KP3> { [ KP_Next, KP_3,
+ oslash, Ooblique ] };
+ key <KPAD> { [ KP_Add, KP_Add,
+ paragraph, degree ] };
+
+ key <KP0> { [ KP_Insert, KP_0,
+ mu, mu ] };
+ key <KPDL> { [ KP_Delete, KP_Decimal,
+ dead_abovedot, dead_caron ] };
+ key <KPDV> { [ KP_Divide, KP_Divide,
+ questiondown, dead_hook ] };
+
+ include "level3(switch)"
+};
+
+// classmate-alt-intl - us(alt-intl)
+// RCTL is generated by Fn+Alt, because that, when trying to access
+// the level3 symbols at 7,8,9,0,u,i,o,p,j,k,l,;,m,. and / we got
+// the keypad keycodes. The keypad is changed to make Fn+Alt+<KP_key>
+// generate the same symbol as the original key.
+partial alphanumeric_keys
+xkb_symbols "classmate-alt-intl" {
+ include "us(alt-intl)"
+ name[Group1]= "USA - ClassmatePC (Alternative international)";
+ key.type[Group1]="FOUR_LEVEL";
+
+ key <LSGT> { [ backslash, bar, backslash, bar ] };
+
+ key <KPSU> { [ KP_Subtract, KP_Subtract ] };
+
+ key <KP9> { [ KP_Prior, KP_9,
+ leftsinglequotemark, dead_breve ] };
+ key <KPMU> { [ KP_Multiply, KP_Multiply,
+ rightsinglequotemark, dead_abovering ] };
+
+ key <KPAD> { [ KP_Add, KP_Add,
+ dead_ogonek, dead_diaeresis ] };
+
+ key <KPDL> { [ KP_Delete, KP_Decimal,
+ dead_abovedot, dead_circumflex ] };
+ key <KPDV> { [ KP_Divide, KP_Divide,
+ dead_hook, dead_hook ] };
+
+ include "level3(switch)"
+};
+
+// classmate-altgr-intl - us(altgr-intl)
+// RCTL is generated by Fn+Alt, because that, when trying to access
+// the level3 symbols at 7,8,9,0,u,i,o,p,j,k,l,;,m,. and / we got
+// the keypad keycodes. The keypad is changed to make Fn+Alt+<KP_key>
+// generate the same symbol as the original key.
+partial alphanumeric_keys
+xkb_symbols "classmate-altgr-intl" {
+ include "us(altgr-intl)"
+ name[Group1]= "USA - ClassmatePC (International Fn+Alt dead-keys)";
+ key.type[Group1]="FOUR_LEVEL";
+
+ key <LSGT> { [ backslash, bar, backslash, bar ] };
+
+ key <KP7> { [ KP_Home, KP_7,
+ dead_horn, dead_horn ] };
+ key <KP8> { [ KP_Up, KP_8,
+ dead_ogonek, dead_ogonek ] };
+ key <KP9> { [ KP_Prior, KP_9,
+ leftsinglequotemark, dead_breve ] };
+ key <KPMU> { [ KP_Multiply, KP_Multiply,
+ rightsinglequotemark, dead_abovering ] };
+
+ key <KP4> { [ KP_Left, KP_4,
+ uacute, Uacute ] };
+ key <KP5> { [ KP_Begin, KP_5,
+ iacute, Iacute ] };
+ key <KP6> { [ KP_Right, KP_6,
+ oacute, Oacute ] };
+ key <KPSU> { [ KP_Subtract, KP_Subtract,
+ odiaeresis, Odiaeresis ] };
+
+ key <KP1> { [ KP_End, KP_1,
+ idiaeresis, Idiaeresis ] };
+ key <KP2> { [ KP_Down, KP_2,
+ oe, OE ] };
+ key <KP3> { [ KP_Next, KP_3,
+ oslash, Ooblique ] };
+ key <KPAD> { [ KP_Add, KP_Add,
+ paragraph, degree ] };
+
+ key <KP0> { [ KP_Insert, KP_0,
+ mu, mu ] };
+ key <KPDL> { [ KP_Delete, KP_Decimal,
+ dead_abovedot, dead_caron ] };
+ key <KPDV> { [ KP_Divide, KP_Divide,
+ questiondown, dead_hook ] };
+
+ include "level3(switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "olpc" {
+
+ include "us(basic)"
+ name[Group1]= "USA";
+
+ // OLPC international US English keyboard layout.
+ // It's a little different from the usual international layout.
+ // See: http://wiki.laptop.org/go/Image:Keyboard_english.png
+
+ key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] };
+ key <AE01> { [ 1, exclam, exclamdown, exclamdown ] };
+ key <AE02> { [ 2, at, notsign, notsign ] };
+ key <AE03> { [ 3, numbersign, 0x1000300, 0x1000300 ] }; // combining grave
+ key <AE04> { [ 4, dollar, 0x1000301, 0x1000301 ] }; // combining acute
+ key <AE05> { [ 5, percent, 0x1000306, 0x1000306 ] }; // combining breve above
+ key <AE06> { [ 6,asciicircum, 0x100030A, 0x100030A ] }; // combining ring above
+ key <AE07> { [ 7, ampersand, 0x1000302, 0x1000302 ] }; // combining circumflex above
+ key <AE08> { [ 8, asterisk, 0x100030C, 0x100030C ] }; // combining caron above
+ key <AE09> { [ 9, parenleft, 0x1000307, 0x1000307 ] }; // combining dot above
+ key <AE10> { [ 0, parenright, 0x1000308, 0x1000308 ] }; // combining diaeresis above
+ key <AE11> { [ minus, underscore, 0x1000304, 0x1000304 ] }; // combining macron above
+ key <AE12> { [ equal, plus, 0x1000303, 0x1000303 ] }; // combining tilde above
+
+ key <AD01> { [ q, Q, Greek_omega, Greek_OMEGA ] };
+ key <AD02> { [ w, W, oslash, Oslash ] };
+ key <AD03> { [ e, E, oe, OE ] };
+ key <AD04> { [ r, R, 0x1000327, 0x1000327 ] }; // combining cedilla
+ key <AD05> { [ t, T, 0x100032E, 0x100032E ] }; // combining breve below
+ key <AD06> { [ y, Y, 0x1000325, 0x1000325 ] }; // combining ring below
+ key <AD07> { [ u, U, 0x100032D, 0x100032D ] }; // combining circumflex below
+ key <AD08> { [ i, I, 0x100032C, 0x100032C ] }; // combining caron below
+ key <AD09> { [ o, O, 0x1000323, 0x1000323 ] }; // combining dot below
+ key <AD10> { [ p, P, 0x1000324, 0x1000324 ] }; // combining diaeresis below
+ key <AD11> { [ bracketleft, braceleft, 0x1000331, 0x1000331 ] }; // combining macron below
+ key <AD12> { [bracketright, braceright, 0x1000330, 0x1000330 ] }; // combining tilde below
+
+ key <AC01> { [ a, A, ae, AE ] };
+ key <AC02> { [ s, S, ssharp, 0x1001E9C ] }; // uppercase S sharp
+ key <AC03> { [ d, D, eth, ETH ] };
+ key <AC04> { [ f, F, thorn, THORN ] };
+ key <AC06> { [ h, H, sterling, sterling ] };
+ key <AC07> { [ j, J, EuroSign, EuroSign ] };
+ key <AC10> { [ semicolon, colon, masculine, ordfeminine ] };
+ key <AC11> { [ apostrophe, quotedbl, currency, currency ] };
+ key <BKSL> { [ backslash, bar, section, section ] };
+
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+ key <AB06> { [ n, N, ntilde, Ntilde ] };
+ key <AB07> { [ m, M, mu, mu ] };
+ key <AB08> { [ comma, less, guillemotleft, guillemotleft ] };
+ key <AB09> { [ period, greater, guillemotright, guillemotright ] };
+ key <AB10> { [ slash, question, questiondown, questiondown ] };
+
+ key <I219> { [ multiply, division, ISO_Next_Group, ISO_Prev_Group ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "olpc2" {
+ include "us(olpc)"
+ name[Group1]= "USA - Layout toggle on multiply/divide key";
+ include "group(olpc)"
+};
+
+// Based on Cherokee Nation Official Layout
+// http://www.cherokee.org/extras/downloads/font/Keyboard.htm
+
+partial alphanumeric_keys modifier_keys
+xkb_symbols "chr" {
+
+ name[Group1]= "USA - Cherokee";
+ key.type[group1]="ALPHABETIC";
+
+ // Alphanumeric section
+ key <TLDE> { [ grave, U13CA ] };
+ key <AE01> { [ 1, U13B1 ] };
+ key <AE02> { [ 2, U13C7 ] };
+ key <AE03> { [ 3, U13E7 ] };
+ key <AE04> { [ U13D9, U13B0 ] };
+ key <AE05> { [ U13E6, U13B9 ] };
+ key <AE06> { [ U13DC, U13DD ] };
+ key <AE07> { [ U13CB, U13E1 ] };
+ key <AE08> { [ U13D6, U13BA ] };
+ key <AE09> { [ U13D2, parenleft ] };
+ key <AE10> { [ U13C4, parenright ] };
+ key <AE11> { [ U13BF, U13BC ] };
+ key <AE12> { [ U13F3, U13BD ] };
+
+ key <AD01> { [ U13AA, U13C6 ] };
+ key <AD02> { [ U13B3, U13EB ] };
+ key <AD03> { [ U13A1, U13E3 ] };
+ key <AD04> { [ U13DB, U13CF ] };
+ key <AD05> { [ U13D4, U13D8 ] };
+ key <AD06> { [ U13EF, U13F2 ] };
+ key <AD07> { [ U13A4, U13AD ] };
+ key <AD08> { [ U13A2, U13F1 ] };
+ key <AD09> { [ U13A3, U13EC ] };
+ key <AD10> { [ U13C1, U13EA ] };
+ key <AD11> { [ U13D5, U13D1 ] };
+ key <AD12> { [ U13B6, U13E4 ] };
+ key <BKSL> { [ U13E9, U13EE ] };
+
+ key <AC01> { [ U13A0, U13CC ] };
+ key <AC02> { [ U13CD, U13CE ] };
+ key <AC03> { [ U13D7, U13D0 ] };
+ key <AC04> { [ U13A9, U13C8 ] };
+ key <AC05> { [ U13A6, U13E5 ] };
+ key <AC06> { [ U13AF, U13B2 ] };
+ key <AC07> { [ U13DA, U13AB ] };
+ key <AC08> { [ U13B8, U13A7 ] };
+ key <AC09> { [ U13B5, U13AE ] };
+ key <AC10> { [ U13E8, U13E0 ] };
+ key <AC11> { [ apostrophe, quotedbl ] };
+
+ key <AB01> { [ U13AC, U13C3 ] };
+ key <AB02> { [ U13F4, U13ED ] };
+ key <AB03> { [ U13D3, U13DF ] };
+ key <AB04> { [ U13A5, U13DE ] };
+ key <AB05> { [ U13A8, U13F0 ] };
+ key <AB06> { [ U13BE, U13BB ] };
+ key <AB07> { [ U13C5, U13B7 ] };
+ key <AB08> { [ comma, U13E2 ] };
+ key <AB09> { [ period, U13B4 ] };
+ key <AB10> { [ U13C2, U13C9 ] };
+
+ // End alphanumeric section
+};
+
+// Serbian charecters added as third level symbols to US keyboard layout.
+
+partial alphanumeric_keys
+xkb_symbols "hbs" {
+
+ name[Group1]= "USA - Serbo-Croatian";
+
+ include "us"
+
+ key <TLDE> { [ grave, asciitilde ] };
+ key <AE06> { [ 6, dead_caron, asciicircum, asciicircum ] };
+ key <AC09> { [ l, L, U1C9, U1C8 ] };
+ key <AB06> { [ n, N, U1CC, U1CB ] };
+ key <AB01> { [ z, Z, U1C6, U1C5 ] };
+ key <AD03> { [ e, E, EuroSign, cent ] };
+ key <AC03> { [ d, D, dstroke, Dstroke ] };
+ key <AC11> { [ dead_acute, quotedbl, apostrophe, apostrophe ] };
+ key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
+ key <AB08> { [ comma, less, NoSymbol, guillemotright ] };
+ key <AB09> { [ period, greater, NoSymbol, guillemotleft ] };
+
+ include "level3(ralt_switch)"
+};
+
+//based on http://upload.wikimedia.org/wikipedia/commons/1/18/T-Mobile_G1_launch_event_2.jpg
+partial alphanumeric_keys
+xkb_symbols "htcdream" {
+ include "inet(htcdream)"
+ name[Group1]= "USA - htcdream";
+
+ //second row
+ key <AD01> { [ q, Q, Tab, Tab ] };
+ key <AD02> { [ w, W, grave, grave ] };
+ key <AD03> { [ e, E, underscore, underscore ] };
+ key <AD04> { [ r, R, sterling, sterling ] };
+ key <AD05> { [ t, T, EuroSign, EuroSign ] };
+ key <AD06> { [ y, Y, division, division ] };
+ key <AD07> { [ u, U, multiply, multiply ] };
+ key <AD08> { [ i, I, minus, minus ] };
+ key <AD09> { [ o, O, plus, plus ] };
+ key <AD10> { [ p, P, equal, equal ] };
+
+ //third row
+ key <AC01> { [ a, A, NoSymbol, NoSymbol ] };
+ key <AC02> { [ s, S, bar, bar ] };
+ key <AC03> { [ d ,D, backslash, backslash ] };
+ key <AC04> { [ f, F, braceleft, braceleft ] };
+ key <AC05> { [ g, G, braceright, braceright ] };
+ key <AC06> { [ h, H, colon, colon ] };
+ key <AC07> { [ j, J, semicolon, semicolon ] };
+ key <AC08> { [ k, K, quotedbl, quotedbl ] };
+ key <AC09> { [ l, L, apostrophe, apostrophe ] };
+
+ //forth row
+ key <AB01> { [ z, Z, NoSymbol, NoSymbol ] };
+ key <AB02> { [ x, X, NoSymbol, NoSymbol ] };
+ key <AB03> { [ c, C, NoSymbol, NoSymbol ] };
+ key <AB04> { [ v, V, bracketleft, bracketleft ] };
+ key <AB05> { [ b, B, bracketright, bracketright ] };
+ key <AB06> { [ n, N, less, less ] };
+ key <AB07> { [ m, M, greater, greater ] };
+ key <AB08> { [ comma, comma, question, question ] };
+
+ //fifth row
+ key <FK15> { [ at, at, asciitilde, asciitilde ] };
+
+ include "level3(alt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/uz b/xorg-server/xkeyboard-config/symbols/uz
index b37a6ca3f..a6c67e8d1 100644
--- a/xorg-server/xkeyboard-config/symbols/uz
+++ b/xorg-server/xkeyboard-config/symbols/uz
@@ -1,122 +1,120 @@
-// $XKeyboardConfig$
-// Uzbek standard keyboard
-//
-// Mashrab Kuvatov <kmashrab@uni-bremen.de>
-//
-// History:
-//
-// Jun 2, 2003. Mashrab Kuvatov <kmashrab@uni-bremen.de>
-//
-// Created based on Russian standard keyboard. AEN <aen@logic.ru>
-// The following symbols of Russian standard keyboard were replaced:
-// minus (key <AE11>) with Byelorussian_shortu (U045e),
-// equal (key <AE12>) with Cyrillic_ka_descender (U049b)
-// Cyrillic_ha (key <AD11>) with Cyrillic_ghe_bar (U0493)
-// Cyrillic_hardsign (key <AD12>) with Cyrillic_ha_descender (U04b3)
-// The following symbols of Russian standard keyboard were moved:
-// Cyrillic_ze to key <AC02> (english 's'),
-// Cyrillic_sha to key <AD08> (english 'i'),
-// Cyrillic_ha to key <AD09> (english 'o'),
-// Cyrillic_hardsign to key <AD10> (english 'p').
-//
-// Feb 25, 2007. Mashrab Kuvatov <kmashrab@uni-bremen.de>
-//
-// Made cyrillic and latin variants. Default is cyrillic.
-// Cyrillic variant is standard compliant. The standard
-// was accepted by the official body of Uzbekistan. See
-// http://www.uznet.net/index.php?option=com_content&task=view&id=288&Itemid=58
-//
-// Latin variant is somewhat experimental, since there is no
-// official standard for it. It is a copy of "us" layout, where
-// apostrophe is replaced with U02BB.
-//
-// $XFree86: xc/programs/xkbcomp/symbols/uz,v 1.2 2003/06/21 13:01:59 pascal Exp $
-
-partial default alphanumeric_keys
-xkb_symbols "cyrillic" {
-
- name[Group1]= "Uzbekistan";
-
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, quotedbl ] };
- key <AE03> { [ 3, numerosign ] };
- key <AE04> { [ 4, semicolon ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, colon ] };
- key <AE07> { [ 7, question ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <BKSL> { [ backslash, bar ] };
- key <AB10> { [ period, comma ] };
- key <LSGT> { [ slash, bar ] };
-
-key.type[group1]="ALPHABETIC";
-
- key <AE11> { [Cyrillic_ghe_bar, Cyrillic_GHE_bar ] };
- key <AE12> { [Cyrillic_ha_descender, Cyrillic_HA_descender ] };
- key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] };
- key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <AD03> { [ Cyrillic_u, Cyrillic_U ] };
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] };
- key <AD06> { [ Cyrillic_en, Cyrillic_EN ] };
- key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AD09> { [ Byelorussian_shortu, Byelorussian_SHORTU ] };
- key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
- key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <AC02> { [Cyrillic_ka_descender, Cyrillic_KA_descender ] };
- key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <AC04> { [ Cyrillic_a, Cyrillic_A ] };
- key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
- key <AC07> { [ Cyrillic_o, Cyrillic_O ] };
- key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
- key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
- key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <AC11> { [ Cyrillic_e, Cyrillic_E ] };
- key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
- key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
- key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
- key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
- key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
- key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
- key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
- key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
-
- // End alphanumeric section
-};
-
-partial alphanumeric_keys
-xkb_symbols "latin" {
- include "us"
- name[Group1]= "Uzbekistan - Latin";
- key <AC11> { [0x010002BB, quotedbl] };
-};
-
-// Crimean Tatar (Crimean Turkish) layouts.
-partial
-xkb_symbols "crh" {
- include "tr(crh)"
-
- name[Group1]="Uzbekistan - Crimean Tatar (Turkish Q)";
-};
-
-partial
-xkb_symbols "crh_f" {
- include "tr(crh_f)"
-
- name[Group1]="Uzbekistan - Crimean Tatar (Turkish F)";
-};
-
-partial
-xkb_symbols "crh_alt" {
- include "tr(crh_alt)"
-
- name[Group1]="Uzbekistan - Crimean Tatar (Turkish Alt-Q)";
-};
+// Uzbek standard keyboard
+//
+// Mashrab Kuvatov <kmashrab@uni-bremen.de>
+//
+// History:
+//
+// Jun 2, 2003. Mashrab Kuvatov <kmashrab@uni-bremen.de>
+//
+// Created based on Russian standard keyboard. AEN <aen@logic.ru>
+// The following symbols of Russian standard keyboard were replaced:
+// minus (key <AE11>) with Byelorussian_shortu (U045e),
+// equal (key <AE12>) with Cyrillic_ka_descender (U049b)
+// Cyrillic_ha (key <AD11>) with Cyrillic_ghe_bar (U0493)
+// Cyrillic_hardsign (key <AD12>) with Cyrillic_ha_descender (U04b3)
+// The following symbols of Russian standard keyboard were moved:
+// Cyrillic_ze to key <AC02> (english 's'),
+// Cyrillic_sha to key <AD08> (english 'i'),
+// Cyrillic_ha to key <AD09> (english 'o'),
+// Cyrillic_hardsign to key <AD10> (english 'p').
+//
+// Feb 25, 2007. Mashrab Kuvatov <kmashrab@uni-bremen.de>
+//
+// Made cyrillic and latin variants. Default is cyrillic.
+// Cyrillic variant is standard compliant. The standard
+// was accepted by the official body of Uzbekistan. See
+// http://www.uznet.net/index.php?option=com_content&task=view&id=288&Itemid=58
+//
+// Latin variant is somewhat experimental, since there is no
+// official standard for it. It is a copy of "us" layout, where
+// apostrophe is replaced with U02BB.
+//
+
+partial default alphanumeric_keys
+xkb_symbols "cyrillic" {
+
+ name[Group1]= "Uzbekistan";
+
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, quotedbl ] };
+ key <AE03> { [ 3, numerosign ] };
+ key <AE04> { [ 4, semicolon ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, colon ] };
+ key <AE07> { [ 7, question ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <BKSL> { [ backslash, bar ] };
+ key <AB10> { [ period, comma ] };
+ key <LSGT> { [ slash, bar ] };
+
+key.type[group1]="ALPHABETIC";
+
+ key <AE11> { [Cyrillic_ghe_bar, Cyrillic_GHE_bar ] };
+ key <AE12> { [Cyrillic_ha_descender, Cyrillic_HA_descender ] };
+ key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] };
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD09> { [ Byelorussian_shortu, Byelorussian_SHORTU ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
+ key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <AC02> { [Cyrillic_ka_descender, Cyrillic_KA_descender ] };
+ key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <AC04> { [ Cyrillic_a, Cyrillic_A ] };
+ key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O ] };
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AC11> { [ Cyrillic_e, Cyrillic_E ] };
+ key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
+ key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
+
+ // End alphanumeric section
+};
+
+partial alphanumeric_keys
+xkb_symbols "latin" {
+ include "us"
+ name[Group1]= "Uzbekistan - Latin";
+ key <AC11> { [0x010002BB, quotedbl] };
+};
+
+// Crimean Tatar (Crimean Turkish) layouts.
+partial
+xkb_symbols "crh" {
+ include "tr(crh)"
+
+ name[Group1]="Uzbekistan - Crimean Tatar (Turkish Q)";
+};
+
+partial
+xkb_symbols "crh_f" {
+ include "tr(crh_f)"
+
+ name[Group1]="Uzbekistan - Crimean Tatar (Turkish F)";
+};
+
+partial
+xkb_symbols "crh_alt" {
+ include "tr(crh_alt)"
+
+ name[Group1]="Uzbekistan - Crimean Tatar (Turkish Alt-Q)";
+};
diff --git a/xorg-server/xkeyboard-config/symbols/vn b/xorg-server/xkeyboard-config/symbols/vn
index acebae572..4aed75eb8 100644
--- a/xorg-server/xkeyboard-config/symbols/vn
+++ b/xorg-server/xkeyboard-config/symbols/vn
@@ -1,41 +1,39 @@
-// $XKeyboardConfig$
-
-// based on:
-// vn, TCVN 5712:1993
-// Le Hong Boi <le.hong.boi@bigfoot.com>
-// August 1999
-// Further modified by Ashley Clark <aclark@debian.org>
-// July 2000 for X 4.0
-// Fix accents into combining marks by Samuel Thibault <samuel.thibault@ens-lyon.org>
-// July 2009
-
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- include "us"
-
- name[Group1]= "Vietnam";
-
- // Alphanumeric section
- key <TLDE> { [ quoteleft, asciitilde ] };
- key <AE01> { [ abreve, Abreve ] };
- key <AE02> { [ acircumflex, Acircumflex ] };
- key <AE03> { [ ecircumflex, Ecircumflex ] };
- key <AE04> { [ ocircumflex, Ocircumflex ] };
- key <AE05> { [ 0x1000300, percent, dead_grave, percent ] };
- key <AE06> { [ 0x1000309, asciicircum, dead_hook, asciicircum ] };
- key <AE07> { [ 0x1000303, ampersand, dead_tilde, ampersand ] };
- key <AE08> { [ 0x1000301, asterisk, dead_acute, asterisk ] };
- key <AE09> { [ 0x1000323, parenleft, dead_belowdot, parenleft ] };
- key <AE10> { [ dstroke, Dstroke ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ DongSign, plus ] };
-
- key <AD11> { [ uhorn, Uhorn ] };
- key <AD12> { [ ohorn, Ohorn ] };
-
- // End alphanumeric section
-
- include "level3(ralt_switch)"
-};
+// based on:
+// vn, TCVN 5712:1993
+// Le Hong Boi <le.hong.boi@bigfoot.com>
+// August 1999
+// Further modified by Ashley Clark <aclark@debian.org>
+// July 2000 for X 4.0
+// Fix accents into combining marks by Samuel Thibault <samuel.thibault@ens-lyon.org>
+// July 2009
+
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ include "us"
+
+ name[Group1]= "Vietnam";
+
+ // Alphanumeric section
+ key <TLDE> { [ quoteleft, asciitilde ] };
+ key <AE01> { [ abreve, Abreve ] };
+ key <AE02> { [ acircumflex, Acircumflex ] };
+ key <AE03> { [ ecircumflex, Ecircumflex ] };
+ key <AE04> { [ ocircumflex, Ocircumflex ] };
+ key <AE05> { [ 0x1000300, percent, dead_grave, percent ] };
+ key <AE06> { [ 0x1000309, asciicircum, dead_hook, asciicircum ] };
+ key <AE07> { [ 0x1000303, ampersand, dead_tilde, ampersand ] };
+ key <AE08> { [ 0x1000301, asterisk, dead_acute, asterisk ] };
+ key <AE09> { [ 0x1000323, parenleft, dead_belowdot, parenleft ] };
+ key <AE10> { [ dstroke, Dstroke ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ DongSign, plus ] };
+
+ key <AD11> { [ uhorn, Uhorn ] };
+ key <AD12> { [ ohorn, Ohorn ] };
+
+ // End alphanumeric section
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/xfree68_vndr/amiga b/xorg-server/xkeyboard-config/symbols/xfree68_vndr/amiga
index dcc143bb0..48ea37ca4 100644
--- a/xorg-server/xkeyboard-config/symbols/xfree68_vndr/amiga
+++ b/xorg-server/xkeyboard-config/symbols/xfree68_vndr/amiga
@@ -1,132 +1,126 @@
-// $Xorg: amiga,v 1.3 2000/08/17 19:54:46 cpqbld Exp $
-
-
-
-// $XFree86: xc/programs/xkbcomp/symbols/xfree68/amiga,v 1.2 2000/06/23 00:44:37 dawes Exp $
-
-default xkb_symbols "usa1" {
-
- name[Group1]= "usa1";
- key <ESC> { [ Escape ] };
-
- // Begin "Function" section
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- // End "Function" section
-
- // Alphanumeric section
- key <TLDE> { [ quoteleft, asciitilde ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, asciicircum ] };
- key <AE07> { [ 7, ampersand ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
- key <BKSL> { [ backslash, bar ] };
- key <BKSP> { [ BackSpace ] };
-
- key <TAB> { [ Tab, ISO_Left_Tab ] };
- key <AD01> { [ q, Q ] };
- key <AD02> { [ w, W ] };
- key <AD03> { [ e, E ] };
- key <AD04> { [ r, R ] };
- key <AD05> { [ t, T ] };
- key <AD06> { [ y, Y ] };
- key <AD07> { [ u, U ] };
- key <AD08> { [ i, I ] };
- key <AD09> { [ o, O ] };
- key <AD10> { [ p, P ] };
- key <AD11> { [ bracketleft, braceleft ] };
- key <AD12> { [ bracketright, braceright ] };
- key <RTRN> { [ Return ] };
-
- key <LCTL> { [ Control_L ] };
- key <CAPS> { [ Caps_Lock ] };
- key <AC01> { [ a, A ] };
- key <AC02> { [ s, S ] };
- key <AC03> { [ d, D ] };
- key <AC04> { [ f, F ] };
- key <AC05> { [ g, G ] };
- key <AC06> { [ h, H ] };
- key <AC07> { [ j, J ] };
- key <AC08> { [ k, K ] };
- key <AC09> { [ l, L ] };
- key <AC10> { [ semicolon, colon ] };
- key <AC11> { [ quoteright, quotedbl ] };
-
- key <LFSH> { [ Shift_L ] };
- key <AB01> { [ z, Z ] };
- key <AB02> { [ x, X ] };
- key <AB03> { [ c, C ] };
- key <AB04> { [ v, V ] };
- key <AB05> { [ b, B ] };
- key <AB06> { [ n, N ] };
- key <AB07> { [ m, M ] };
- key <AB08> { [ comma, less ] };
- key <AB09> { [ period, greater ] };
- key <AB10> { [ slash, question ] };
- key <RTSH> { [ Shift_R ] };
-
- key <LALT> { [ Alt_L, Meta_L ] };
- key <LAMI> { [ Mode_switch ] };
- key <SPCE> { [ space ] };
- key <RAMI> { [ Multi_key ] };
- key <RALT> { [ Alt_R, Meta_R ] };
- // End alphanumeric section
-
- // Begin "Editing" section
- key <DELE> { [ Delete ] };
- key <HELP> { [ Help ] };
- key <UP> { [ Up ] };
- key <LEFT> { [ Left ] };
- key <DOWN> { [ Down ] };
- key <RGHT> { [ Right ] };
- // End "Editing" section
-
- // Begin "Keypad" section
- key <KPLP> { [ Num_Lock ] };
- key <KPRP> { [ Scroll_Lock ] };
- key <KPDV> { [ KP_Divide ] };
- key <KPMU> { [ KP_Multiply, Print ] };
-
- key <KP7> { [ KP_7, KP_Home ] };
- key <KP8> { [ KP_8, KP_Up ] };
- key <KP9> { [ KP_9, KP_Prior ] };
- key <KPSU> { [ KP_Subtract ] };
-
- key <KP4> { [ KP_4, KP_Left ] };
- key <KP5> { [ KP_5 ] };
- key <KP6> { [ KP_6, KP_Right ] };
- key <KPAD> { [ KP_Add ] };
-
- key <KP1> { [ KP_1, KP_End ] };
- key <KP2> { [ KP_2, KP_Down ] };
- key <KP3> { [ KP_3, KP_Next ] };
-
- key <KP0> { [ KP_0, KP_Insert ] };
- key <KPDC> { [ KP_Decimal, KP_Delete ] };
- key <KPEN> { [ KP_Enter ] };
- // End "Keypad" section
-
- // begin modifier mappings
- modifier_map Shift { Shift_L, Shift_R };
- modifier_map Lock { Caps_Lock };
- modifier_map Control{ Control_L };
- modifier_map Mod1 { Alt_L, Alt_R };
- modifier_map Mod2 { Mode_switch };
- modifier_map Mod3 { Meta_L, Meta_R };
-};
+default xkb_symbols "usa1" {
+
+ name[Group1]= "usa1";
+ key <ESC> { [ Escape ] };
+
+ // Begin "Function" section
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ // End "Function" section
+
+ // Alphanumeric section
+ key <TLDE> { [ quoteleft, asciitilde ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+ key <BKSL> { [ backslash, bar ] };
+ key <BKSP> { [ BackSpace ] };
+
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E ] };
+ key <AD04> { [ r, R ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y ] };
+ key <AD07> { [ u, U ] };
+ key <AD08> { [ i, I ] };
+ key <AD09> { [ o, O ] };
+ key <AD10> { [ p, P ] };
+ key <AD11> { [ bracketleft, braceleft ] };
+ key <AD12> { [ bracketright, braceright ] };
+ key <RTRN> { [ Return ] };
+
+ key <LCTL> { [ Control_L ] };
+ key <CAPS> { [ Caps_Lock ] };
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ s, S ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K ] };
+ key <AC09> { [ l, L ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ quoteright, quotedbl ] };
+
+ key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ z, Z ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
+ key <RTSH> { [ Shift_R ] };
+
+ key <LALT> { [ Alt_L, Meta_L ] };
+ key <LAMI> { [ Mode_switch ] };
+ key <SPCE> { [ space ] };
+ key <RAMI> { [ Multi_key ] };
+ key <RALT> { [ Alt_R, Meta_R ] };
+ // End alphanumeric section
+
+ // Begin "Editing" section
+ key <DELE> { [ Delete ] };
+ key <HELP> { [ Help ] };
+ key <UP> { [ Up ] };
+ key <LEFT> { [ Left ] };
+ key <DOWN> { [ Down ] };
+ key <RGHT> { [ Right ] };
+ // End "Editing" section
+
+ // Begin "Keypad" section
+ key <KPLP> { [ Num_Lock ] };
+ key <KPRP> { [ Scroll_Lock ] };
+ key <KPDV> { [ KP_Divide ] };
+ key <KPMU> { [ KP_Multiply, Print ] };
+
+ key <KP7> { [ KP_7, KP_Home ] };
+ key <KP8> { [ KP_8, KP_Up ] };
+ key <KP9> { [ KP_9, KP_Prior ] };
+ key <KPSU> { [ KP_Subtract ] };
+
+ key <KP4> { [ KP_4, KP_Left ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_6, KP_Right ] };
+ key <KPAD> { [ KP_Add ] };
+
+ key <KP1> { [ KP_1, KP_End ] };
+ key <KP2> { [ KP_2, KP_Down ] };
+ key <KP3> { [ KP_3, KP_Next ] };
+
+ key <KP0> { [ KP_0, KP_Insert ] };
+ key <KPDC> { [ KP_Decimal, KP_Delete ] };
+ key <KPEN> { [ KP_Enter ] };
+ // End "Keypad" section
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_L, Shift_R };
+ modifier_map Lock { Caps_Lock };
+ modifier_map Control{ Control_L };
+ modifier_map Mod1 { Alt_L, Alt_R };
+ modifier_map Mod2 { Mode_switch };
+ modifier_map Mod3 { Meta_L, Meta_R };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/xfree68_vndr/ataritt b/xorg-server/xkeyboard-config/symbols/xfree68_vndr/ataritt
index c06431fb8..8c6277fb1 100644
--- a/xorg-server/xkeyboard-config/symbols/xfree68_vndr/ataritt
+++ b/xorg-server/xkeyboard-config/symbols/xfree68_vndr/ataritt
@@ -1,161 +1,155 @@
-// $Xorg: ataritt,v 1.3 2000/08/17 19:54:46 cpqbld Exp $
-
-
-
-// $XFree86: xc/programs/xkbcomp/symbols/xfree68/ataritt,v 1.2 2000/06/23 00:44:37 dawes Exp $
-
-default xkb_symbols "us" {
-
- name[Group1]= "US/ASCII";
- key <ESC> { [ Escape ] };
-
- // Alphanumeric section
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, asciicircum ] };
- key <AE07> { [ 7, ampersand ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
- key <TLDE> { [ quoteleft, asciitilde ] };
- key <BKSP> { [ BackSpace ] };
-
- key <TAB> { [ Tab, ISO_Left_Tab ] };
- key <AD01> { [ q, Q ] };
- key <AD02> { [ w, W ] };
- key <AD03> { [ e, E ] };
- key <AD04> { [ r, R ] };
- key <AD05> { [ t, T ] };
- key <AD06> { [ y, Y ] };
- key <AD07> { [ u, U ] };
- key <AD08> { [ i, I ] };
- key <AD09> { [ o, O ] };
- key <AD10> { [ p, P ] };
- key <AD11> { [ bracketleft, braceleft ] };
- key <AD12> { [ bracketright, braceright ] };
- key <RTRN> { [ Return ] };
- key <DELE> { [ Delete ] };
-
- key <LCTL> { [ Control_L ] };
- key <AC01> { [ a, A ] };
- key <AC02> { [ s, S ] };
- key <AC03> { [ d, D ] };
- key <AC04> { [ f, F ] };
- key <AC05> { [ g, G ] };
- key <AC06> { [ h, H ] };
- key <AC07> { [ j, J ] };
- key <AC08> { [ k, K ] };
- key <AC09> { [ l, L ] };
- key <AC10> { [ semicolon, colon ] };
- key <AC11> { [ quoteright, quotedbl ] };
- key <BKSL> { [ backslash, bar ] };
-
- key <LFSH> { [ Shift_L ] };
- key <AB01> { [ z, Z ] };
- key <AB02> { [ x, X ] };
- key <AB03> { [ c, C ] };
- key <AB04> { [ v, V ] };
- key <AB05> { [ b, B ] };
- key <AB06> { [ n, N ] };
- key <AB07> { [ m, M ] };
- key <AB08> { [ comma, less ] };
- key <AB09> { [ period, greater ] };
- key <AB10> { [ slash, question ] };
- key <RTSH> { [ Shift_R ] };
-
- key <ALT> { [ Meta_L ] };
- key <SPCE> { [ space ] };
- key <CAPS> { [ Caps_Lock ] };
- // End alphanumeric section
-
- // Begin "Function" section
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- // End "Function" section
-
- // Begin "Editing" section
- key <HELP> { [ Help ] };
- key <UNDO> { [ Undo ] };
- key <INS> { [ Insert ] };
- key <UP> { [ Up ] };
- key <HOME> { [ Home, Clear ] };
- key <LEFT> { [ Left ] };
- key <DOWN> { [ Down ] };
- key <RGHT> { [ Right ] };
- // End "Editing" section
-
- // Begin "Keypad" section
- key <KPLP> { [ KP_F1 ] };
- key <KPRP> { [ KP_F2 ] };
- key <KPDV> { [ KP_Divide ] };
- key <KPMU> { [ KP_Multiply ] };
- key <KP7> { [ KP_7 ] };
- key <KP8> { [ KP_8 ] };
- key <KP9> { [ KP_9 ] };
- key <KPSU> { [ KP_Subtract ] };
- key <KP4> { [ KP_4 ] };
- key <KP5> { [ KP_5 ] };
- key <KP6> { [ KP_6 ] };
- key <KPAD> { [ KP_Add ] };
- key <KP1> { [ KP_1 ] };
- key <KP2> { [ KP_2 ] };
- key <KP3> { [ KP_3 ] };
- key <KP0> { [ KP_0 ] };
- key <KPDC> { [ KP_Decimal ] };
- key <KPEN> { [ KP_Enter ] };
- // End "Keypad" section
-
- // begin modifier mappings
- modifier_map Shift { Shift_L, Shift_R };
- modifier_map Lock { Caps_Lock };
- modifier_map Control{ Control_L };
- modifier_map Mod1 { Meta_L };
-};
-
-xkb_symbols "de" {
- include "ataritt(us)"
-
- name[Group1]= "German";
-
- // Alphanumeric section
- key <AE02> { [ 2, quotedbl ] };
- key <AE03> { [ 3, section ] };
- key <AE06> { [ 6, ampersand ] };
- key <AE07> { [ 7, slash ] };
- key <AE08> { [ 8, parenleft ] };
- key <AE09> { [ 9, parenright ] };
- key <AE10> { [ 0, equal ] };
- key <AE11> { [ ssharp, question ] };
- key <AE12> { [ quoteright, quoteleft ] };
- key <TLDE> { [ numbersign, asciicircum ] };
-
- key <AD06> { [ z, Z ] };
- key <AD11> { [ udiaeresis, Udiaeresis ],
- [ at, backslash ] };
- key <AD12> { [ plus, asterisk ] };
-
- key <AC10> { [ odiaeresis, Odiaeresis ],
- [ bracketleft, braceleft ] };
- key <AC11> { [ adiaeresis, Adiaeresis ],
- [ bracketright, braceright ] };
- key <BKSL> { [ asciitilde, bar ] };
-
- key <LSGT> { [ less, greater ] };
- key <AB01> { [ y, Y ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
-};
+default xkb_symbols "us" {
+
+ name[Group1]= "US/ASCII";
+ key <ESC> { [ Escape ] };
+
+ // Alphanumeric section
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+ key <TLDE> { [ quoteleft, asciitilde ] };
+ key <BKSP> { [ BackSpace ] };
+
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E ] };
+ key <AD04> { [ r, R ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y ] };
+ key <AD07> { [ u, U ] };
+ key <AD08> { [ i, I ] };
+ key <AD09> { [ o, O ] };
+ key <AD10> { [ p, P ] };
+ key <AD11> { [ bracketleft, braceleft ] };
+ key <AD12> { [ bracketright, braceright ] };
+ key <RTRN> { [ Return ] };
+ key <DELE> { [ Delete ] };
+
+ key <LCTL> { [ Control_L ] };
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ s, S ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K ] };
+ key <AC09> { [ l, L ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ quoteright, quotedbl ] };
+ key <BKSL> { [ backslash, bar ] };
+
+ key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ z, Z ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
+ key <RTSH> { [ Shift_R ] };
+
+ key <ALT> { [ Meta_L ] };
+ key <SPCE> { [ space ] };
+ key <CAPS> { [ Caps_Lock ] };
+ // End alphanumeric section
+
+ // Begin "Function" section
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ // End "Function" section
+
+ // Begin "Editing" section
+ key <HELP> { [ Help ] };
+ key <UNDO> { [ Undo ] };
+ key <INS> { [ Insert ] };
+ key <UP> { [ Up ] };
+ key <HOME> { [ Home, Clear ] };
+ key <LEFT> { [ Left ] };
+ key <DOWN> { [ Down ] };
+ key <RGHT> { [ Right ] };
+ // End "Editing" section
+
+ // Begin "Keypad" section
+ key <KPLP> { [ KP_F1 ] };
+ key <KPRP> { [ KP_F2 ] };
+ key <KPDV> { [ KP_Divide ] };
+ key <KPMU> { [ KP_Multiply ] };
+ key <KP7> { [ KP_7 ] };
+ key <KP8> { [ KP_8 ] };
+ key <KP9> { [ KP_9 ] };
+ key <KPSU> { [ KP_Subtract ] };
+ key <KP4> { [ KP_4 ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_6 ] };
+ key <KPAD> { [ KP_Add ] };
+ key <KP1> { [ KP_1 ] };
+ key <KP2> { [ KP_2 ] };
+ key <KP3> { [ KP_3 ] };
+ key <KP0> { [ KP_0 ] };
+ key <KPDC> { [ KP_Decimal ] };
+ key <KPEN> { [ KP_Enter ] };
+ // End "Keypad" section
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_L, Shift_R };
+ modifier_map Lock { Caps_Lock };
+ modifier_map Control{ Control_L };
+ modifier_map Mod1 { Meta_L };
+};
+
+xkb_symbols "de" {
+ include "ataritt(us)"
+
+ name[Group1]= "German";
+
+ // Alphanumeric section
+ key <AE02> { [ 2, quotedbl ] };
+ key <AE03> { [ 3, section ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, slash ] };
+ key <AE08> { [ 8, parenleft ] };
+ key <AE09> { [ 9, parenright ] };
+ key <AE10> { [ 0, equal ] };
+ key <AE11> { [ ssharp, question ] };
+ key <AE12> { [ quoteright, quoteleft ] };
+ key <TLDE> { [ numbersign, asciicircum ] };
+
+ key <AD06> { [ z, Z ] };
+ key <AD11> { [ udiaeresis, Udiaeresis ],
+ [ at, backslash ] };
+ key <AD12> { [ plus, asterisk ] };
+
+ key <AC10> { [ odiaeresis, Odiaeresis ],
+ [ bracketleft, braceleft ] };
+ key <AC11> { [ adiaeresis, Adiaeresis ],
+ [ bracketright, braceright ] };
+ key <BKSL> { [ asciitilde, bar ] };
+
+ key <LSGT> { [ less, greater ] };
+ key <AB01> { [ y, Y ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/za b/xorg-server/xkeyboard-config/symbols/za
index 0d53b1c1a..8c277c7be 100644
--- a/xorg-server/xkeyboard-config/symbols/za
+++ b/xorg-server/xkeyboard-config/symbols/za
@@ -1,44 +1,42 @@
-// $XKeyboardConfig$
-//
-// based on the Latvian and GB keyboard maps
-
-partial default alphanumeric_keys modifier_keys
-xkb_symbols "basic" {
-
- // Describes the differences between an en_US
- // keyboard and a South African layout with
- // dead keys. By Dwayne Bailey (dwayne@translate.org.za)
-
- include "latin"
-
- name[Group1]="South Africa";
-
- key <TLDE> { [ grave, asciitilde, dead_grave ] };
- key <AE02> { [ 2, at, yen ] };
- key <AE03> { [ 3, numbersign, sterling ] };
- key <AE04> { [ 4, dollar, dollar ] };
- key <AE05> { [ 5, percent, EuroSign ] };
- key <AE06> { [ 6, asciicircum, dead_circumflex ] };
-
- key <AD03> { [ e, E, ediaeresis, Ediaeresis ] };
- key <AD04> { [ r, R, ecircumflex, Ecircumflex ] };
- key <AD05> { [ t, T, U1e71, U1e70 ] };
- key <AD06> { [ y, Y, ucircumflex, Ucircumflex ] };
- key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
- key <AD08> { [ i, I, idiaeresis, Idiaeresis ] };
- key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
- key <AD10> { [ p, P, ocircumflex, Ocircumflex ] };
-
- key <AC01> { [ a, A, adiaeresis, Adiaeresis ] };
- key <AC02> { [ s, S, scaron, Scaron ] };
- key <AC03> { [ d, D, U1e13, U1e12 ] };
- key <AC09> { [ l, L, U1e3d, U1e3c ] };
- key <AC10> { [ semicolon, colon, dead_diaeresis ] };
- key <AC11> { [apostrophe, quotedbl, dead_acute ] };
-
- key <AB06> { [ n, N, U1e4b, U1e4a ] };
- key <AB07> { [ m, M, U1e45, U1e44 ] };
- key <AB09> { [ period, greater, dead_abovedot ] };
-
- include "level3(ralt_switch)"
-};
+// based on the Latvian and GB keyboard maps
+
+partial default alphanumeric_keys modifier_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between an en_US
+ // keyboard and a South African layout with
+ // dead keys. By Dwayne Bailey (dwayne@translate.org.za)
+
+ include "latin"
+
+ name[Group1]="South Africa";
+
+ key <TLDE> { [ grave, asciitilde, dead_grave ] };
+ key <AE02> { [ 2, at, yen ] };
+ key <AE03> { [ 3, numbersign, sterling ] };
+ key <AE04> { [ 4, dollar, dollar ] };
+ key <AE05> { [ 5, percent, EuroSign ] };
+ key <AE06> { [ 6, asciicircum, dead_circumflex ] };
+
+ key <AD03> { [ e, E, ediaeresis, Ediaeresis ] };
+ key <AD04> { [ r, R, ecircumflex, Ecircumflex ] };
+ key <AD05> { [ t, T, U1e71, U1e70 ] };
+ key <AD06> { [ y, Y, ucircumflex, Ucircumflex ] };
+ key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
+ key <AD08> { [ i, I, idiaeresis, Idiaeresis ] };
+ key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
+ key <AD10> { [ p, P, ocircumflex, Ocircumflex ] };
+
+ key <AC01> { [ a, A, adiaeresis, Adiaeresis ] };
+ key <AC02> { [ s, S, scaron, Scaron ] };
+ key <AC03> { [ d, D, U1e13, U1e12 ] };
+ key <AC09> { [ l, L, U1e3d, U1e3c ] };
+ key <AC10> { [ semicolon, colon, dead_diaeresis ] };
+ key <AC11> { [apostrophe, quotedbl, dead_acute ] };
+
+ key <AB06> { [ n, N, U1e4b, U1e4a ] };
+ key <AB07> { [ m, M, U1e45, U1e44 ] };
+ key <AB09> { [ period, greater, dead_abovedot ] };
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/types/basic b/xorg-server/xkeyboard-config/types/basic
index cf1ee648b..70292ea38 100644
--- a/xorg-server/xkeyboard-config/types/basic
+++ b/xorg-server/xkeyboard-config/types/basic
@@ -1,31 +1,29 @@
-// $Xorg: basic,v 1.3 2000/08/17 19:54:48 cpqbld Exp $
-
-default xkb_types "basic" {
-
- // Fairly standard definitions for
- // the four required key types
-
- virtual_modifiers NumLock;
-
- type "ONE_LEVEL" {
- modifiers = None;
- map[None] = Level1;
- level_name[Level1]= "Any";
- };
-
- type "TWO_LEVEL" {
- modifiers = Shift;
- map[Shift] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- };
-
- type "ALPHABETIC" {
- modifiers = Shift+Lock;
- map[Shift] = Level2;
- map[Lock] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "Caps";
- };
-
-};
+default xkb_types "basic" {
+
+ // Fairly standard definitions for
+ // the four required key types
+
+ virtual_modifiers NumLock;
+
+ type "ONE_LEVEL" {
+ modifiers = None;
+ map[None] = Level1;
+ level_name[Level1]= "Any";
+ };
+
+ type "TWO_LEVEL" {
+ modifiers = Shift;
+ map[Shift] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ };
+
+ type "ALPHABETIC" {
+ modifiers = Shift+Lock;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Caps";
+ };
+
+};
diff --git a/xorg-server/xkeyboard-config/types/cancel b/xorg-server/xkeyboard-config/types/cancel
index 478c99c4b..ec5d7191d 100644
--- a/xorg-server/xkeyboard-config/types/cancel
+++ b/xorg-server/xkeyboard-config/types/cancel
@@ -1,12 +1,11 @@
-// $Xorg: cancel,v 1.3 2000/08/17 19:54:48 cpqbld Exp $
-partial default xkb_types "Shift_Cancels_Caps" {
-
-override type "TWO_LEVEL" {
- modifiers = Shift+Lock;
- map[Shift] = Level2;
- preserve[Lock]= Lock;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
-};
-
-};
+partial default xkb_types "Shift_Cancels_Caps" {
+
+override type "TWO_LEVEL" {
+ modifiers = Shift+Lock;
+ map[Shift] = Level2;
+ preserve[Lock]= Lock;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+};
+
+};
diff --git a/xorg-server/xkeyboard-config/types/caps b/xorg-server/xkeyboard-config/types/caps
index 7936df12f..08a7211b9 100644
--- a/xorg-server/xkeyboard-config/types/caps
+++ b/xorg-server/xkeyboard-config/types/caps
@@ -1,170 +1,168 @@
-// $XFree86: xc/programs/xkbcomp/types/caps,v 1.3 2002/11/26 02:14:02 dawes Exp $
-
-// CapsLock uses internal capitalization rules
-// Shift "pauses" CapsLock
-partial xkb_types "internal" {
- type "ALPHABETIC" {
- modifiers = Shift+Lock;
- map[Shift] = Level2;
- preserve[Lock] = Lock;
- level_name[Level1] = "Base";
- level_name[Level2] = "Caps";
- };
-
- type "FOUR_LEVEL_ALPHABETIC" {
- modifiers = Shift+Lock+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- preserve[Lock] = Lock;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level3;
- map[Lock+Shift+LevelThree] = Level3;
- preserve[Lock+LevelThree] = Lock;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-
- type "FOUR_LEVEL_SEMIALPHABETIC" {
- modifiers = Shift+Lock+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- preserve[Lock] = Lock;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level3;
- map[Lock+Shift+LevelThree] = Level4;
- preserve[Lock+LevelThree] = Lock;
- preserve[Lock+Shift+LevelThree] = Lock;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-};
-// CapsLock uses internal capitalization rules
-// Shift doesn't cancel CapsLock
-partial xkb_types "internal_nocancel" {
- type "ALPHABETIC" {
- modifiers = Shift;
- map[Shift] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "Caps";
- };
-
- type "FOUR_LEVEL_ALPHABETIC" {
- modifiers = Shift+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-
- type "FOUR_LEVEL_SEMIALPHABETIC" {
- // the same as FOUR_LEVEL_ALPHABETIC
- modifiers = Shift+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-};
-// CapsLock acts as Shift with locking
-// Shift "pauses" CapsLock
-partial xkb_types "shift" {
- type "ALPHABETIC" {
- modifiers = Shift+Lock;
- map[Shift] = Level2;
- map[Lock] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "Caps";
- };
-
- type "FOUR_LEVEL_ALPHABETIC" {
- modifiers = Shift+Lock+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[Lock] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level4;
- map[Shift+Lock+LevelThree] = Level3;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-
- type "FOUR_LEVEL_SEMIALPHABETIC" {
- modifiers = Shift+Lock+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[Lock] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level3;
- map[Lock+Shift+LevelThree] = Level4;
- preserve[Lock+LevelThree] = Lock;
- preserve[Lock+Shift+LevelThree] = Lock;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-};
-// CapsLock acts as Shift with locking
-// Shift doesn't cancel CapsLock
-partial xkb_types "shift_nocancel" {
- type "ALPHABETIC" {
- modifiers = Shift+Lock;
- map[Shift] = Level2;
- map[Lock] = Level2;
- map[Shift+Lock] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "Caps";
- };
-
- type "FOUR_LEVEL_ALPHABETIC" {
- modifiers = Shift+Lock+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[Lock] = Level2;
- map[Shift+Lock] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level4;
- map[Shift+Lock+LevelThree] = Level4;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-
- type "FOUR_LEVEL_SEMIALPHABETIC" {
- modifiers = Shift+Lock+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[Lock] = Level2;
- map[Shift+Lock] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level3;
- map[Lock+Shift+LevelThree] = Level4;
- preserve[Lock+LevelThree] = Lock;
- preserve[Lock+Shift+LevelThree] = Lock;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-};
+// CapsLock uses internal capitalization rules
+// Shift "pauses" CapsLock
+partial xkb_types "internal" {
+ type "ALPHABETIC" {
+ modifiers = Shift+Lock;
+ map[Shift] = Level2;
+ preserve[Lock] = Lock;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Caps";
+ };
+
+ type "FOUR_LEVEL_ALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ preserve[Lock] = Lock;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level3;
+ preserve[Lock+LevelThree] = Lock;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+
+ type "FOUR_LEVEL_SEMIALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ preserve[Lock] = Lock;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level4;
+ preserve[Lock+LevelThree] = Lock;
+ preserve[Lock+Shift+LevelThree] = Lock;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+};
+// CapsLock uses internal capitalization rules
+// Shift doesn't cancel CapsLock
+partial xkb_types "internal_nocancel" {
+ type "ALPHABETIC" {
+ modifiers = Shift;
+ map[Shift] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Caps";
+ };
+
+ type "FOUR_LEVEL_ALPHABETIC" {
+ modifiers = Shift+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+
+ type "FOUR_LEVEL_SEMIALPHABETIC" {
+ // the same as FOUR_LEVEL_ALPHABETIC
+ modifiers = Shift+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+};
+// CapsLock acts as Shift with locking
+// Shift "pauses" CapsLock
+partial xkb_types "shift" {
+ type "ALPHABETIC" {
+ modifiers = Shift+Lock;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Caps";
+ };
+
+ type "FOUR_LEVEL_ALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level4;
+ map[Shift+Lock+LevelThree] = Level3;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+
+ type "FOUR_LEVEL_SEMIALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level4;
+ preserve[Lock+LevelThree] = Lock;
+ preserve[Lock+Shift+LevelThree] = Lock;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+};
+// CapsLock acts as Shift with locking
+// Shift doesn't cancel CapsLock
+partial xkb_types "shift_nocancel" {
+ type "ALPHABETIC" {
+ modifiers = Shift+Lock;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[Shift+Lock] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Caps";
+ };
+
+ type "FOUR_LEVEL_ALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[Shift+Lock] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level4;
+ map[Shift+Lock+LevelThree] = Level4;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+
+ type "FOUR_LEVEL_SEMIALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[Shift+Lock] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level4;
+ preserve[Lock+LevelThree] = Lock;
+ preserve[Lock+Shift+LevelThree] = Lock;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+};
diff --git a/xorg-server/xkeyboard-config/types/complete b/xorg-server/xkeyboard-config/types/complete
index 96d4fd572..2ac68082e 100644
--- a/xorg-server/xkeyboard-config/types/complete
+++ b/xorg-server/xkeyboard-config/types/complete
@@ -1,17 +1,9 @@
-// $XKeyboardConfig$
-// $Xorg: complete,v 1.3 2000/08/17 19:54:48 cpqbld Exp $
-//
-//
-//
-//
-// $XFree86: xc/programs/xkbcomp/types/complete,v 1.2 2001/05/18 23:35:35 dawes Exp $
-
-default xkb_types "complete" {
- include "basic"
- include "mousekeys"
- include "pc"
- include "iso9995"
- include "level5"
- include "extra"
- include "numpad"
-};
+default xkb_types "complete" {
+ include "basic"
+ include "mousekeys"
+ include "pc"
+ include "iso9995"
+ include "level5"
+ include "extra"
+ include "numpad"
+};
diff --git a/xorg-server/xkeyboard-config/types/default.in b/xorg-server/xkeyboard-config/types/default.in
index 18859b742..140208ccc 100644
--- a/xorg-server/xkeyboard-config/types/default.in
+++ b/xorg-server/xkeyboard-config/types/default.in
@@ -1,6 +1,3 @@
-// $XKeyboardConfig$
-// $Xorg: default,v 1.3 2000/08/17 19:54:48 cpqbld Exp $
-
default xkb_types "default" {
include "basic"
include "pc"
diff --git a/xorg-server/xkeyboard-config/types/extra b/xorg-server/xkeyboard-config/types/extra
index a82fd10d2..06b1fec78 100644
--- a/xorg-server/xkeyboard-config/types/extra
+++ b/xorg-server/xkeyboard-config/types/extra
@@ -1,185 +1,183 @@
-// $XFree86: xc/programs/xkbcomp/types/extra,v 1.3 2002/11/26 02:14:02 dawes Exp $
-
-partial default xkb_types "default" {
- // Definition for a key type used for the czech keymap, for instance.
- // Defines style a with four level shift. It is similar to three_level
- // type used for iso9995 but it lets the shift key behave "normally".
-
- virtual_modifiers LevelThree;
-
- type "FOUR_LEVEL" {
- modifiers = Shift+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-
- type "FOUR_LEVEL_ALPHABETIC" {
- modifiers = Shift+Lock+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[Lock] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level4;
- map[Lock+Shift+LevelThree] = Level3;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-
- type "FOUR_LEVEL_SEMIALPHABETIC" {
- modifiers = Shift+Lock+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[Lock] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level3;
- map[Lock+Shift+LevelThree] = Level4;
- preserve[Lock+LevelThree] = Lock;
- preserve[Lock+Shift+LevelThree] = Lock;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-
- // Another four level keypad variant
- // First two levels are controled by NumLock (with active Shift-ing like
- // in KEYPAD). LevelThree overrides this mode, with two additional
- // Shift-ed levels
- // NumLock state is intentionnaly ignored when LevelThree is active
- type "FOUR_LEVEL_MIXED_KEYPAD" {
- modifiers = Shift+NumLock+LevelThree;
- map[None] = Level1;
- map[Shift+NumLock] = Level1;
- map[NumLock] = Level2;
- map[Shift] = Level2;
- map[LevelThree] = Level3;
- map[NumLock+LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Shift+NumLock+LevelThree] = Level4;
- level_name[Level1] = "Base";
- level_name[Level2] = "Number";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-
- // Base level, two Shift-ed LevelThree levels, one Ctrl+Alt command level
- type "FOUR_LEVEL_X" {
- modifiers = Shift+LevelThree+Control+Alt;
- map[None] = Level1;
- map[LevelThree] = Level2;
- map[Shift+LevelThree] = Level3;
- map[Control+Alt] = Level4;
- level_name[Level1] = "Base";
- level_name[Level2] = "Alt Base";
- level_name[Level3] = "Shift Alt";
- level_name[Level4] = "Ctrl+Alt";
- };
-
-// Special type for keys used in Serbian Latin Unicode map
-// It makes it possible to use all three forms of latin letters
-// present in Unicode that are made up of two separate letters
-// (forms like LJ, Lj, and lj; NJ, Nj, and nj; etc)
-
- type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" {
- modifiers = Shift+Lock+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[Lock] = Level4;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level3;
- map[Lock+Shift+LevelThree] = Level3;
- preserve[Lock]= Lock;
- preserve[Lock+LevelThree]= Lock;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "AltGr Base";
- level_name[Level4] = "Shift AltGr";
- };
-
-// type for e.g. german ssharp which is capitalized SS.
-// CHARACTERISTICS:
-// It is FOUR_LEVEL with the exception that the fifth level
-// is mapped to the Lock modifier.
-// If other modifiers are used, the Lock state is ignored.
-// DETAILS ABOUT GERMAN:
-// The capital form of ssharp (called sharp s) only exists for
-// completely capitalized Text, not at the beginning of sentences
-// or nouns (nouns have a captial letter at the beginning in german).
-// The ssharp key, to the right of the zero key, takes this into
-// account and has a questionmark mapped on shift-ssharp since
-// normally no capital version is needed.
-// When typing with active capsLock, this key type is needed to
-// output two capital letters S because this is the only german key
-// whose capital letter is not the same as the one typed with shift.
-
- type "FOUR_LEVEL_PLUS_LOCK" {
- modifiers = Shift+Lock+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock] = Level5;
- map[Lock+Shift] = Level2;
- map[Lock+LevelThree] = Level3;
- map[Lock+Shift+LevelThree] = Level4;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- level_name[Level5] = "Lock";
- };
-};
-
-// This enables the four level shifting also for the keypad.
-partial xkb_types "keypad" {
- virtual_modifiers LevelThree;
-
- type "FOUR_LEVEL_KEYPAD" {
- modifiers = Shift+NumLock+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[NumLock] = Level2;
- map[Shift+NumLock] = Level1;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[NumLock+LevelThree] = Level4;
- map[Shift+NumLock+LevelThree] = Level3;
- level_name[Level1] = "Base";
- level_name[Level2] = "Number";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Alt Number";
- };
-};
-
-// This enables the four level shifting also for the keypad,
-// but levels 1 and 2, and 3 and 4 are swapped on Mac keypads.
-partial xkb_types "mac_keypad" {
- virtual_modifiers LevelThree;
-
- type "FOUR_LEVEL_KEYPAD" {
- modifiers = Shift+NumLock+LevelThree;
- map[None] = Level2;
- map[Shift] = Level1;
- map[NumLock] = Level1;
- map[Shift+NumLock] = Level2;
- map[LevelThree] = Level4;
- map[Shift+LevelThree] = Level3;
- map[NumLock+LevelThree] = Level3;
- map[Shift+NumLock+LevelThree] = Level4;
- level_name[Level2] = "Base";
- level_name[Level1] = "Number";
- level_name[Level4] = "Alt Base";
- level_name[Level3] = "Alt Number";
- };
-};
+partial default xkb_types "default" {
+ // Definition for a key type used for the czech keymap, for instance.
+ // Defines style a with four level shift. It is similar to three_level
+ // type used for iso9995 but it lets the shift key behave "normally".
+
+ virtual_modifiers LevelThree;
+
+ type "FOUR_LEVEL" {
+ modifiers = Shift+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+
+ type "FOUR_LEVEL_ALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level4;
+ map[Lock+Shift+LevelThree] = Level3;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+
+ type "FOUR_LEVEL_SEMIALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level4;
+ preserve[Lock+LevelThree] = Lock;
+ preserve[Lock+Shift+LevelThree] = Lock;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+
+ // Another four level keypad variant
+ // First two levels are controled by NumLock (with active Shift-ing like
+ // in KEYPAD). LevelThree overrides this mode, with two additional
+ // Shift-ed levels
+ // NumLock state is intentionnaly ignored when LevelThree is active
+ type "FOUR_LEVEL_MIXED_KEYPAD" {
+ modifiers = Shift+NumLock+LevelThree;
+ map[None] = Level1;
+ map[Shift+NumLock] = Level1;
+ map[NumLock] = Level2;
+ map[Shift] = Level2;
+ map[LevelThree] = Level3;
+ map[NumLock+LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Shift+NumLock+LevelThree] = Level4;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Number";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+
+ // Base level, two Shift-ed LevelThree levels, one Ctrl+Alt command level
+ type "FOUR_LEVEL_X" {
+ modifiers = Shift+LevelThree+Control+Alt;
+ map[None] = Level1;
+ map[LevelThree] = Level2;
+ map[Shift+LevelThree] = Level3;
+ map[Control+Alt] = Level4;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Alt Base";
+ level_name[Level3] = "Shift Alt";
+ level_name[Level4] = "Ctrl+Alt";
+ };
+
+// Special type for keys used in Serbian Latin Unicode map
+// It makes it possible to use all three forms of latin letters
+// present in Unicode that are made up of two separate letters
+// (forms like LJ, Lj, and lj; NJ, Nj, and nj; etc)
+
+ type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level4;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level3;
+ preserve[Lock]= Lock;
+ preserve[Lock+LevelThree]= Lock;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "AltGr Base";
+ level_name[Level4] = "Shift AltGr";
+ };
+
+// type for e.g. german ssharp which is capitalized SS.
+// CHARACTERISTICS:
+// It is FOUR_LEVEL with the exception that the fifth level
+// is mapped to the Lock modifier.
+// If other modifiers are used, the Lock state is ignored.
+// DETAILS ABOUT GERMAN:
+// The capital form of ssharp (called sharp s) only exists for
+// completely capitalized Text, not at the beginning of sentences
+// or nouns (nouns have a captial letter at the beginning in german).
+// The ssharp key, to the right of the zero key, takes this into
+// account and has a questionmark mapped on shift-ssharp since
+// normally no capital version is needed.
+// When typing with active capsLock, this key type is needed to
+// output two capital letters S because this is the only german key
+// whose capital letter is not the same as the one typed with shift.
+
+ type "FOUR_LEVEL_PLUS_LOCK" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock] = Level5;
+ map[Lock+Shift] = Level2;
+ map[Lock+LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level4;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ level_name[Level5] = "Lock";
+ };
+};
+
+// This enables the four level shifting also for the keypad.
+partial xkb_types "keypad" {
+ virtual_modifiers LevelThree;
+
+ type "FOUR_LEVEL_KEYPAD" {
+ modifiers = Shift+NumLock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[NumLock] = Level2;
+ map[Shift+NumLock] = Level1;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[NumLock+LevelThree] = Level4;
+ map[Shift+NumLock+LevelThree] = Level3;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Number";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Alt Number";
+ };
+};
+
+// This enables the four level shifting also for the keypad,
+// but levels 1 and 2, and 3 and 4 are swapped on Mac keypads.
+partial xkb_types "mac_keypad" {
+ virtual_modifiers LevelThree;
+
+ type "FOUR_LEVEL_KEYPAD" {
+ modifiers = Shift+NumLock+LevelThree;
+ map[None] = Level2;
+ map[Shift] = Level1;
+ map[NumLock] = Level1;
+ map[Shift+NumLock] = Level2;
+ map[LevelThree] = Level4;
+ map[Shift+LevelThree] = Level3;
+ map[NumLock+LevelThree] = Level3;
+ map[Shift+NumLock+LevelThree] = Level4;
+ level_name[Level2] = "Base";
+ level_name[Level1] = "Number";
+ level_name[Level4] = "Alt Base";
+ level_name[Level3] = "Alt Number";
+ };
+};
diff --git a/xorg-server/xkeyboard-config/types/iso9995 b/xorg-server/xkeyboard-config/types/iso9995
index 80f3ee5cf..893a6b341 100644
--- a/xorg-server/xkeyboard-config/types/iso9995
+++ b/xorg-server/xkeyboard-config/types/iso9995
@@ -1,20 +1,18 @@
-// $Xorg: iso9995,v 1.3 2000/08/17 19:54:48 cpqbld Exp $
-partial default xkb_types "default" {
-
- // Definition for a key type which
- // can be used to implement ISO9995
- // style level three shift
- virtual_modifiers LevelThree;
-
- type "THREE_LEVEL" {
- modifiers = Shift+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level3;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Level3";
- };
-};
-
+partial default xkb_types "default" {
+
+ // Definition for a key type which
+ // can be used to implement ISO9995
+ // style level three shift
+ virtual_modifiers LevelThree;
+
+ type "THREE_LEVEL" {
+ modifiers = Shift+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level3;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Level3";
+ };
+};
diff --git a/xorg-server/xkeyboard-config/types/level5 b/xorg-server/xkeyboard-config/types/level5
index 05dafecf6..671f4b3e8 100644
--- a/xorg-server/xkeyboard-config/types/level5
+++ b/xorg-server/xkeyboard-config/types/level5
@@ -1,217 +1,213 @@
-// $XKeyboardConfig$
-// $XFree86: xc/programs/xkbcomp/types/extra,v 1.3 2002/11/26 02:14:02 dawes Exp $
-
-partial default xkb_types "default" {
- // Definition for a key type used for the czech keymap, for instance.
- // Defines style a with four level shift. It is similar to three_level
- // type used for iso9995 but it lets the shift key behave "normally".
-
- virtual_modifiers LevelThree,ScrollLock,LevelFive;
-
- type "EIGHT_LEVEL" {
- modifiers = Shift+LevelThree+LevelFive;
- map[None] = Level1;
- map[Shift] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[LevelFive] = Level5;
- map[Shift+LevelFive] = Level6;
- map[LevelThree+LevelFive] = Level7;
- map[Shift+LevelThree+LevelFive] = Level8;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- level_name[Level5] = "X";
- level_name[Level6] = "X Shift";
- level_name[Level7] = "X Alt Base";
- level_name[Level8] = "X Shift Alt";
- };
-
- type "EIGHT_LEVEL_ALPHABETIC" {
- modifiers = Shift+Lock+LevelThree+LevelFive;
- map[None] = Level1;
- map[Shift] = Level2;
- map[Lock] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level4;
- map[Lock+Shift+LevelThree] = Level3;
-
- map[LevelFive] = Level5;
- map[Shift+LevelFive] = Level6;
- map[Lock+LevelFive] = Level6;
- map[LevelThree+LevelFive] = Level7;
- map[Shift+LevelThree+LevelFive] = Level8;
- map[Lock+LevelThree+LevelFive] = Level8;
- map[Lock+Shift+LevelThree+LevelFive] = Level7;
-
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- level_name[Level5] = "X";
- level_name[Level6] = "X Shift";
- level_name[Level7] = "X Alt Base";
- level_name[Level8] = "X Shift Alt";
- };
-
-// type "EIGHT_LEVEL_LEVEL_FIVE_LOCK" {
-// // Level5-Lock is implemented by using NumLock, because a real modifier
-// // is required.
-//
-// modifiers = Shift + Lock + LevelThree + NumLock + LevelFive;
-//
-// map[None] = Level1;
-// map[Shift] = Level2;
-// map[LevelThree] = Level3;
-// map[LevelThree+Shift] = Level4;
-//
-// map[LevelFive] = Level5;
-// map[LevelFive+Shift] = Level6;
-// map[LevelFive+LevelThree] = Level7;
-// map[LevelFive+LevelThree+Shift] = Level8;
-//
-// map[NumLock] = Level5;
-// map[NumLock+Shift] = Level6;
-// map[NumLock+LevelThree] = Level7;
-// map[NumLock+LevelThree+Shift] = Level8;
-//
-// map[NumLock+LevelFive] = Level1;
-// map[NumLock+LevelFive+Shift] = Level2;
-// map[NumLock+LevelFive+LevelThree] = Level3;
-// map[NumLock+LevelFive+LevelThree+Shift] = Level4;
-//
-// // Lock has no effect
-// map[Lock] = Level1;
-// map[Lock+Shift] = Level2;
-// map[Lock+LevelThree] = Level3;
-// map[Lock+LevelThree+Shift] = Level4;
-//
-// map[Lock+LevelFive] = Level5;
-// map[Lock+LevelFive+Shift] = Level6;
-// map[Lock+LevelFive+LevelThree] = Level7;
-// map[Lock+LevelFive+LevelThree+Shift] = Level8;
-//
-// map[Lock+NumLock] = Level5;
-// map[Lock+NumLock+Shift] = Level6;
-// map[Lock+NumLock+LevelThree] = Level7;
-// map[Lock+NumLock+LevelThree+Shift] = Level8;
-//
-// map[Lock+NumLock+LevelFive] = Level1;
-// map[Lock+NumLock+LevelFive+Shift] = Level2;
-// map[Lock+NumLock+LevelFive+LevelThree] = Level3;
-// map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level4;
-//
-// preserve[LevelFive+Shift] = Shift;
-// preserve[NumLock+Shift] = Shift;
-// preserve[Lock+LevelFive+Shift] = Shift;
-// preserve[Lock+NumLock+Shift] = Shift;
-//
-// level_name[Level1] = "Base";
-// level_name[Level2] = "Shift";
-// level_name[Level3] = "Alt Base";
-// level_name[Level4] = "Shift Alt";
-// level_name[Level5] = "X";
-// level_name[Level6] = "X Shift";
-// level_name[Level7] = "X Alt Base";
-// level_name[Level8] = "X Shift Alt";
-// };
-//
-// type "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK" {
-// // Level5-Lock is implemented by using NumLock, because a real modifier
-// // is required.
-//
-// modifiers = Shift + Lock + LevelThree + NumLock + LevelFive;
-//
-// map[None] = Level1;
-// map[Shift] = Level2;
-// map[LevelThree] = Level3;
-// map[LevelThree+Shift] = Level4;
-//
-// map[LevelFive] = Level5;
-// map[LevelFive+Shift] = Level6;
-// map[LevelFive+LevelThree] = Level7;
-// map[LevelFive+LevelThree+Shift] = Level8;
-//
-// map[NumLock] = Level5;
-// map[NumLock+Shift] = Level6;
-// map[NumLock+LevelThree] = Level7;
-// map[NumLock+LevelThree+Shift] = Level8;
-//
-// map[NumLock+LevelFive] = Level1;
-// map[NumLock+LevelFive+Shift] = Level2;
-// map[NumLock+LevelFive+LevelThree] = Level3;
-// map[NumLock+LevelFive+LevelThree+Shift] = Level4;
-//
-// // Lock interchanges Level1 and Level2
-// map[Lock] = Level2;
-// map[Lock+Shift] = Level1;
-// map[Lock+LevelThree] = Level3;
-// map[Lock+LevelThree+Shift] = Level4;
-//
-// map[Lock+LevelFive] = Level5;
-// map[Lock+LevelFive+Shift] = Level6;
-// map[Lock+LevelFive+LevelThree] = Level7;
-// map[Lock+LevelFive+LevelThree+Shift] = Level8;
-//
-// map[Lock+NumLock] = Level5;
-// map[Lock+NumLock+Shift] = Level6;
-// map[Lock+NumLock+LevelThree] = Level7;
-// map[Lock+NumLock+LevelThree+Shift] = Level8;
-//
-// map[Lock+NumLock+LevelFive] = Level2;
-// map[Lock+NumLock+LevelFive+Shift] = Level1;
-// map[Lock+NumLock+LevelFive+LevelThree] = Level4;
-// map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level3;
-//
-// preserve[LevelFive+Shift] = Shift;
-// preserve[NumLock+Shift] = Shift;
-//
-// level_name[Level1] = "Base";
-// level_name[Level2] = "Shift";
-// level_name[Level3] = "Alt Base";
-// level_name[Level4] = "Shift Alt";
-// level_name[Level5] = "X";
-// level_name[Level6] = "X Shift";
-// level_name[Level7] = "X Alt Base";
-// level_name[Level8] = "X Shift Alt";
-// };
-
- type "EIGHT_LEVEL_SEMIALPHABETIC" {
- modifiers = Shift+Lock+LevelThree+LevelFive;
- map[None] = Level1;
- map[Shift] = Level2;
- map[Lock] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level3;
- map[Lock+Shift+LevelThree] = Level4;
-
- map[LevelFive] = Level5;
- map[Shift+LevelFive] = Level6;
- map[Lock+LevelFive] = Level6;
- map[LevelThree+LevelFive] = Level7;
- map[Shift+LevelThree+LevelFive] = Level8;
- map[Lock+LevelThree+LevelFive] = Level7;
- map[Lock+Shift+LevelThree+LevelFive] = Level8;
-
- preserve[Lock+LevelThree] = Lock;
- preserve[Lock+Shift+LevelThree] = Lock;
- preserve[Lock+LevelFive] = Lock;
- preserve[Lock+Shift+LevelFive] = Lock;
- preserve[Lock+LevelThree+LevelFive] = Lock;
- preserve[Lock+Shift+LevelThree+LevelFive] = Lock;
-
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- level_name[Level5] = "X";
- level_name[Level6] = "X Shift";
- level_name[Level7] = "X Alt Base";
- level_name[Level8] = "X Shift Alt";
- };
-
-};
-
+partial default xkb_types "default" {
+ // Definition for a key type used for the czech keymap, for instance.
+ // Defines style a with four level shift. It is similar to three_level
+ // type used for iso9995 but it lets the shift key behave "normally".
+
+ virtual_modifiers LevelThree,ScrollLock,LevelFive;
+
+ type "EIGHT_LEVEL" {
+ modifiers = Shift+LevelThree+LevelFive;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[LevelFive] = Level5;
+ map[Shift+LevelFive] = Level6;
+ map[LevelThree+LevelFive] = Level7;
+ map[Shift+LevelThree+LevelFive] = Level8;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ level_name[Level5] = "X";
+ level_name[Level6] = "X Shift";
+ level_name[Level7] = "X Alt Base";
+ level_name[Level8] = "X Shift Alt";
+ };
+
+ type "EIGHT_LEVEL_ALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree+LevelFive;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level4;
+ map[Lock+Shift+LevelThree] = Level3;
+
+ map[LevelFive] = Level5;
+ map[Shift+LevelFive] = Level6;
+ map[Lock+LevelFive] = Level6;
+ map[LevelThree+LevelFive] = Level7;
+ map[Shift+LevelThree+LevelFive] = Level8;
+ map[Lock+LevelThree+LevelFive] = Level8;
+ map[Lock+Shift+LevelThree+LevelFive] = Level7;
+
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ level_name[Level5] = "X";
+ level_name[Level6] = "X Shift";
+ level_name[Level7] = "X Alt Base";
+ level_name[Level8] = "X Shift Alt";
+ };
+
+// type "EIGHT_LEVEL_LEVEL_FIVE_LOCK" {
+// // Level5-Lock is implemented by using NumLock, because a real modifier
+// // is required.
+//
+// modifiers = Shift + Lock + LevelThree + NumLock + LevelFive;
+//
+// map[None] = Level1;
+// map[Shift] = Level2;
+// map[LevelThree] = Level3;
+// map[LevelThree+Shift] = Level4;
+//
+// map[LevelFive] = Level5;
+// map[LevelFive+Shift] = Level6;
+// map[LevelFive+LevelThree] = Level7;
+// map[LevelFive+LevelThree+Shift] = Level8;
+//
+// map[NumLock] = Level5;
+// map[NumLock+Shift] = Level6;
+// map[NumLock+LevelThree] = Level7;
+// map[NumLock+LevelThree+Shift] = Level8;
+//
+// map[NumLock+LevelFive] = Level1;
+// map[NumLock+LevelFive+Shift] = Level2;
+// map[NumLock+LevelFive+LevelThree] = Level3;
+// map[NumLock+LevelFive+LevelThree+Shift] = Level4;
+//
+// // Lock has no effect
+// map[Lock] = Level1;
+// map[Lock+Shift] = Level2;
+// map[Lock+LevelThree] = Level3;
+// map[Lock+LevelThree+Shift] = Level4;
+//
+// map[Lock+LevelFive] = Level5;
+// map[Lock+LevelFive+Shift] = Level6;
+// map[Lock+LevelFive+LevelThree] = Level7;
+// map[Lock+LevelFive+LevelThree+Shift] = Level8;
+//
+// map[Lock+NumLock] = Level5;
+// map[Lock+NumLock+Shift] = Level6;
+// map[Lock+NumLock+LevelThree] = Level7;
+// map[Lock+NumLock+LevelThree+Shift] = Level8;
+//
+// map[Lock+NumLock+LevelFive] = Level1;
+// map[Lock+NumLock+LevelFive+Shift] = Level2;
+// map[Lock+NumLock+LevelFive+LevelThree] = Level3;
+// map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level4;
+//
+// preserve[LevelFive+Shift] = Shift;
+// preserve[NumLock+Shift] = Shift;
+// preserve[Lock+LevelFive+Shift] = Shift;
+// preserve[Lock+NumLock+Shift] = Shift;
+//
+// level_name[Level1] = "Base";
+// level_name[Level2] = "Shift";
+// level_name[Level3] = "Alt Base";
+// level_name[Level4] = "Shift Alt";
+// level_name[Level5] = "X";
+// level_name[Level6] = "X Shift";
+// level_name[Level7] = "X Alt Base";
+// level_name[Level8] = "X Shift Alt";
+// };
+//
+// type "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK" {
+// // Level5-Lock is implemented by using NumLock, because a real modifier
+// // is required.
+//
+// modifiers = Shift + Lock + LevelThree + NumLock + LevelFive;
+//
+// map[None] = Level1;
+// map[Shift] = Level2;
+// map[LevelThree] = Level3;
+// map[LevelThree+Shift] = Level4;
+//
+// map[LevelFive] = Level5;
+// map[LevelFive+Shift] = Level6;
+// map[LevelFive+LevelThree] = Level7;
+// map[LevelFive+LevelThree+Shift] = Level8;
+//
+// map[NumLock] = Level5;
+// map[NumLock+Shift] = Level6;
+// map[NumLock+LevelThree] = Level7;
+// map[NumLock+LevelThree+Shift] = Level8;
+//
+// map[NumLock+LevelFive] = Level1;
+// map[NumLock+LevelFive+Shift] = Level2;
+// map[NumLock+LevelFive+LevelThree] = Level3;
+// map[NumLock+LevelFive+LevelThree+Shift] = Level4;
+//
+// // Lock interchanges Level1 and Level2
+// map[Lock] = Level2;
+// map[Lock+Shift] = Level1;
+// map[Lock+LevelThree] = Level3;
+// map[Lock+LevelThree+Shift] = Level4;
+//
+// map[Lock+LevelFive] = Level5;
+// map[Lock+LevelFive+Shift] = Level6;
+// map[Lock+LevelFive+LevelThree] = Level7;
+// map[Lock+LevelFive+LevelThree+Shift] = Level8;
+//
+// map[Lock+NumLock] = Level5;
+// map[Lock+NumLock+Shift] = Level6;
+// map[Lock+NumLock+LevelThree] = Level7;
+// map[Lock+NumLock+LevelThree+Shift] = Level8;
+//
+// map[Lock+NumLock+LevelFive] = Level2;
+// map[Lock+NumLock+LevelFive+Shift] = Level1;
+// map[Lock+NumLock+LevelFive+LevelThree] = Level4;
+// map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level3;
+//
+// preserve[LevelFive+Shift] = Shift;
+// preserve[NumLock+Shift] = Shift;
+//
+// level_name[Level1] = "Base";
+// level_name[Level2] = "Shift";
+// level_name[Level3] = "Alt Base";
+// level_name[Level4] = "Shift Alt";
+// level_name[Level5] = "X";
+// level_name[Level6] = "X Shift";
+// level_name[Level7] = "X Alt Base";
+// level_name[Level8] = "X Shift Alt";
+// };
+
+ type "EIGHT_LEVEL_SEMIALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree+LevelFive;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level4;
+
+ map[LevelFive] = Level5;
+ map[Shift+LevelFive] = Level6;
+ map[Lock+LevelFive] = Level6;
+ map[LevelThree+LevelFive] = Level7;
+ map[Shift+LevelThree+LevelFive] = Level8;
+ map[Lock+LevelThree+LevelFive] = Level7;
+ map[Lock+Shift+LevelThree+LevelFive] = Level8;
+
+ preserve[Lock+LevelThree] = Lock;
+ preserve[Lock+Shift+LevelThree] = Lock;
+ preserve[Lock+LevelFive] = Lock;
+ preserve[Lock+Shift+LevelFive] = Lock;
+ preserve[Lock+LevelThree+LevelFive] = Lock;
+ preserve[Lock+Shift+LevelThree+LevelFive] = Lock;
+
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ level_name[Level5] = "X";
+ level_name[Level6] = "X Shift";
+ level_name[Level7] = "X Alt Base";
+ level_name[Level8] = "X Shift Alt";
+ };
+
+};
diff --git a/xorg-server/xkeyboard-config/types/mousekeys b/xorg-server/xkeyboard-config/types/mousekeys
index 85440ca7f..03225990a 100644
--- a/xorg-server/xkeyboard-config/types/mousekeys
+++ b/xorg-server/xkeyboard-config/types/mousekeys
@@ -1,13 +1,10 @@
-// $Xorg: mousekeys,v 1.3 2000/08/17 19:54:48 cpqbld Exp $
-//
-partial default xkb_types "default" {
- virtual_modifiers Alt;
-
- type "SHIFT+ALT" {
- modifiers = Shift+Alt;
- map[Shift+Alt] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift+Alt";
- };
-};
-
+partial default xkb_types "default" {
+ virtual_modifiers Alt;
+
+ type "SHIFT+ALT" {
+ modifiers = Shift+Alt;
+ map[Shift+Alt] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift+Alt";
+ };
+};
diff --git a/xorg-server/xkeyboard-config/types/numpad b/xorg-server/xkeyboard-config/types/numpad
index a48e76a64..82c22a917 100644
--- a/xorg-server/xkeyboard-config/types/numpad
+++ b/xorg-server/xkeyboard-config/types/numpad
@@ -1,72 +1,71 @@
-
-partial default xkb_types "pc" {
- type "KEYPAD" {
- modifiers = Shift+NumLock;
- map[None] = Level1;
- map[Shift] = Level2;
- map[NumLock] = Level2;
- map[Shift+NumLock] = Level1;
- level_name[Level1] = "Base";
- level_name[Level2] = "Number";
- };
- include "extra(keypad)"
-};
-
-// On Mac keypads, level 1 and 2 are swapped
-partial xkb_types "mac" {
- type "KEYPAD" {
- modifiers = Shift+NumLock;
- map[None] = Level2;
- map[Shift] = Level1;
- map[NumLock] = Level1;
- map[Shift+NumLock] = Level2;
- level_name[Level2] = "Base";
- level_name[Level1] = "Number";
- };
- include "extra(mac_keypad)"
-};
-
-partial xkb_types "microsoft" {
- type "KEYPAD" {
- modifiers = Shift+NumLock;
- map[None] = Level1;
- preserve[Shift] = Shift;
- map[NumLock] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "Number";
- };
- include "extra(keypad)"
-};
-
-// Swiss-German style numeric keypad: Shift and NumLock operates as
-// two independent modifiers; however, since we want shift state for
-// the cursor keys, only three levels are used from the key mappings.
-// Closest type is actually FOUR_LEVEL_X, but most numpad layouts uses
-// FOUR_LEVEL_MIXED_KEYPAD so that's the one we are going to override.
-partial xkb_types "shift3" {
- type "FOUR_LEVEL_MIXED_KEYPAD" {
- modifiers = Shift+NumLock+Control+Alt;
-
- // NumLock Off => navigate using cursor keys
- map[None] = Level1;
-
- // NumLock Off + Shift pressed => select using cursor keys
- preserve[Shift] = Shift;
-
- // NumLock On => decimal digits
- map[NumLock] = Level2;
-
- // NumLock On + Shift pressed => auxiliary symbols,
- // e.g. hexadecimal digits
- map[Shift+NumLock] = Level3;
-
- // Ctrl + Alt, regardless of NumLock and Shift => command keys
- map[Control+Alt] = Level4;
-
- // reverse map from levels to modifiers
- level_name[Level1] = "Base";
- level_name[Level2] = "NumLock";
- level_name[Level3] = "Shift+NumLock";
- level_name[Level4] = "Ctrl+Alt";
- };
-};
+partial default xkb_types "pc" {
+ type "KEYPAD" {
+ modifiers = Shift+NumLock;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[NumLock] = Level2;
+ map[Shift+NumLock] = Level1;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Number";
+ };
+ include "extra(keypad)"
+};
+
+// On Mac keypads, level 1 and 2 are swapped
+partial xkb_types "mac" {
+ type "KEYPAD" {
+ modifiers = Shift+NumLock;
+ map[None] = Level2;
+ map[Shift] = Level1;
+ map[NumLock] = Level1;
+ map[Shift+NumLock] = Level2;
+ level_name[Level2] = "Base";
+ level_name[Level1] = "Number";
+ };
+ include "extra(mac_keypad)"
+};
+
+partial xkb_types "microsoft" {
+ type "KEYPAD" {
+ modifiers = Shift+NumLock;
+ map[None] = Level1;
+ preserve[Shift] = Shift;
+ map[NumLock] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Number";
+ };
+ include "extra(keypad)"
+};
+
+// Swiss-German style numeric keypad: Shift and NumLock operates as
+// two independent modifiers; however, since we want shift state for
+// the cursor keys, only three levels are used from the key mappings.
+// Closest type is actually FOUR_LEVEL_X, but most numpad layouts uses
+// FOUR_LEVEL_MIXED_KEYPAD so that's the one we are going to override.
+partial xkb_types "shift3" {
+ type "FOUR_LEVEL_MIXED_KEYPAD" {
+ modifiers = Shift+NumLock+Control+Alt;
+
+ // NumLock Off => navigate using cursor keys
+ map[None] = Level1;
+
+ // NumLock Off + Shift pressed => select using cursor keys
+ preserve[Shift] = Shift;
+
+ // NumLock On => decimal digits
+ map[NumLock] = Level2;
+
+ // NumLock On + Shift pressed => auxiliary symbols,
+ // e.g. hexadecimal digits
+ map[Shift+NumLock] = Level3;
+
+ // Ctrl + Alt, regardless of NumLock and Shift => command keys
+ map[Control+Alt] = Level4;
+
+ // reverse map from levels to modifiers
+ level_name[Level1] = "Base";
+ level_name[Level2] = "NumLock";
+ level_name[Level3] = "Shift+NumLock";
+ level_name[Level4] = "Ctrl+Alt";
+ };
+};
diff --git a/xorg-server/xkeyboard-config/types/pc b/xorg-server/xkeyboard-config/types/pc
index 3c1986aa3..c2d085ed5 100644
--- a/xorg-server/xkeyboard-config/types/pc
+++ b/xorg-server/xkeyboard-config/types/pc
@@ -1,111 +1,108 @@
-// $Xorg: pc,v 1.3 2000/08/17 19:54:48 cpqbld Exp $
-//
-
-partial default xkb_types "default" {
-
- // Some types that are necessary
- // for a full implementation of
- // a PC compatible keyboard.
- virtual_modifiers Alt;
- virtual_modifiers LevelThree;
- virtual_modifiers LAlt;
- virtual_modifiers RAlt;
- virtual_modifiers RControl;
- virtual_modifiers LControl;
-
- type "PC_CONTROL_LEVEL2" {
- modifiers = Control;
- map[None] = Level1;
- map[Control] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "Control";
- };
-
- type "PC_LCONTROL_LEVEL2" {
- modifiers = LControl;
- map[None] = Level1;
- map[LControl] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "LControl";
- };
-
- type "PC_RCONTROL_LEVEL2" {
- modifiers = RControl;
- map[None] = Level1;
- map[RControl] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "RControl";
- };
-
- type "PC_ALT_LEVEL2" {
- modifiers = Alt;
- map[None] = Level1;
- map[Alt] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "Alt";
- };
-
- type "PC_LALT_LEVEL2" {
- modifiers = LAlt;
- map[None] = Level1;
- map[LAlt] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "LAlt";
- };
-
- type "PC_RALT_LEVEL2" {
- modifiers = RAlt;
- map[None] = Level1;
- map[RAlt] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "RAlt";
- };
-
- type "CTRL+ALT" {
- modifiers = Control+Alt;
- map[Control+Alt] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "Ctrl+Alt";
- };
-
- // Local eight level
- // Needed when you want part of your layout eight-level but can not use
- // LevelFive as modifier, as this will take over right ctrl by default
- // for all the layout and is too invasive for your average four-level user
- // Needed to fix bug #9529
- // FIXME Should really use RControl but it's seems not to be enabled by
- // default and touching this requires a lot of testing
- type "LOCAL_EIGHT_LEVEL" {
- modifiers = Shift+Lock+LevelThree+Control;
-
- map[None] = Level1;
- map[Lock+Shift] = Level1;
- map[Shift] = Level2;
- map[Lock] = Level2;
-
- map[LevelThree] = Level3;
- map[Lock+Shift+LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level4;
-
- map[Control] = Level5;
- map[Lock+Shift+Control] = Level5;
- map[Shift+Control] = Level6;
- map[Lock+Control] = Level6;
-
- map[LevelThree+Control] = Level7;
- map[Lock+Shift+LevelThree+Control] = Level7;
- map[Shift+LevelThree+Control] = Level8;
- map[Lock+LevelThree+Control] = Level8;
-
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Level3";
- level_name[Level4] = "Shift Level3";
- level_name[Level5] = "Ctrl";
- level_name[Level6] = "Shift Ctrl";
- level_name[Level7] = "Level3 Ctrl";
- level_name[Level8] = "Shift Level3 Ctrl";
- };
-
-};
+partial default xkb_types "default" {
+
+ // Some types that are necessary
+ // for a full implementation of
+ // a PC compatible keyboard.
+ virtual_modifiers Alt;
+ virtual_modifiers LevelThree;
+ virtual_modifiers LAlt;
+ virtual_modifiers RAlt;
+ virtual_modifiers RControl;
+ virtual_modifiers LControl;
+
+ type "PC_CONTROL_LEVEL2" {
+ modifiers = Control;
+ map[None] = Level1;
+ map[Control] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Control";
+ };
+
+ type "PC_LCONTROL_LEVEL2" {
+ modifiers = LControl;
+ map[None] = Level1;
+ map[LControl] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "LControl";
+ };
+
+ type "PC_RCONTROL_LEVEL2" {
+ modifiers = RControl;
+ map[None] = Level1;
+ map[RControl] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "RControl";
+ };
+
+ type "PC_ALT_LEVEL2" {
+ modifiers = Alt;
+ map[None] = Level1;
+ map[Alt] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Alt";
+ };
+
+ type "PC_LALT_LEVEL2" {
+ modifiers = LAlt;
+ map[None] = Level1;
+ map[LAlt] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "LAlt";
+ };
+
+ type "PC_RALT_LEVEL2" {
+ modifiers = RAlt;
+ map[None] = Level1;
+ map[RAlt] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "RAlt";
+ };
+
+ type "CTRL+ALT" {
+ modifiers = Control+Alt;
+ map[Control+Alt] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Ctrl+Alt";
+ };
+
+ // Local eight level
+ // Needed when you want part of your layout eight-level but can not use
+ // LevelFive as modifier, as this will take over right ctrl by default
+ // for all the layout and is too invasive for your average four-level user
+ // Needed to fix bug #9529
+ // FIXME Should really use RControl but it's seems not to be enabled by
+ // default and touching this requires a lot of testing
+ type "LOCAL_EIGHT_LEVEL" {
+ modifiers = Shift+Lock+LevelThree+Control;
+
+ map[None] = Level1;
+ map[Lock+Shift] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+
+ map[LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level4;
+
+ map[Control] = Level5;
+ map[Lock+Shift+Control] = Level5;
+ map[Shift+Control] = Level6;
+ map[Lock+Control] = Level6;
+
+ map[LevelThree+Control] = Level7;
+ map[Lock+Shift+LevelThree+Control] = Level7;
+ map[Shift+LevelThree+Control] = Level8;
+ map[Lock+LevelThree+Control] = Level8;
+
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Level3";
+ level_name[Level4] = "Shift Level3";
+ level_name[Level5] = "Ctrl";
+ level_name[Level6] = "Shift Ctrl";
+ level_name[Level7] = "Level3 Ctrl";
+ level_name[Level8] = "Shift Level3 Ctrl";
+ };
+
+};