author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Tue, 03 Oct 2017 11:38:15 +0100 | |
branch | jv |
changeset 8188 | 00df122d8bd4 |
parent 8037 | d01faa4c1b02 |
child 8420 | 76e39223f5ab |
permissions | -rw-r--r-- |
0 | 1 |
" |
2 |
COPYRIGHT (c) 1993 by Claus Gittinger |
|
72 | 3 |
All Rights Reserved |
0 | 4 |
|
5 |
This software is furnished under a license and may be used |
|
6 |
only in accordance with the terms of that license and with the |
|
7 |
inclusion of the above copyright notice. This software may not |
|
8 |
be provided or otherwise made available to, or used by, any |
|
9 |
other person. No title to or ownership of the software is |
|
10 |
hereby transferred. |
|
11 |
" |
|
5280 | 12 |
"{ Package: 'stx:libview' }" |
0 | 13 |
|
7856
7c52e7a9a087
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6663
diff
changeset
|
14 |
"{ NameSpace: Smalltalk }" |
7c52e7a9a087
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6663
diff
changeset
|
15 |
|
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
16 |
Object subclass:#KeyboardMap |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
17 |
instanceVariableNames:'parent current bindings aliases' |
598 | 18 |
classVariableNames:'' |
19 |
poolDictionaries:'' |
|
5280 | 20 |
category:'Interface-Support-UI' |
0 | 21 |
! |
22 |
||
46 | 23 |
!KeyboardMap class methodsFor:'documentation'! |
24 |
||
25 |
copyright |
|
26 |
" |
|
27 |
COPYRIGHT (c) 1993 by Claus Gittinger |
|
72 | 28 |
All Rights Reserved |
0 | 29 |
|
46 | 30 |
This software is furnished under a license and may be used |
31 |
only in accordance with the terms of that license and with the |
|
32 |
inclusion of the above copyright notice. This software may not |
|
33 |
be provided or otherwise made available to, or used by, any |
|
34 |
other person. No title to or ownership of the software is |
|
35 |
hereby transferred. |
|
36 |
" |
|
37 |
! |
|
0 | 38 |
|
46 | 39 |
documentation |
40 |
" |
|
7856
7c52e7a9a087
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6663
diff
changeset
|
41 |
Instances of KeyboardMap are used for mapping keystrokes AND sequences |
7c52e7a9a087
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6663
diff
changeset
|
42 |
of keystrokes to a logical function which is used by UI code. For |
7c52e7a9a087
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6663
diff
changeset
|
43 |
example, it maps #Ctrls to #Accept logical function which is then |
7c52e7a9a087
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6663
diff
changeset
|
44 |
used menu items and so on. |
7c52e7a9a087
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6663
diff
changeset
|
45 |
|
7c52e7a9a087
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6663
diff
changeset
|
46 |
This allows for changing a shortcut without changing the code. |
89 | 47 |
|
7856
7c52e7a9a087
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6663
diff
changeset
|
48 |
Keyboard maps may chained together, if a mapping is not found in |
7c52e7a9a087
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6663
diff
changeset
|
49 |
a particular key map, lookup continues in its parent map (if any). |
7c52e7a9a087
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6663
diff
changeset
|
50 |
Usually the grand-parent is device's standard map, see |
7c52e7a9a087
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6663
diff
changeset
|
51 |
DeviceWorkstation >> keyboardMap (but not necessarily!!) |
7c52e7a9a087
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6663
diff
changeset
|
52 |
|
7c52e7a9a087
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6663
diff
changeset
|
53 |
The setup of device's map is done in the 'smalltalk.rc' or one of the |
6663 | 54 |
'keyboard.rc' files during startup. |
7856
7c52e7a9a087
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6663
diff
changeset
|
55 |
|
89 | 56 |
To add a mapping (for example, to attach the logical function 'DoIt' to |
57 |
the key-combination Cmd-'d'): |
|
58 |
||
598 | 59 |
|m| |
89 | 60 |
|
598 | 61 |
m := Display keyboardMap. |
62 |
m bindValue:#DoIt to:#Cmdd. |
|
89 | 63 |
|
64 |
Key sequences can also be defined (hey emacs fans ;-) as in: |
|
65 |
||
598 | 66 |
|m| |
89 | 67 |
|
598 | 68 |
m := Display keyboardMap. |
69 |
m bindValue:#DoIt to:#Ctrlx followedBy:#Ctrld |
|
89 | 70 |
|
71 |
Key prefixes are defined in the DeviceWorkstation>>translateKey: method. |
|
72 |
Typical prefixes are Cmd (for Alt or Meta), Ctrl etc. |
|
73 |
Some keyboards offer both Alt and Meta keys - on those, the first has a |
|
74 |
prefix of Alt, the second has Cmd as prefix. Keyboards with only an Alt |
|
75 |
key will will create prefix codes of Cmd for that. |
|
76 |
||
8037
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
77 |
A convenient way to create initialize a keyboard map is to use |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
78 |
#loadKeyboadMapDefinition: as in: |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
79 |
|
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
80 |
|m| |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
81 |
|
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
82 |
m := Display keyboardMap. |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
83 |
m loadKeyboadMapDefinition: #( |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
84 |
(Cut Ctrlx Cmdx) |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
85 |
(Copy Ctrlc Cmdc) |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
86 |
(Paste Ctrlv (Cmdv ShiftInsert) |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
87 |
) |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
88 |
|
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
89 |
For details about the format of definition array see commebt in |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
90 |
KeyboardMap >> #loadKeyboardMapDefinition: . |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
91 |
|
89 | 92 |
To remove a mapping, use the same value for both logical and physical key, |
93 |
as in: |
|
94 |
||
598 | 95 |
|m| |
89 | 96 |
|
598 | 97 |
m := Display keyboardMap. |
98 |
m bindValue:#Cmdd to:#Cmdd. |
|
99 |
||
100 |
[see also:] |
|
101 |
WindowEvent WindowSensor WindowGroup |
|
102 |
View DeviceWorkstation |
|
8037
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
103 |
KeyboardMap >> #loadKeyboardMapDefinition: |
612 | 104 |
|
105 |
[author:] |
|
106 |
Claus Gittinger |
|
8037
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
107 |
Jan Vrany |
46 | 108 |
" |
109 |
! ! |
|
0 | 110 |
|
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
111 |
!KeyboardMap class methodsFor:'instance creation'! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
112 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
113 |
new |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
114 |
"return an initialized instance" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
115 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
116 |
^ self basicNew initialize. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
117 |
! ! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
118 |
|
0 | 119 |
!KeyboardMap methodsFor:'accessing'! |
120 |
||
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
121 |
mappedKeys |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
122 |
"Return a set of all raw keys which are mapped to a logical key. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
123 |
This method consult both - (primary) bindings and (secondary) aliases." |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
124 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
125 |
^ bindings keys , aliases keys , (parent isNil ifTrue:[ #() ] ifFalse:[ parent mappedKeys ]) |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
126 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
127 |
" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
128 |
Screen current keyboardMap mappedKeys |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
129 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
130 |
KeyboardMap new |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
131 |
parent: Screen current keyboardMap mappedKeys; |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
132 |
mappedKeys |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
133 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
134 |
" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
135 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
136 |
"Created: / 17-05-2017 / 15:37:30 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
137 |
! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
138 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
139 |
mappingFor:rawKey |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
140 |
"Given a `rawKey` return coresponding logical key. This method |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
141 |
consults both - (primary) bindings and (secondary) aliaes. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
142 |
Example: |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
143 |
#Ctrlx -> #Cut |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
144 |
#F13 -> F13 (no mapping)" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
145 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
146 |
| value | |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
147 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
148 |
current notNil ifTrue:[ |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
149 |
value := current mappingFor: rawKey. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
150 |
value isKeyboardMap ifTrue:[ |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
151 |
current := value. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
152 |
^ nil. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
153 |
]. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
154 |
]. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
155 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
156 |
value := bindings at:rawKey ifAbsent:[ nil ]. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
157 |
value isKeyboardMap ifTrue:[ |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
158 |
current := value. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
159 |
^ nil. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
160 |
]. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
161 |
(value isNil) ifTrue:[ |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
162 |
value := aliases at:rawKey ifAbsent:[ nil ]. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
163 |
value isKeyboardMap ifTrue:[ |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
164 |
current := value. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
165 |
^ nil. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
166 |
]. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
167 |
]. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
168 |
current := nil. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
169 |
value isNil ifTrue:[ |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
170 |
parent notNil ifTrue:[ |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
171 |
value := parent mappingFor:rawKey. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
172 |
(value notNil and:[ value ~= rawKey ]) ifTrue:[ |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
173 |
"/ Parent defines mapping for given rawKey. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
174 |
"/ We need to check whether the action is not |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
175 |
"/ redefined here under different binding / alias, |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
176 |
"/ if so, don't use parent's mapping!! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
177 |
((bindings includes:value) or:[ aliases includes:value ]) ifTrue:[ |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
178 |
"/ Treat this as mo mapping for given key, return it unmapped |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
179 |
^ rawKey |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
180 |
]. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
181 |
]. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
182 |
^ value |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
183 |
]. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
184 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
185 |
"/ No mapping for given key, return it unmapped |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
186 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
187 |
^ rawKey |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
188 |
]. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
189 |
^ value |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
190 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
191 |
" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
192 |
KeyboardMap new |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
193 |
bindValue: #Rename to: #F2; |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
194 |
valueFor: #F10 |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
195 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
196 |
KeyboardMap new |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
197 |
parent: (KeyboardMap new bindValue: #Rename to: #F2; yourself); |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
198 |
valueFor: #F2" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
199 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
200 |
"Created: / 15-05-2017 / 21:35:10 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
201 |
"Modified: / 17-05-2017 / 16:02:21 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
202 |
! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
203 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
204 |
parent |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
205 |
^ parent |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
206 |
! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
207 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
208 |
parent:aKeyboardMap |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
209 |
parent := aKeyboardMap. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
210 |
! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
211 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
212 |
valueFor:rawKey |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
213 |
<resource: #obsolete> |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
214 |
"Given a `rawKey` return coresponding logical key. This method |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
215 |
consults both - (primary) binding and aliaes. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
216 |
Example: |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
217 |
#Ctrlx -> #Cut |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
218 |
#F13 -> F13 (no mapping) |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
219 |
" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
220 |
self obsoleteMethodWarning: 'Use #mappingFor: instead'. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
221 |
^ self mappingFor:rawKey. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
222 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
223 |
" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
224 |
KeyboardMap new |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
225 |
bindValue: #Rename to: #F2; |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
226 |
valueFor: #F2 |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
227 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
228 |
KeyboardMap new |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
229 |
parent: (KeyboardMap new bindValue: #Rename to: #F2; yourself); |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
230 |
valueFor: #F2 |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
231 |
" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
232 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
233 |
"Modified: / 23-04-1996 / 21:55:22 / cg" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
234 |
"Modified: / 17-05-2017 / 16:32:07 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
235 |
! ! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
236 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
237 |
!KeyboardMap methodsFor:'copying'! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
238 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
239 |
postCopy |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
240 |
current := nil. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
241 |
bindings := bindings copy. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
242 |
aliases := aliases copy. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
243 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
244 |
"Created: / 12-05-2017 / 22:46:58 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
245 |
! ! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
246 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
247 |
!KeyboardMap methodsFor:'initialization'! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
248 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
249 |
initialize |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
250 |
"Invoked when a new instance is created." |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
251 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
252 |
bindings := IdentityDictionary new. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
253 |
aliases := IdentityDictionary new. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
254 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
255 |
"/ super initialize. -- commented since inherited method does nothing |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
256 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
257 |
"Modified: / 11-05-2017 / 21:44:45 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
258 |
! ! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
259 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
260 |
!KeyboardMap methodsFor:'mapping'! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
261 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
262 |
bindAlias:logicalKey to:rawKey |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
263 |
"Bind shortcut alias to logical action. For example, to bind |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
264 |
copy action to Alt-C, do |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
265 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
266 |
keyboardMap bindAlias: #Copy to: #Altc |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
267 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
268 |
Use this one only if you're sure you want to bind an alternative |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
269 |
shortcut (alias). For primary shortcuts, please use |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
270 |
#bindValue:to: |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
271 |
" |
8036
e248f3b96260
Keyboard mapping: issue warning if one attempts to bind a shortcut to an action which already bound
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8035
diff
changeset
|
272 |
(aliases includesKey: rawKey) ifTrue:[ |
e248f3b96260
Keyboard mapping: issue warning if one attempts to bind a shortcut to an action which already bound
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8035
diff
changeset
|
273 |
Logger warning:'Trying to bind alias (%1) to a logical action (%2) which is already bound (to %3). Removing old alias.' with: rawKey with: logicalKey with: (aliases at: rawKey). |
e248f3b96260
Keyboard mapping: issue warning if one attempts to bind a shortcut to an action which already bound
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8035
diff
changeset
|
274 |
]. |
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
275 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
276 |
rawKey == logicalKey ifTrue:[ |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
277 |
aliases removeKey:rawKey ifAbsent:nil. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
278 |
] ifFalse:[ |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
279 |
aliases at:rawKey put:logicalKey |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
280 |
] |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
281 |
|
8036
e248f3b96260
Keyboard mapping: issue warning if one attempts to bind a shortcut to an action which already bound
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8035
diff
changeset
|
282 |
"Modified: / 12-05-2017 / 23:35:18 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
283 |
! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
284 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
285 |
bindValue:logicalKey to:rawKey |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
286 |
"Bind shortcut alias to logical action. For example, to bind |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
287 |
copy action to Alt-C, do |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
288 |
|
598 | 289 |
The event mechanism uses this to pass logical keyboard events |
290 |
to the application (such as #Copy, #Cut etc.) |
|
291 |
instead of physical ones (such as #AltC, #AltX)" |
|
292 |
||
8036
e248f3b96260
Keyboard mapping: issue warning if one attempts to bind a shortcut to an action which already bound
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8035
diff
changeset
|
293 |
"/ Issue a warning if logical key is already bound to a shortcut |
e248f3b96260
Keyboard mapping: issue warning if one attempts to bind a shortcut to an action which already bound
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8035
diff
changeset
|
294 |
"/ to track possibly unwanted aliases. If you really want to |
e248f3b96260
Keyboard mapping: issue warning if one attempts to bind a shortcut to an action which already bound
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8035
diff
changeset
|
295 |
"/ bind an alias, use #bindAlias:to: |
e248f3b96260
Keyboard mapping: issue warning if one attempts to bind a shortcut to an action which already bound
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8035
diff
changeset
|
296 |
|
e248f3b96260
Keyboard mapping: issue warning if one attempts to bind a shortcut to an action which already bound
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8035
diff
changeset
|
297 |
| binding | |
e248f3b96260
Keyboard mapping: issue warning if one attempts to bind a shortcut to an action which already bound
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8035
diff
changeset
|
298 |
|
e248f3b96260
Keyboard mapping: issue warning if one attempts to bind a shortcut to an action which already bound
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8035
diff
changeset
|
299 |
binding := bindings keyAtValue: logicalKey. |
e248f3b96260
Keyboard mapping: issue warning if one attempts to bind a shortcut to an action which already bound
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8035
diff
changeset
|
300 |
binding notNil ifTrue:[ |
e248f3b96260
Keyboard mapping: issue warning if one attempts to bind a shortcut to an action which already bound
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8035
diff
changeset
|
301 |
Logger warning:'Trying to bind shortcut (%1) to a logical action (%2) which is already bound (to %3). Removing old shortcut,' with: rawKey with: logicalKey with: binding. |
e248f3b96260
Keyboard mapping: issue warning if one attempts to bind a shortcut to an action which already bound
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8035
diff
changeset
|
302 |
]. |
e248f3b96260
Keyboard mapping: issue warning if one attempts to bind a shortcut to an action which already bound
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8035
diff
changeset
|
303 |
bindings removeKey: binding ifAbsent: nil. |
e248f3b96260
Keyboard mapping: issue warning if one attempts to bind a shortcut to an action which already bound
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8035
diff
changeset
|
304 |
|
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
305 |
rawKey == logicalKey ifTrue:[ |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
306 |
bindings removeKey:rawKey ifAbsent:nil |
89 | 307 |
] ifFalse:[ |
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
308 |
bindings at:rawKey put:logicalKey |
89 | 309 |
] |
598 | 310 |
|
8036
e248f3b96260
Keyboard mapping: issue warning if one attempts to bind a shortcut to an action which already bound
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8035
diff
changeset
|
311 |
"Modified: / 12-11-1996 / 10:30:56 / cg" |
e248f3b96260
Keyboard mapping: issue warning if one attempts to bind a shortcut to an action which already bound
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8035
diff
changeset
|
312 |
"Modified: / 12-05-2017 / 23:39:29 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
0 | 313 |
! |
314 |
||
89 | 315 |
bindValue:logicalKey to:key1 followedBy:key2 |
598 | 316 |
"bind aLogicalKey to a sequence of two rawKeys. |
317 |
The event mechanism uses this to pass logical keyboard events |
|
318 |
to the application (such as #Copy, #Cut etc.) |
|
319 |
instead of physical ones (such as #AltC, #AltX)" |
|
320 |
||
0 | 321 |
|submap| |
322 |
||
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
323 |
submap := bindings at:key1 ifAbsent:[]. |
0 | 324 |
submap isNil ifTrue:[ |
598 | 325 |
submap := KeyboardMap new. |
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
326 |
bindings at:key1 put:submap. |
0 | 327 |
]. |
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
328 |
submap bindValue:logicalKey to: key2 |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
329 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
330 |
"Modified: / 23-04-1996 / 21:55:04 / cg" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
331 |
"Modified: / 11-05-2017 / 21:46:22 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
332 |
! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
333 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
334 |
unbindAlias: rawKey |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
335 |
"Remove (secondary) alias for given `rawKey`. If `rawKey` is not bound |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
336 |
calling #unbindAlias: is noop." |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
337 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
338 |
bindings removeKey: rawKey ifAbsent: nil. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
339 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
340 |
"Created: / 17-05-2017 / 15:57:15 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
341 |
! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
342 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
343 |
unbindValue: rawKey |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
344 |
"Remove (primary) binding for given `rawKey`. If `rawKey` is not bound |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
345 |
calling #unbindValue: is noop." |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
346 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
347 |
bindings removeKey: rawKey ifAbsent: nil. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
348 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
349 |
"Created: / 17-05-2017 / 15:56:59 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
350 |
! ! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
351 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
352 |
!KeyboardMap methodsFor:'queries'! |
598 | 353 |
|
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
354 |
aliasesForLogical: logicalKey |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
355 |
"Return all aliases for given (possibly) logical key. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
356 |
Example: |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
357 |
#Copy -> #(Altc CtrlInsert) - depending on mappings |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
358 |
" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
359 |
| rawKeys | |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
360 |
rawKeys := #(). |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
361 |
aliases keysAndValuesDo:[:raw :logical | |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
362 |
(logicalKey == logical) ifTrue:[ |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
363 |
rawKeys := rawKeys copyWith: raw. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
364 |
]. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
365 |
]. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
366 |
parent notNil ifTrue:[ |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
367 |
rawKeys := rawKeys , (parent aliasesForLogical: logicalKey) |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
368 |
]. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
369 |
^ rawKeys |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
370 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
371 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
372 |
"/ First, search for primary bindings... |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
373 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
374 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
375 |
" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
376 |
Screen current keyboardMap rawKeysForLogical: #Copy |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
377 |
" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
378 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
379 |
"Created: / 15-05-2017 / 21:27:17 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
0 | 380 |
! |
381 |
||
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
382 |
bindingForLogical: logicalKey |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
383 |
"Return binding for given (possibly) logical key. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
384 |
If no binding is defined, returns nil. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
385 |
Example: |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
386 |
#Copy -> #Ctrlc - depending on mappings |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
387 |
" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
388 |
| rawKey | |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
389 |
rawKey := bindings keyAtValue: logicalKey. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
390 |
rawKey notNil ifTrue:[ ^ rawKey ]. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
391 |
parent notNil ifTrue:[ ^ parent bindingForLogical: logicalKey ]. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
392 |
^ nil |
6556 | 393 |
|
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
394 |
" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
395 |
Screen current keyboardMap bindingForLogical: #Copy |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
396 |
Screen current keyboardMap bindingForLogical: #Bogus |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
397 |
" |
6556 | 398 |
|
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
399 |
"Created: / 15-05-2017 / 21:14:18 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
400 |
"Modified (comment): / 17-05-2017 / 16:06:56 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
401 |
! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
402 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
403 |
hasBindingFor:rawKey |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
404 |
<resource: #obsolete> |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
405 |
self obsoleteMethodWarning:'Use #hasMappingFor: instead'. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
406 |
^ self hasMappingFor: rawKey |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
407 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
408 |
"Created: / 17-05-2017 / 15:40:16 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
7856
7c52e7a9a087
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6663
diff
changeset
|
409 |
! |
7c52e7a9a087
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6663
diff
changeset
|
410 |
|
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
411 |
hasMappingFor:rawKey |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
412 |
"Return true if receiver maps given rawKey into a logical key, |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
413 |
false otheriwse. Thic method consults both - (primary) bindings |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
414 |
and (secondary) aliases." |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
415 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
416 |
| logicalKey | |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
417 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
418 |
logicalKey := self mappingFor:rawKey. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
419 |
^ logicalKey notNil and:[ logicalKey ~= rawKey ] |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
420 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
421 |
" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
422 |
KeyboardMap new |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
423 |
bindValue: #Rename to: #F2; |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
424 |
hasMappingFor: #F2 |
7856
7c52e7a9a087
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6663
diff
changeset
|
425 |
|
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
426 |
KeyboardMap new |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
427 |
bindValue: #Rename to: #F2; |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
428 |
hasMappingFor: #F10 |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
429 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
430 |
KeyboardMap new |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
431 |
parent: (KeyboardMap new bindValue: #Rename to: #F2; yourself); |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
432 |
hasMappingFor: #F2 |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
433 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
434 |
KeyboardMap new |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
435 |
parent: (KeyboardMap new bindValue: #Rename to: #F2; yourself); |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
436 |
hasMappingFor: #F10 |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
437 |
" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
438 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
439 |
"Modified: / 15-05-2017 / 21:35:21 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
440 |
"Modified (comment): / 17-05-2017 / 15:40:07 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
6556 | 441 |
! |
442 |
||
7969
2bac4f32553f
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7856
diff
changeset
|
443 |
rawKeysForLogical: logicalKey |
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
444 |
<resource: #obsolete> |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
445 |
"Return all raw keys for given (possibly) logical key. |
7969
2bac4f32553f
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7856
diff
changeset
|
446 |
Example: |
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
447 |
#Copy -> #(Ctrlc CtrlInsert) - depending on mappings |
7969
2bac4f32553f
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7856
diff
changeset
|
448 |
" |
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
449 |
| rawKey rawKeys | |
7969
2bac4f32553f
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7856
diff
changeset
|
450 |
|
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
451 |
self obsoleteMethodWarning:'Use #bindingForLogical: and/or #aliasesForLogical:'. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
452 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
453 |
rawKey := self bindingForLogical: logicalKey. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
454 |
rawKeys := rawKey notNil ifTrue:[ Array with: rawKey ] ifFalse:[ #() ]. |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
455 |
^ rawKeys , (self aliasesForLogical: logicalKey) |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
456 |
|
7969
2bac4f32553f
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7856
diff
changeset
|
457 |
|
2bac4f32553f
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7856
diff
changeset
|
458 |
" |
2bac4f32553f
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7856
diff
changeset
|
459 |
Screen current keyboardMap rawKeysForLogical: #Copy |
2bac4f32553f
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7856
diff
changeset
|
460 |
" |
2bac4f32553f
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7856
diff
changeset
|
461 |
|
2bac4f32553f
Allow individual applications to define their own shortcut mapping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7856
diff
changeset
|
462 |
"Created: / 08-02-2017 / 23:43:26 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
463 |
"Modified: / 15-05-2017 / 21:29:40 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
8037
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
464 |
|
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
465 |
Screen current keyboardMap valueFor: #Alti |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
466 |
"Modified (comment): / 14-05-2017 / 10:44:06 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
467 |
! ! |
0 | 468 |
|
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
469 |
!KeyboardMap methodsFor:'testing'! |
598 | 470 |
|
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
471 |
isKeyboardMap |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
472 |
^ true |
0 | 473 |
! ! |
244 | 474 |
|
8037
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
475 |
!KeyboardMap methodsFor:'utilities'! |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
476 |
|
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
477 |
loadKeyboardMapDefinition: definitions |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
478 |
"Load keyboard mapping from given `definition`. The `definition` is a collection |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
479 |
mapping definitions. Each mapping definition is an array consisting of: |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
480 |
|
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
481 |
#( <logical key> <primary shortcut> <aliases>? <description>? ) |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
482 |
|
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
483 |
where: |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
484 |
<logical key> the symbolic name of the action as used in menu specs |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
485 |
#keyPress:x:y: methods and so on. |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
486 |
Examples: #Copy, #Find, #Undo |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
487 |
|
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
488 |
<primary shortcut> the actual shortcut in Smalltalk/X key event notation. |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
489 |
This is the shortcut that will be shown in menus and/or |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
490 |
tooltips and so. |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
491 |
Examples: #Ctrlv (means Ctrl + V), CmdF (means Alt + Shift + F), F10 |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
492 |
|
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
493 |
<aliases> an alternative shortcut or array of those. Aliases won't be shown in |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
494 |
menu items but one may define some for user's convenience (for exampple, |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
495 |
define aliases used in other environments so users using both can just |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
496 |
keep using them. Optional. |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
497 |
Examples: #Ctrlv, #(#Cmdv #ShiftInsert) |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
498 |
|
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
499 |
<description> A textual description of the action. This may be used to generate some |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
500 |
form of documentation. Optional. |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
501 |
Examples: 'DoIt - evaluate expression', 'Replace selection with today''s date' |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
502 |
|
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
503 |
" |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
504 |
definitions do:[:definition | |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
505 |
| logical shortcut aliases| |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
506 |
|
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
507 |
logical := definition first. |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
508 |
shortcut := definition second. |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
509 |
"/ aliases are optional as well as description, so it may happen that third |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
510 |
"/ element is description rather than alias. Hence the check. |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
511 |
aliases := (definition size > 2) ifTrue:[ definition third ] ifFalse:[ #() ]. |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
512 |
aliases isSymbol ifTrue:[ aliases := Array with: aliases ]. |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
513 |
aliases isArray ifFalse:[ aliases := #() ]. |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
514 |
|
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
515 |
self bindValue: logical to: shortcut. |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
516 |
aliases do:[:alias | self bindAlias: logical to: alias ] |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
517 |
]. |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
518 |
|
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
519 |
" |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
520 |
KeyboardMap new loadKeyboardMapDefinition: #( (Paste Ctrlv (Cmdv CtrlInsert)) ) |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
521 |
KeyboardMap new loadKeyboardMapDefinition: #( (Paste Ctrlv Cmdv) ) |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
522 |
KeyboardMap new loadKeyboardMapDefinition: #( (Paste Ctrlv 'Paste') ) |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
523 |
" |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
524 |
|
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
525 |
"Created: / 12-05-2017 / 22:12:45 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
526 |
"Modified (comment): / 14-05-2017 / 10:24:45 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
527 |
! ! |
d01faa4c1b02
Keyboard mapping: initialize default shortcuts in `DeviceWorkstation`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8036
diff
changeset
|
528 |
|
251 | 529 |
!KeyboardMap class methodsFor:'documentation'! |
530 |
||
531 |
version |
|
6663 | 532 |
^ '$Header: /cvs/stx/stx/libview/KeyboardMap.st,v 1.15 2014-12-18 16:13:06 cg Exp $' |
8035
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
533 |
! |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
534 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
535 |
version_HG |
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
536 |
|
8bbd397fe321
Keyboard mapping: refactored `KeyboardMap` to distinguish between a binding and an alias(es)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
7969
diff
changeset
|
537 |
^ '$Changeset: <not expanded> $' |
251 | 538 |
! ! |
6556 | 539 |