xdojava 1.0.0.pre

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.
Files changed (4) hide show
  1. data/lib/xdojava.class +0 -0
  2. data/lib/xdojava.java +273 -0
  3. data/lib/xdojava.rb +23 -0
  4. metadata +71 -0
data/lib/xdojava.class ADDED
Binary file
data/lib/xdojava.java ADDED
@@ -0,0 +1,273 @@
1
+ //******************************************************************************
2
+ // Provide cross-platform keystroke emulation for automation testing.
3
+ //
4
+ // Requires Oracle Java SE 7u7
5
+ // http://www.oracle.com/technetwork/java/javase/downloads/index.html
6
+ //
7
+ // Windows: Set default java as 1.7 in Control Panel | Java
8
+ // Mac OSx: Set default java as 1.7 in Java Preferences
9
+ // Linux: Set default java as 1.7 using $ update-alternatives --config java
10
+ //
11
+ // Compiling from ./java/src/ :
12
+ // javac xdojava.java -d ../bin
13
+ //
14
+ // Execution:
15
+ // java -classpath <application root>/java/bin xdojava <options>
16
+ //
17
+ //******************************************************************************
18
+
19
+ import java.awt.Robot;
20
+ import java.awt.event.KeyEvent;
21
+ import java.awt.AWTException;
22
+ import java.io.*;
23
+ import java.util.*;
24
+
25
+ public class xdojava
26
+ {
27
+ // CONSTANTS
28
+ // Escape seq. , Keystroke , Comment
29
+ public String ALT = "{ALT}"; // [Alt_L]
30
+ public String ALT_GR = "{ALT_GR}"; // [ISO_Level3_Shift]
31
+ public String BACKSPACE = "{BACKSPACE}"; // [BackSpace]
32
+ public String BS = "{BS}"; // [BackSpace]
33
+ public String CTRL = "{CTRL}"; // [Control_L]
34
+ public String DEL = "{DEL}"; // [Delete]
35
+ public String ENTER = "{ENTER}"; // [Enter]
36
+ public String END = "{END}"; // [End]
37
+ public String ESC = "{ESC}"; // [Escape]
38
+ public String HOME = "{HOME}"; // [Home]
39
+ public String INS = "{INS}"; // [Insert]
40
+ public String MENU = "{MENU}"; // [Menu]
41
+ public String NUM_ADD = "{NUM_ADD}"; // [KP_Add]
42
+ public String NUM_COMMA = "{NUM_COMMA}"; // [KP_Separator]
43
+ public String NUM_DEL = "{NUM_DEL}"; // [KP_Delete]
44
+ public String NUM_DIV = "{NUM_DIV}"; // [KP_Divide]
45
+ public String NUM_ENTER = "{NUM_ENTER}"; // [KP_Enter]
46
+ public String NUM_INS = "{NUM_INS}"; // [KP_Insert]
47
+ public String NUM_MUL = "{NUM_MUL}"; // [KP_Multiply]
48
+ public String NUM_SUB = "{NUM_SUB}"; // [KP_Subtract]
49
+ public String NUM0 = "{NUM0}"; // [KP_0]..[KP_9]
50
+ public String NUM1 = "{NUM1}"; // [KP_0]..[KP_9]
51
+ public String NUM2 = "{NUM2}"; // [KP_0]..[KP_9]
52
+ public String NUM3 = "{NUM3}"; // [KP_0]..[KP_9]
53
+ public String NUM4 = "{NUM4}"; // [KP_0]..[KP_9]
54
+ public String NUM5 = "{NUM5}"; // [KP_0]..[KP_9]
55
+ public String NUM6 = "{NUM6}"; // [KP_0]..[KP_9]
56
+ public String NUM7 = "{NUM7}"; // [KP_0]..[KP_9]
57
+ public String NUM8 = "{NUM8}"; // [KP_0]..[KP_9]
58
+ public String NUM9 = "{NUM9}"; // [KP_0]..[KP_9]
59
+ public String PAUSE = "{PAUSE}"; // [Pause]
60
+ public String PGDN = "{PGDN}"; // [Next]
61
+ public String PGUP = "{PGUP}"; // [Prior]
62
+ public String PRINT = "{PRINT}"; // [Print]
63
+ public String SHIFT_TAB = "{SHIFT_TAB}"; // [Tab]
64
+ public String SUPER = "{SUPER}"; // [Super_L]
65
+ public String TAB = "{TAB}"; // [Tab]
66
+ public String WIN = "{WIN}"; // [Super_L]
67
+
68
+ private Robot robot;
69
+
70
+ public xdojava() throws AWTException
71
+ {
72
+ robot = new Robot();
73
+ robot.setAutoDelay(40);
74
+ robot.setAutoWaitForIdle(true);
75
+ }
76
+
77
+ private void ActivateWindow(String windowTitle)
78
+ {
79
+ windowTitle = windowTitle.replaceAll("\"", "").trim();
80
+ System.out.println(windowTitle);
81
+ }
82
+
83
+ private void SendKey(String keystring)
84
+ {
85
+ keystring = keystring.trim();
86
+
87
+ if( keystring.equals("CONSTANTS") )
88
+ {
89
+ Constants();
90
+ }
91
+ else if( keystring.equals(ALT) )
92
+ {
93
+ Alt();
94
+ }
95
+ else if( keystring.equals(ENTER) )
96
+ {
97
+ Enter();
98
+ }
99
+ else if( keystring.equals(TAB) )
100
+ {
101
+ Tab();
102
+ }
103
+ else if( keystring.equals(SHIFT_TAB) )
104
+ {
105
+ ShiftTab();
106
+ }
107
+ else
108
+ {
109
+ //Type each character individually
110
+ byte[] byteArray = keystring.getBytes();
111
+ for (byte byt : byteArray)
112
+ {
113
+ int tempByt = (int)byt;
114
+ if( tempByt == 32 )
115
+ {
116
+ robot.keyPress(tempByt);
117
+ robot.keyRelease(tempByt);
118
+ }
119
+ else if( tempByt >= 48 && tempByt <= 57 )
120
+ {
121
+ robot.keyPress(tempByt);
122
+ robot.keyRelease(tempByt);
123
+ }
124
+ else if( tempByt >= 65 && tempByt <= 90 )
125
+ {
126
+ robot.keyPress(KeyEvent.VK_SHIFT);
127
+ robot.keyPress(tempByt);
128
+ robot.keyRelease(tempByt);
129
+ robot.keyRelease(KeyEvent.VK_SHIFT);
130
+ }
131
+ else if( tempByt >= 97 && tempByt <= 122 )
132
+ {
133
+ tempByt = tempByt - 32;
134
+ robot.keyPress(tempByt);
135
+ robot.keyRelease(tempByt);
136
+ }
137
+
138
+ }
139
+ }
140
+ }
141
+
142
+ private void Alt()
143
+ {
144
+ robot.keyPress(KeyEvent.VK_TAB);
145
+ robot.keyRelease(KeyEvent.VK_TAB);
146
+ }
147
+
148
+ private void Enter()
149
+ {
150
+ robot.keyPress(KeyEvent.VK_ENTER);
151
+ robot.keyRelease(KeyEvent.VK_ENTER);
152
+ }
153
+
154
+ private void Tab()
155
+ {
156
+ robot.keyPress(KeyEvent.VK_TAB);
157
+ robot.keyRelease(KeyEvent.VK_TAB);
158
+ }
159
+
160
+ private void ShiftTab()
161
+ {
162
+ robot.keyPress(KeyEvent.VK_SHIFT);
163
+ robot.keyPress(KeyEvent.VK_TAB);
164
+ robot.keyRelease(KeyEvent.VK_TAB);
165
+ robot.keyRelease(KeyEvent.VK_SHIFT);
166
+ }
167
+
168
+ public void Constants()
169
+ {
170
+ System.out.println("Implemented");
171
+ System.out.println(" ALT = {ALT}"); // [Alt_L]
172
+ System.out.println(" ENTER = {ENTER}"); // [Enter]
173
+ System.out.println(" SHIFT_TAB = {SHIFT_TAB}"); // [Tab]
174
+ System.out.println(" TAB = {TAB}"); // [Tab]
175
+ System.out.println();
176
+
177
+ System.out.println("Not Implemented");
178
+ System.out.println(" ALT_GR = {ALT_GR}"); // [ISO_Level3_Shift]
179
+ System.out.println(" BACKSPACE = {BACKSPACE}"); // [BackSpace]
180
+ System.out.println(" BS = {BS}"); // [BackSpace]
181
+ System.out.println(" CTRL = {CTRL}"); // [Control_L]
182
+ System.out.println(" DEL = {DEL}"); // [Delete]
183
+ System.out.println(" END = {END}"); // [End]
184
+ System.out.println(" ESC = {ESC}"); // [Escape]
185
+ System.out.println(" HOME = {HOME}"); // [Home]
186
+ System.out.println(" INS = {INS}"); // [Insert]
187
+ System.out.println(" MENU = {MENU}"); // [Menu]
188
+ System.out.println(" NUM_ADD = {NUM_ADD}"); // [KP_Add]
189
+ System.out.println(" NUM_COMMA = {NUM_COMMA}"); // [KP_Separator]
190
+ System.out.println(" NUM_DEL = {NUM_DEL}"); // [KP_Delete]
191
+ System.out.println(" NUM_DIV = {NUM_DIV}"); // [KP_Divide]
192
+ System.out.println(" NUM_ENTER = {NUM_ENTER}"); // [KP_Enter]
193
+ System.out.println(" NUM_INS = {NUM_INS}"); // [KP_Insert]
194
+ System.out.println(" NUM_MUL = {NUM_MUL}"); // [KP_Multiply]
195
+ System.out.println(" NUM_SUB = {NUM_SUB}"); // [KP_Subtract]
196
+ System.out.println(" NUM0 = {NUM0}"); // [KP_0]..[KP_9]
197
+ System.out.println(" NUM1 = {NUM1}"); // [KP_0]..[KP_9]
198
+ System.out.println(" NUM2 = {NUM2}"); // [KP_0]..[KP_9]
199
+ System.out.println(" NUM3 = {NUM3}"); // [KP_0]..[KP_9]
200
+ System.out.println(" NUM4 = {NUM4}"); // [KP_0]..[KP_9]
201
+ System.out.println(" NUM5 = {NUM5}"); // [KP_0]..[KP_9]
202
+ System.out.println(" NUM6 = {NUM6}"); // [KP_0]..[KP_9]
203
+ System.out.println(" NUM7 = {NUM7}"); // [KP_0]..[KP_9]
204
+ System.out.println(" NUM8 = {NUM8}"); // [KP_0]..[KP_9]
205
+ System.out.println(" NUM9 = {NUM9}"); // [KP_0]..[KP_9]
206
+ System.out.println(" PAUSE = {PAUSE}"); // [Pause]
207
+ System.out.println(" PGDN = {PGDN}"); // [Next]
208
+ System.out.println(" PGUP = {PGUP}"); // [Prior]
209
+ System.out.println(" PRINT = {PRINT}"); // [Print]
210
+ System.out.println(" SUPER = {SUPER}"); // [Super_L]
211
+ System.out.println(" WIN = {WIN}"); // [Super_L]
212
+ }
213
+
214
+ public static void main(String[] args) throws AWTException
215
+ {
216
+ if( args.length == 0 )
217
+ {
218
+ Help();
219
+ System.exit(0);
220
+ }
221
+
222
+ if( args.length > 0 )
223
+ {
224
+ if( args[0].startsWith("-h"))
225
+ {
226
+ Help();
227
+ System.exit(0);
228
+ }
229
+ }
230
+
231
+ xdojava XdoJava = new xdojava();
232
+ String argString = new String();
233
+
234
+ if( args[0].startsWith("-w"))
235
+ {
236
+ if( args.length > 1 )
237
+ {
238
+ for( int i = 1; i < args.length; i++)
239
+ {
240
+ argString = argString + " " + args[i];
241
+ }
242
+ XdoJava.ActivateWindow(argString);
243
+ }
244
+ else
245
+ {
246
+ System.exit(0);
247
+ }
248
+ }
249
+ else
250
+ {
251
+ for( int i = 0; i < args.length; i++)
252
+ {
253
+ argString = argString + " " + args[i];
254
+ }
255
+ XdoJava.SendKey(argString);
256
+ }
257
+
258
+ }
259
+
260
+ public static void Help()
261
+ {
262
+ System.out.println("java xdojava CONSTANTS to list special character constants");
263
+ System.out.println("java xdojava <string> to send <string> to active window");
264
+ System.out.println(" currently only alpha-numerics");
265
+ System.out.println("java xdojava <CONSTANT> to send special character <CONSTANT>");
266
+ System.out.println(" to active window");
267
+ //System.out.println("java xdojava -w <window name> to make <window name> the active window");
268
+ System.out.println("java xdojava -h for this help");
269
+ }
270
+
271
+ }
272
+
273
+
data/lib/xdojava.rb ADDED
@@ -0,0 +1,23 @@
1
+ module SageoneNaUtils
2
+ class XdoJava
3
+ # Types a character sequence, but without any special chars.
4
+ def type_keys(type_this)
5
+ #command_line = 'java -classpath ' + get_classpath + ' xdojava ' + type_this
6
+ command_line = 'java xdojava ' + type_this
7
+ system(command_line)
8
+ sleep(0.5)
9
+ end
10
+
11
+ def tab
12
+ #command_line = 'java -classpath ' + get_classpath + ' xdojava {TAB}'
13
+ command_line = 'java xdojava {TAB}'
14
+ system(command_line)
15
+ end
16
+
17
+ def tab_back
18
+ #command_line = 'java -classpath ' + get_classpath + ' xdojava {SHIFT_TAB}'
19
+ command_line = 'java xdojava {SHIFT_TAB}'
20
+ system(command_line)
21
+ end
22
+ end
23
+ end
metadata ADDED
@@ -0,0 +1,71 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: xdojava
3
+ version: !ruby/object:Gem::Version
4
+ hash: 961915988
5
+ prerelease: 6
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 0
10
+ - pre
11
+ version: 1.0.0.pre
12
+ platform: ruby
13
+ authors:
14
+ - rgunter
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2012-09-17 00:00:00 Z
20
+ dependencies: []
21
+
22
+ description:
23
+ email:
24
+ executables: []
25
+
26
+ extensions: []
27
+
28
+ extra_rdoc_files: []
29
+
30
+ files:
31
+ - lib/xdojava.class
32
+ - lib/xdojava.java
33
+ - lib/xdojava.rb
34
+ homepage:
35
+ licenses: []
36
+
37
+ post_install_message:
38
+ rdoc_options: []
39
+
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ hash: 3
48
+ segments:
49
+ - 0
50
+ version: "0"
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">"
55
+ - !ruby/object:Gem::Version
56
+ hash: 25
57
+ segments:
58
+ - 1
59
+ - 3
60
+ - 1
61
+ version: 1.3.1
62
+ requirements: []
63
+
64
+ rubyforge_project:
65
+ rubygems_version: 1.8.24
66
+ signing_key:
67
+ specification_version: 3
68
+ summary: basic cross-platform keystroke emulation
69
+ test_files: []
70
+
71
+ has_rdoc: