Skip to content

Commit 83a1ab5

Browse files
foxnneemidoots
authored andcommitted
Override View to catch input events, update generator for additional events, add windowShouldClose event to window delegate
1 parent 690fafc commit 83a1ab5

12 files changed

+929
-32
lines changed

MACHView.m

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#import <Foundation/Foundation.h>
2+
#import <AppKit/AppKit.h>
3+
4+
@interface MACHView : NSView
5+
@end
6+
7+
@implementation MACHView {
8+
void (^_keyDown_block)(NSEvent *);
9+
void (^_keyUp_block)(NSEvent *);
10+
}
11+
12+
- (BOOL)canBecomeKeyView {
13+
return YES;
14+
}
15+
16+
- (BOOL)acceptsFirstResponder {
17+
return YES;
18+
}
19+
20+
- (void)setBlock_keyDown:(void (^)(NSEvent *))keyDown_block __attribute__((objc_direct)) {
21+
_keyDown_block = keyDown_block;
22+
}
23+
24+
- (void)setBlock_keyUp:(void (^)(NSEvent *))keyUp_block __attribute__((objc_direct)) {
25+
_keyUp_block = keyUp_block;
26+
}
27+
28+
- (void)keyDown:(NSEvent *)event {
29+
if (_keyDown_block) _keyDown_block(event);
30+
}
31+
32+
- (void)keyUp:(NSEvent *)event {
33+
if (_keyUp_block) _keyUp_block(event);
34+
}
35+
36+
37+
38+
@end

MACHView_arm64_apple_macos12.s

