AXElements 1.0.0.alpha3 → 1.0.0.alpha4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,26 @@
1
+ /*
2
+ * key_coder.c
3
+ * KeyCoder
4
+ *
5
+ * Created by Mark Rada on 11-07-27.
6
+ * Copyright 2011-2012 Marketcircle Incorporated. All rights reserved.
7
+ */
8
+
9
+
10
+ #import <Cocoa/Cocoa.h>
11
+ #import <Carbon/Carbon.h>
12
+ #import <ApplicationServices/ApplicationServices.h>
13
+
14
+ #include "ruby.h"
15
+
16
+
17
+ void
18
+ ax_callback()
19
+ {
20
+ }
21
+
22
+
23
+ void
24
+ Init_core()
25
+ {
26
+ }
@@ -26,7 +26,8 @@
26
26
  * @return [Hash{String=>Number}]
27
27
  */
28
28
 
29
- static VALUE
29
+ static
30
+ VALUE
30
31
  keycoder_dynamic_mapping()
31
32
  {
32
33
 
@@ -91,7 +92,8 @@ keycoder_dynamic_mapping()
91
92
  * @return [true]
92
93
  */
93
94
 
94
- static VALUE
95
+ static
96
+ VALUE
95
97
  keycoder_post_event(VALUE self, VALUE event)
96
98
  {
97
99
  VALUE code = rb_ary_entry(event, 0);
@@ -581,6 +581,19 @@ module Accessibility::DSL
581
581
  sleep wait
582
582
  end
583
583
 
584
+ ##
585
+ # Perform a triple click action
586
+ #
587
+ # If an argument is provided then the mouse will move to that point
588
+ # first; the argument must respond to `#to_point`.
589
+ #
590
+ # @param obj [#to_point]
591
+ def triple_click obj = nil, wait = 0.2
592
+ move_mouse_to obj, wait: 0 if obj
593
+ Mouse.triple_click
594
+ sleep wait
595
+ end
596
+
584
597
 
585
598
  # @!group Debug Helpers
586
599
 
@@ -4,7 +4,7 @@
4
4
  # The main AXElements namespace.
5
5
  module Accessibility
6
6
  # @return [String]
7
- VERSION = '1.0.0.alpha3'
7
+ VERSION = '1.0.0.alpha4'
8
8
 
9
9
  # @return [String]
10
10
  CODE_NAME = 'ルナトーン'
data/lib/mouse.rb CHANGED
@@ -15,7 +15,7 @@ module Mouse
15
15
  extend self
16
16
 
17
17
  ##
18
- # Number of animation steps per second.
18
+ # Number of animation steps per second
19
19
  #
20
20
  # @return [Number]
21
21
  FPS = 120
@@ -24,13 +24,13 @@ module Mouse
24
24
  # @note We keep the number as a rational to try and avoid rounding
25
25
  # error introduced by the floats, especially MacRuby floats.
26
26
  #
27
- # Smallest unit of time allowed for an animation step.
27
+ # Smallest unit of time allowed for an animation step
28
28
  #
29
29
  # @return [Number]
30
30
  QUANTUM = Rational(1, FPS)
31
31
 
32
32
  ##
33
- # Available constants for the type of units to use when scrolling.
33
+ # Available constants for the type of units to use when scrolling
34
34
  #
35
35
  # @return [Hash{Symbol=>Fixnum}]
36
36
  UNIT = {
@@ -40,7 +40,9 @@ module Mouse
40
40
 
41
41
  ##
42
42
  # The coordinates of the mouse using the flipped coordinate system
43
- # (origin in top left).
43
+ #
44
+ # Flipped coordinates have the origin in top left corner of the
45
+ # primary screen.
44
46
  #
45
47
  # @return [CGPoint]
46
48
  def current_position
@@ -48,7 +50,7 @@ module Mouse
48
50
  end
49
51
 
50
52
  ##
51
- # Move the mouse from the current position to the given point.
53
+ # Move the mouse from the current position to the given point
52
54
  #
53
55
  # @param point [CGPoint]
54
56
  # @param duration [Float] animation duration, in seconds
@@ -57,7 +59,7 @@ module Mouse
57
59
  end
58
60
 
59
61
  ##
60
- # Click and drag from the current position to the given point.
62
+ # Click and drag from the current position to the given point
61
63
  #
62
64
  # @param point [CGPoint]
63
65
  # @param duration [Float] animation duration, in seconds
@@ -72,15 +74,17 @@ module Mouse
72
74
  ##
73
75
  # @todo Need to double check to see if I introduce any inaccuracies.
74
76
  #
75
- # Scroll at the current position the given amount of units.
77
+ # Scroll at the current position the given amount of units
76
78
  #
77
79
  # Scrolling too much or too little in a period of time will cause the
78
80
  # animation to look weird, possibly causing the app to mess things up.
79
81
  #
80
- # @param amount [Fixnum] number of units to scroll; positive to scroll
81
- # up or negative to scroll down
82
- # @param duration [Float] animation duration, in seconds
83
- # @param units [Symbol] `:line` scrolls by line, `:pixel` scrolls by pixel
82
+ # A positive `amonut` to scroll will scroll up and a negative `amount`
83
+ # will scroll down.
84
+ #
85
+ # @param amount [Fixnum] number of units to scroll
86
+ # @param duration [Float] in seconds
87
+ # @param units [Symbol] must be either `:line` or `:pixel`
84
88
  def scroll amount, duration = 0.2, units = :line
85
89
  units = UNIT[units] || raise(ArgumentError, "#{units} is not a valid unit")
86
90
  steps = (FPS * duration).round
@@ -95,8 +99,11 @@ module Mouse
95
99
  end
96
100
 
97
101
  ##
98
- # Perform a down click. You should follow this up with a call to
99
- # {#click_up} to finish the click.
102
+ # @api semipublic
103
+ #
104
+ # Perform a down click
105
+ #
106
+ # You should follow this up with a call to {#click_up} to finish the click.
100
107
  #
101
108
  # @param point [CGPoint]
102
109
  # @param duration [Number]
@@ -107,8 +114,12 @@ module Mouse
107
114
  end
108
115
 
109
116
  ##
110
- # Perform an up click. This should only be called after a call to
111
- # {#click_down} to finish the click event.
117
+ # @api semipublic
118
+ #
119
+ # Perform an up click
120
+ #
121
+ # This should only be called after a call to {#click_down} to finish
122
+ # the click event.
112
123
  #
113
124
  # @param point [CGPoint]
114
125
  def click_up point = current_position
@@ -117,10 +128,12 @@ module Mouse
117
128
  end
118
129
 
119
130
  ##
120
- # Standard secondary click. Default position is the current position.
131
+ # Standard secondary click, sometimes called a "right click"
132
+ #
133
+ # Default position is the current position.
121
134
  #
122
135
  # @param point [CGPoint]
123
- # @param duration [Number]
136
+ # @param duration [Number] in seconds
124
137
  def secondary_click point = current_position, duration = 12
125
138
  event = new_event KCGEventRightMouseDown, point, KCGMouseButtonRight
126
139
  post event
@@ -131,16 +144,21 @@ module Mouse
131
144
  alias_method :right_click, :secondary_click
132
145
 
133
146
  ##
134
- # A standard double click. Defaults to clicking at the current position.
147
+ # @api semipublic
148
+ #
149
+ # Generate a multi click event at the given position
150
+ #
151
+ # `num_clicks` is the number of clicks for the event, where a value of `2'
152
+ # corresponds to a double click, `3` corresponds to a triple click, etc.
153
+ #
154
+ # However, I've only tested with a double and triple click, for which you
155
+ # can just call {#double_click} and {#triple_click} instead.
135
156
  #
157
+ # @param num_clicks [Fixnum]
136
158
  # @param point [CGPoint]
137
- def double_click point = current_position
159
+ def multi_click num_clicks, point = current_position
138
160
  event = new_event KCGEventLeftMouseDown, point, KCGMouseButtonLeft
139
- post event
140
- set_type event, KCGEventLeftMouseUp
141
- post event
142
-
143
- CGEventSetIntegerValueField(event, KCGMouseEventClickState, 2)
161
+ CGEventSetIntegerValueField(event, KCGMouseEventClickState, num_clicks)
144
162
  set_type event, KCGEventLeftMouseDown
145
163
  post event
146
164
  set_type event, KCGEventLeftMouseUp
@@ -148,8 +166,30 @@ module Mouse
148
166
  end
149
167
 
150
168
  ##
151
- # Click with an arbitrary mouse button, using numbers to represent
152
- # the mouse button. At the time of writing, the documented values are:
169
+ # A standard double click
170
+ #
171
+ # Defaults to clicking at the current position.
172
+ #
173
+ # @param point [CGPoint]
174
+ def double_click point = current_position
175
+ multi_click 2, point
176
+ end
177
+
178
+ ##
179
+ # A standard triple click
180
+ #
181
+ # Defaults to clicking at the current position.
182
+ #
183
+ # @param point [CGPoint]
184
+ def triple_click point = current_position
185
+ multi_click 3, point
186
+ end
187
+
188
+ ##
189
+ # Click with an arbitrary mouse button
190
+ #
191
+ # Numbers are used to map the mouse buttons. At the time of writing,
192
+ # the documented values are:
153
193
  #
154
194
  # - KCGMouseButtonLeft = 0
155
195
  # - KCGMouseButtonRight = 1
metadata CHANGED
@@ -2,14 +2,14 @@
2
2
  name: AXElements
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease: 6
5
- version: 1.0.0.alpha3
5
+ version: 1.0.0.alpha4
6
6
  platform: ruby
7
7
  authors:
8
8
  - Mark Rada
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-15 00:00:00 Z
12
+ date: 2012-11-27 00:00:00 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
@@ -19,14 +19,14 @@ dependencies:
19
19
  requirements:
20
20
  - - ~>
21
21
  - !ruby/object:Gem::Version
22
- version: "4.2"
22
+ version: 4.3.1
23
23
  type: :development
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: "4.2"
29
+ version: 4.3.1
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: yard
32
32
  prerelease: false
@@ -110,6 +110,7 @@ files:
110
110
  - lib/mouse.rb
111
111
  - lib/rspec/expectations/ax_elements.rb
112
112
  - ext/accessibility/key_coder/extconf.rb
113
+ - ext/accessibility/core/core.c
113
114
  - ext/accessibility/key_coder/key_coder.c
114
115
  - rakelib/doc.rake
115
116
  - rakelib/ext.rake