OSDN Git Service

FIRST REPOSITORY
[eos/hostdependOTHERS.git] / HP / util / HP / lib / tk8.3 / demos / ixset
1 #!/bin/sh
2 # the next line restarts using wish \
3 exec wish8.3 "$0" "$@"
4
5 # ixset --
6 # A nice interface to "xset" to change X server settings
7 #
8 # History :
9 #   91/11/23 : pda@masi.ibp.fr, jt@ratp.fr : design
10 #   92/08/01 : pda@masi.ibp.fr : cleaning
11 #
12 # RCS: @(#) $Id: ixset,v 1.2 1998/09/14 18:23:29 stanton Exp $
13
14 #
15 # Button actions
16 #
17
18 proc quit {} {
19     destroy .
20 }
21
22 proc ok {} {
23     writesettings
24     quit
25 }
26
27 proc cancel {} {
28     readsettings
29     dispsettings
30 }
31
32 # apply is just "writesettings"
33
34
35 #
36 # Read current settings
37 #
38
39 proc readsettings {} {
40     global kbdrep ;     set kbdrep      "on"
41     global kbdcli ;     set kbdcli      0
42     global bellvol ;    set bellvol     100
43     global bellpit ;    set bellpit     440
44     global belldur ;    set belldur     100
45     global mouseacc ;   set mouseacc    "3/1"
46     global mousethr ;   set mousethr    4
47     global screenbla ;  set screenbla   "blank"
48     global screentim ;  set screentim   600
49     global screencyc ;  set screencyc   600
50
51     set xfd [open "|xset q" r]
52     while {[gets $xfd line] > -1} {
53         set kw [lindex $line 0]
54
55         case $kw in {
56             {auto}
57                 {
58                     set rpt [lindex $line 1]
59                     if {[expr "{$rpt} == {repeat:}"]} then {
60                         set kbdrep [lindex $line 2]
61                         set kbdcli [lindex $line 6]
62                     }
63                 }
64             {bell}
65                 {
66                     set bellvol [lindex $line 2]
67                     set bellpit [lindex $line 5]
68                     set belldur [lindex $line 8]
69                 }
70             {acceleration:}
71                 {
72                     set mouseacc [lindex $line 1]
73                     set mousethr [lindex $line 3]
74                 }
75             {prefer}
76                 {
77                     set bla [lindex $line 2]
78                     set screenbla [expr "{$bla} == {yes} ? {blank} : {noblank}"]
79                 }
80             {timeout:}
81                 {
82                     set screentim [lindex $line 1]
83                     set screencyc [lindex $line 3]
84                 }
85         }
86     }
87     close $xfd
88
89     # puts stdout [format "Key REPEAT = %s\n" $kbdrep]
90     # puts stdout [format "Key CLICK  = %s\n" $kbdcli]
91     # puts stdout [format "Bell VOLUME = %s\n" $bellvol]
92     # puts stdout [format "Bell PITCH = %s\n" $bellpit]
93     # puts stdout [format "Bell DURATION = %s\n" $belldur]
94     # puts stdout [format "Mouse ACCELERATION = %s\n" $mouseacc]
95     # puts stdout [format "Mouse THRESHOLD = %s\n" $mousethr]
96     # puts stdout [format "Screen BLANCK = %s\n" $screenbla]
97     # puts stdout [format "Screen TIMEOUT = %s\n" $screentim]
98     # puts stdout [format "Screen CYCLE = %s\n" $screencyc]
99 }
100
101
102 #
103 # Write settings into the X server
104 #
105
106 proc writesettings {} {
107     global kbdrep kbdcli  bellvol bellpit belldur
108     global mouseacc mousethr  screenbla screentim screencyc
109
110     set bellvol         [.bell.vol get]
111     set bellpit         [.bell.val.pit.entry get]
112     set belldur         [.bell.val.dur.entry get]
113
114     if {[expr "{$kbdrep} == {on}"]} then {
115         set kbdcli      [.kbd.val.cli get]
116     } else {
117         set kbdcli      "off"
118     }
119
120     set mouseacc        [.mouse.hor.acc.entry get]
121     set mousethr        [.mouse.hor.thr.entry get]
122
123     set screentim       [.screen.val.le.tim.entry get]
124     set screencyc       [.screen.val.le.cyc.entry get]
125
126     exec xset \
127         b $bellvol $bellpit $belldur \
128         c $kbdcli \
129         r $kbdrep \
130         m $mouseacc $mousethr \
131         s $screentim $screencyc \
132         s $screenbla
133 }
134
135
136 #
137 # Sends all settings to the window
138 #
139
140 proc dispsettings {} {
141     global kbdrep kbdcli  bellvol bellpit belldur
142     global mouseacc mousethr  screenbla screentim screencyc
143
144     .bell.vol set $bellvol
145     .bell.val.pit.entry delete 0 end
146     .bell.val.pit.entry insert 0 $bellpit
147     .bell.val.dur.entry delete 0 end
148     .bell.val.dur.entry insert 0 $belldur
149
150     .kbd.val.onoff [expr "{$kbdrep} == {on} ? {select} : {deselect}"]
151     .kbd.val.cli set $kbdcli
152
153     .mouse.hor.acc.entry delete 0 end
154     .mouse.hor.acc.entry insert 0 $mouseacc
155     .mouse.hor.thr.entry delete 0 end
156     .mouse.hor.thr.entry insert 0 $mousethr
157
158     .screen.val.rb.blank [expr "{$screenbla}=={blank} ? {select} : {deselect}"]
159     .screen.val.rb.pat   [expr "{$screenbla}!={blank} ? {select} : {deselect}"]
160     .screen.val.le.tim.entry delete 0 end
161     .screen.val.le.tim.entry insert 0 $screentim
162     .screen.val.le.cyc.entry delete 0 end
163     .screen.val.le.cyc.entry insert 0 $screencyc
164 }
165
166
167 #
168 # Create all windows, and pack them
169 #
170
171 proc labelentry {path text length} {
172     frame $path
173     label $path.label -text $text
174     entry $path.entry -width $length -relief sunken
175     pack $path.label -side left -expand y
176     pack $path.entry -side right -expand y
177 }
178
179 proc createwindows {} {
180     #
181     # Buttons
182     #
183
184     frame .buttons
185     button .buttons.ok          -command "ok"                   -text "Ok"
186     button .buttons.apply       -command "writesettings"        -text "Apply"
187     button .buttons.cancel      -command "cancel"               -text "Cancel"
188     button .buttons.quit        -command "quit"                 -text "Quit"
189
190     pack .buttons.ok .buttons.apply .buttons.cancel .buttons.quit \
191             -side left -expand yes -pady 5
192
193     #
194     # Bell settings
195     #
196
197     frame .bell -relief raised -borderwidth 2
198     label .bell.label   -text "Bell Settings"
199     scale .bell.vol \
200             -from 0 -to 100 -length 200 -tickinterval 20 \
201             -label "Volume (%)" -orient horizontal
202
203     frame .bell.val
204     labelentry .bell.val.pit "Pitch (Hz)"    6
205     labelentry .bell.val.dur "Duration (ms)" 6
206     pack .bell.val.pit -side left -padx 5
207     pack .bell.val.dur -side right -padx 5
208     pack .bell.label .bell.vol .bell.val -side top -expand yes
209
210     #
211     # Keyboard settings
212     #
213
214     frame .kbd -relief raised -borderwidth 2
215
216     label .kbd.label -text "Keyboard Repeat Settings"
217
218     frame .kbd.val
219     checkbutton .kbd.val.onoff \
220             -text "On" \
221             -onvalue "on" -offvalue "off" -variable kbdrep \
222             -relief flat
223     scale .kbd.val.cli \
224             -from 0 -to 100 -length 200 -tickinterval 20 \
225             -label "Click Volume (%)" -orient horizontal
226     pack .kbd.val.onoff -side left -expand yes -fill both
227     pack .kbd.val.cli -side left -expand yes
228
229     pack .kbd.label -side top -expand yes
230     pack .kbd.val -side top -expand yes -pady 2 -fill x
231
232     #
233     # Mouse settings
234     #
235
236     frame .mouse -relief raised -borderwidth 2
237
238     label .mouse.label -text "Mouse Settings"
239     frame .mouse.hor
240     labelentry .mouse.hor.acc "Acceleration" 3
241     labelentry .mouse.hor.thr "Threshold (pixels)" 3
242
243     pack .mouse.hor.acc -side left
244     pack .mouse.hor.thr -side right
245
246     pack .mouse.label -side top
247     pack .mouse.hor -side top -expand yes
248
249     #
250     # Screen Saver settings
251     #
252
253     frame .screen -relief raised -borderwidth 2
254
255     label .screen.label -text "Screen-saver Settings"
256     frame .screen.val
257
258     frame .screen.val.rb
259     radiobutton .screen.val.rb.blank \
260             -variable screenblank -text "Blank" -relief flat \
261             -value "blank" -variable screenbla
262     radiobutton .screen.val.rb.pat \
263             -variable screenblank -text "Pattern" -relief flat \
264             -value "noblank" -variable screenbla
265     pack .screen.val.rb.blank .screen.val.rb.pat -side top -pady 2 -anchor w
266     frame .screen.val.le
267     labelentry .screen.val.le.tim "Timeout (s)" 5
268     labelentry .screen.val.le.cyc "Cycle (s)" 5
269     pack .screen.val.le.tim .screen.val.le.cyc -side top -pady 2 -anchor e
270
271     pack .screen.val.rb .screen.val.le -side left
272
273     pack .screen.label -side top
274     pack .screen.val -side top -expand y
275
276     #
277     # Main window
278     #
279
280     pack .buttons -side top -fill both
281     pack .bell .kbd .mouse .screen -side top -fill both -ipady 5 -expand yes
282
283     #
284     # Let the user resize our window
285     #
286     wm minsize . 10 10
287 }
288
289 ##############################################################################
290 # Main program
291
292 #
293 # Listen what "xset" tells us...
294 #
295
296 readsettings
297
298 #
299 # Create all windows
300 #
301
302 createwindows
303
304 #
305 # Write xset parameters
306 #
307
308 dispsettings
309
310 #
311 # Now, wait for user actions...
312 #