+305
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,305 @@
1+
.section __TEXT,__text,regular,pure_instructions
2+
.build_version macos, 12, 0
3+
.p2align 2
4+
"-[MACHView canBecomeKeyView]":
5+
.cfi_startproc
6+
mov w0, #1
7+
ret
8+
.cfi_endproc
9+
10+
.p2align 2
11+
"-[MACHView acceptsFirstResponder]":
12+
.cfi_startproc
13+
mov w0, #1
14+
ret
15+
.cfi_endproc
16+
17+
.private_extern "-[MACHView setBlock_keyDown:]"
18+
.globl "-[MACHView setBlock_keyDown:]"
19+
.p2align 2
20+
"-[MACHView setBlock_keyDown:]":
21+
.cfi_startproc
22+
cbz x0, LBB2_2
23+
stp x20, x19, [sp, #-32]!
24+
stp x29, x30, [sp, #16]
25+
.cfi_def_cfa_offset 32
26+
.cfi_offset w30, -8
27+
.cfi_offset w29, -16
28+
.cfi_offset w19, -24
29+
.cfi_offset w20, -32
30+
mov x19, x0
31+
mov x0, x1
32+
bl _objc_retainBlock
33+
Lloh0:
34+
adrp x8, _OBJC_IVAR_$_MACHView._keyDown_block@PAGE
35+
ldp x29, x30, [sp, #16]
36+
Lloh1:
37+
ldrsw x10, [x8, _OBJC_IVAR_$_MACHView._keyDown_block@PAGEOFF]
38+
mov x9, x0
39+
ldr x8, [x19, x10]
40+
str x9, [x19, x10]
41+
mov x0, x8
42+
ldp x20, x19, [sp], #32
43+
b _objc_release
44+
LBB2_2:
45+
ret
46+
.loh AdrpLdr Lloh0, Lloh1
47+
.cfi_endproc
48+
49+
.private_extern "-[MACHView setBlock_keyUp:]"
50+
.globl "-[MACHView setBlock_keyUp:]"
51+
.p2align 2
52+
"-[MACHView setBlock_keyUp:]":
53+
.cfi_startproc
54+
cbz x0, LBB3_2
55+
stp x20, x19, [sp, #-32]!
56+
stp x29, x30, [sp, #16]
57+
.cfi_def_cfa_offset 32
58+
.cfi_offset w30, -8
59+
.cfi_offset w29, -16
60+
.cfi_offset w19, -24
61+
.cfi_offset w20, -32
62+
mov x19, x0
63+
mov x0, x1
64+
bl _objc_retainBlock
65+
Lloh2:
66+
adrp x8, _OBJC_IVAR_$_MACHView._keyUp_block@PAGE
67+
ldp x29, x30, [sp, #16]
68+
Lloh3:
69+
ldrsw x10, [x8, _OBJC_IVAR_$_MACHView._keyUp_block@PAGEOFF]
70+
mov x9, x0
71+
ldr x8, [x19, x10]
72+
str x9, [x19, x10]
73+
mov x0, x8
74+
ldp x20, x19, [sp], #32
75+
b _objc_release
76+
LBB3_2:
77+
ret
78+
.loh AdrpLdr Lloh2, Lloh3
79+
.cfi_endproc
80+
81+
.p2align 2
82+
"-[MACHView keyDown:]":
83+
.cfi_startproc
84+
Lloh4:
85+
adrp x8, _OBJC_IVAR_$_MACHView._keyDown_block@PAGE
86+
Lloh5:
87+
ldrsw x8, [x8, _OBJC_IVAR_$_MACHView._keyDown_block@PAGEOFF]
88+
ldr x0, [x0, x8]
89+
cbz x0, LBB4_2
90+
ldr x3, [x0, #16]
91+
mov x1, x2
92+
br x3
93+
LBB4_2:
94+
ret
95+
.loh AdrpLdr Lloh4, Lloh5
96+
.cfi_endproc
97+
98+
.p2align 2
99+
"-[MACHView keyUp:]":
100+
.cfi_startproc
101+
Lloh6:
102+
adrp x8, _OBJC_IVAR_$_MACHView._keyUp_block@PAGE
103+
Lloh7:
104+
ldrsw x8, [x8, _OBJC_IVAR_$_MACHView._keyUp_block@PAGEOFF]
105+
ldr x0, [x0, x8]
106+
cbz x0, LBB5_2
107+
ldr x3, [x0, #16]
108+
mov x1, x2
109+
br x3
110+
LBB5_2:
111+
ret
112+
.loh AdrpLdr Lloh6, Lloh7
113+
.cfi_endproc
114+
115+
.p2align 2
116+
"-[MACHView .cxx_destruct]":
117+
.cfi_startproc
118+
stp x20, x19, [sp, #-32]!
119+
stp x29, x30, [sp, #16]
120+
.cfi_def_cfa_offset 32
121+
.cfi_offset w30, -8
122+
.cfi_offset w29, -16
123+
.cfi_offset w19, -24
124+
.cfi_offset w20, -32
125+
Lloh8:
126+
adrp x8, _OBJC_IVAR_$_MACHView._keyUp_block@PAGE
127+
mov x19, x0
128+
mov x1, xzr
129+
Lloh9:
130+
ldrsw x8, [x8, _OBJC_IVAR_$_MACHView._keyUp_block@PAGEOFF]
131+
add x0, x0, x8
132+
bl _objc_storeStrong
133+
Lloh10:
134+
adrp x8, _OBJC_IVAR_$_MACHView._keyDown_block@PAGE
135+
ldp x29, x30, [sp, #16]
136+
Lloh11:
137+
ldrsw x8, [x8, _OBJC_IVAR_$_MACHView._keyDown_block@PAGEOFF]
138+
mov x1, xzr
139+
add x0, x19, x8
140+
ldp x20, x19, [sp], #32
141+
b _objc_storeStrong
142+
.loh AdrpLdr Lloh10, Lloh11
143+
.loh AdrpLdr Lloh8, Lloh9
144+
.cfi_endproc
145+
146+
.private_extern _OBJC_IVAR_$_MACHView._keyDown_block
147+
.section __DATA,__objc_ivar
148+
.globl _OBJC_IVAR_$_MACHView._keyDown_block
149+
.p2align 2, 0x0
150+
_OBJC_IVAR_$_MACHView._keyDown_block:
151+
.long 8
152+
153+
.private_extern _OBJC_IVAR_$_MACHView._keyUp_block
154+
.globl _OBJC_IVAR_$_MACHView._keyUp_block
155+
.p2align 2, 0x0
156+
_OBJC_IVAR_$_MACHView._keyUp_block:
157+
.long 16
158+
159+
.section __TEXT,__objc_classname,cstring_literals
160+
l_OBJC_CLASS_NAME_:
161+
.asciz "MACHView"
162+
163+
.section __DATA,__objc_const
164+
.p2align 3, 0x0
165+
__OBJC_METACLASS_RO_$_MACHView:
166+
.long 389
167+
.long 40
168+
.long 40
169+
.space 4
170+
.quad 0
171+
.quad l_OBJC_CLASS_NAME_
172+
.quad 0
173+
.quad 0
174+
.quad 0
175+
.quad 0
176+
.quad 0
177+
178+
.section __DATA,__objc_data
179+
.globl _OBJC_METACLASS_$_MACHView
180+
.p2align 3, 0x0
181+
_OBJC_METACLASS_$_MACHView:
182+
.quad _OBJC_METACLASS_$_NSObject
183+
.quad _OBJC_METACLASS_$_NSView
184+
.quad __objc_empty_cache
185+
.quad 0
186+
.quad __OBJC_METACLASS_RO_$_MACHView
187+
188+
.section __TEXT,__objc_classname,cstring_literals
189+
l_OBJC_CLASS_NAME_.1:
190+
.asciz "\002"
191+
192+
.section __TEXT,__objc_methname,cstring_literals
193+
l_OBJC_METH_VAR_NAME_:
194+
.asciz "canBecomeKeyView"
195+
196+
.section __TEXT,__objc_methtype,cstring_literals
197+
l_OBJC_METH_VAR_TYPE_:
198+
.asciz "B16@0:8"
199+
200+
.section __TEXT,__objc_methname,cstring_literals
201+
l_OBJC_METH_VAR_NAME_.2:
202+
.asciz "acceptsFirstResponder"
203+
204+
l_OBJC_METH_VAR_NAME_.3:
205+
.asciz "keyDown:"
206+
207+
.section __TEXT,__objc_methtype,cstring_literals
208+
l_OBJC_METH_VAR_TYPE_.4:
209+
.asciz "v24@0:8@16"
210+
211+
.section __TEXT,__objc_methname,cstring_literals
212+
l_OBJC_METH_VAR_NAME_.5:
213+
.asciz "keyUp:"
214+
215+
l_OBJC_METH_VAR_NAME_.6:
216+
.asciz ".cxx_destruct"
217+
218+
.section __TEXT,__objc_methtype,cstring_literals
219+
l_OBJC_METH_VAR_TYPE_.7:
220+
.asciz "v16@0:8"
221+
222+
.section __DATA,__objc_const
223+
.p2align 3, 0x0
224+
__OBJC_$_INSTANCE_METHODS_MACHView:
225+
.long 24
226+
.long 5
227+
.quad l_OBJC_METH_VAR_NAME_
228+
.quad l_OBJC_METH_VAR_TYPE_
229+
.quad "-[MACHView canBecomeKeyView]"
230+
.quad l_OBJC_METH_VAR_NAME_.2
231+
.quad l_OBJC_METH_VAR_TYPE_
232+
.quad "-[MACHView acceptsFirstResponder]"
233+
.quad l_OBJC_METH_VAR_NAME_.3
234+
.quad l_OBJC_METH_VAR_TYPE_.4
235+
.quad "-[MACHView keyDown:]"
236+
.quad l_OBJC_METH_VAR_NAME_.5
237+
.quad l_OBJC_METH_VAR_TYPE_.4
238+
.quad "-[MACHView keyUp:]"
239+
.quad l_OBJC_METH_VAR_NAME_.6
240+
.quad l_OBJC_METH_VAR_TYPE_.7
241+
.quad "-[MACHView .cxx_destruct]"
242+
243+
.section __TEXT,__objc_methname,cstring_literals
244+
l_OBJC_METH_VAR_NAME_.8:
245+
.asciz "_keyDown_block"
246+
247+
.section __TEXT,__objc_methtype,cstring_literals
248+
l_OBJC_METH_VAR_TYPE_.9:
249+
.asciz "@?"
250+
251+
.section __TEXT,__objc_methname,cstring_literals
252+
l_OBJC_METH_VAR_NAME_.10:
253+
.asciz "_keyUp_block"
254+
255+
.section __DATA,__objc_const
256+
.p2align 3, 0x0
257+
__OBJC_$_INSTANCE_VARIABLES_MACHView:
258+
.long 32
259+
.long 2
260+
.quad _OBJC_IVAR_$_MACHView._keyDown_block
261+
.quad l_OBJC_METH_VAR_NAME_.8
262+
.quad l_OBJC_METH_VAR_TYPE_.9
263+
.long 3
264+
.long 8
265+
.quad _OBJC_IVAR_$_MACHView._keyUp_block
266+
.quad l_OBJC_METH_VAR_NAME_.10
267+
.quad l_OBJC_METH_VAR_TYPE_.9
268+
.long 3
269+
.long 8
270+
271+
.p2align 3, 0x0
272+
__OBJC_CLASS_RO_$_MACHView:
273+
.long 388
274+
.long 8
275+
.long 24
276+
.space 4
277+
.quad l_OBJC_CLASS_NAME_.1
278+
.quad l_OBJC_CLASS_NAME_
279+
.quad __OBJC_$_INSTANCE_METHODS_MACHView
280+
.quad 0
281+
.quad __OBJC_$_INSTANCE_VARIABLES_MACHView
282+
.quad 0
283+
.quad 0
284+
285+
.section __DATA,__objc_data
286+
.globl _OBJC_CLASS_$_MACHView
287+
.p2align 3, 0x0
288+
_OBJC_CLASS_$_MACHView:
289+
.quad _OBJC_METACLASS_$_MACHView
290+
.quad _OBJC_CLASS_$_NSView
291+
.quad __objc_empty_cache
292+
.quad 0
293+
.quad __OBJC_CLASS_RO_$_MACHView
294+
295+
.section __DATA,__objc_classlist,regular,no_dead_strip
296+
.p2align 3, 0x0
297+
l_OBJC_LABEL_CLASS_$:
298+
.quad _OBJC_CLASS_$_MACHView
299+
300+
.section __DATA,__objc_imageinfo,regular,no_dead_strip
301+
L_OBJC_IMAGE_INFO:
302+
.long 0
303+
.long 64
304+
305+
.subsections_via_symbols

0 commit comments

Comments
 (0)