15 proc keyboardShortcuts {w} {
18 eval [excludeTextWidget %W]
25 eval [excludeTextWidget %W]
31 eval [excludeTextWidget %W]
37 eval [excludeTextWidget %W]
44 eval [excludeTextWidget %W]
45 if {[::move::ExitVar] != 0} { break }
52 eval [excludeTextWidget %W]
61 bind $w <Control-o> { ::file::Open }
65 bind $w <Control-w> { ::file::Close }
68 bind $w <Control-z> { undoFeature undo }
71 bind $w <Control-y> { undoFeature redo }
74 bind $w <Control-n> { ::game::Clear }
77 bind $w <Control-s> { ::gameReplace }
80 bind $w <Control-S> { ::gameAdd }
83 bind $w <F11> { wm attributes . -fullscreen [expr ![wm attributes . -fullscreen]] }
87 eval [excludeTextWidget %W]
94 eval [excludeTextWidget %W]
102 bind $w <KeyPress-v> {
103 eval [excludeTextWidget %W]
109 set totalBaseSlots [
sc_info limit bases]
110 for {
set i 1} { $i <= $totalBaseSlots} {
incr i} {
111 bind $w <Control-Key-$i> "::file::SwitchToBase $i"
115 bind $w <F1> { helpWindowPertinent %W }
118 bind $w <F9> { ::win::toggleDocked %W }
121 bind $w <F6> ::book::open
122 bind $w <F12> ::CorrespondenceChess::CCWindow
123 bind $w <Control-F12> {::CorrespondenceChess::OpenCorrespondenceDB; ::CorrespondenceChess::ReadInbox}
124 bind $w <Alt-F12> {::CorrespondenceChess::OpenCorrespondenceDB; ::CorrespondenceChess::FetchGames}
125 bind $w <Control-equal> ::tb::Open
126 bind $w <Control-d> ::windows::switcher::Open
127 bind $w <Control-e> "::makeCommentWin toggle"
128 bind $w <Control-i> ::windows::stats::Open
129 bind $w <Control-l> ::windows::gamelist::Open
130 bind $w <Control-m> ::maint::OpenClose
131 bind $w <Control-p> ::pgn::OpenClose
132 bind $w <Control-t> ::tree::make
133 bind $w <Control-E> ::windows::eco::OpenClose
134 bind $w <Control-K> ::ptrack::make
135 bind $w <Control-O> ::optable::makeReportWin
136 bind $w <Control-P> ::plist::toggle
137 bind $w <Control-T> ::tourney::toggle
138 bind $w <Control-X> ::crosstab::Open
142 bind $w <F2> "::makeAnalysisWin 1 0"
143 bind $w <F3> "::makeAnalysisWin 2 0"
144 bind $w <F4> { if {[winfo exists .analysisWin1]} { .analysisWin1.b1.bStartStop invoke } }
145 bind $w <F5> { if {[winfo exists .analysisWin2]} { .analysisWin2.b1.bStartStop invoke } }
146 bind $w <Control-A> makeAnalysisWin
147 bind $w <Control-Shift-2> "makeAnalysisWin 2"
148 bind $w <Control-a> {sc_var create; updateBoard -pgn}
152 bind $w <Control-B> ::search::board
153 bind $w <Control-H> ::search::header
154 bind $w <Control-M> ::search::material
155 bind $w <Control-KeyPress-U> ::search:::usefile
157 bind $w <Control-C> ::copyFEN
158 bind $w <Control-V> ::pasteFEN
159 bind $w <Control-E> ::tools::email
160 bind $w <Control-I> importPgnGame
161 bind $w <Control-D> {sc_move ply [sc_eco game ply]; updateBoard}
162 bind $w <Control-G> tools::graphs::filter::Open
163 bind $w <Control-J> tools::graphs::absfilter::Open
164 bind $w <Control-u> ::game::GotoMoveNumber
165 bind $w <Control-Y> findNovelty
166 bind $w <Control-N> nameEditor
168 bind $w <Control-slash> ::file::finder::Open
169 bind $w <Control-Shift-Up> {::game::LoadNextPrev first}
170 bind $w <Control-Shift-Down> {::game::LoadNextPrev last}
171 bind $w <Control-Up> {::game::LoadNextPrev previous}
172 bind $w <Control-Down> {::game::LoadNextPrev next}
173 bind $w <Control-question> ::game::LoadRandom
176 proc excludeTextWidget {w} {
177 if { [regexp ".*(Entry|Text|Combobox)" [
winfo class $w]] } {
180 if {$w ne ".pgnWin.text"} {