11package com .mtbs3d .minecrift .utils ;
22
3+ import net .minecraft .client .Minecraft ;
4+
5+ import org .lwjgl .input .Keyboard ;
6+ import org .lwjgl .opengl .Display ;
7+
38import static java .awt .event .KeyEvent .*;
49
510import java .awt .AWTException ;
611import java .awt .Robot ;
712
13+
814public class KeyboardSimulator {
915 public static Robot robot ;
1016
1117 static {
1218 try {
1319 robot = new Robot ();
1420 } catch (AWTException e ) {
21+ e .printStackTrace ();
1522 }
1623 }
1724
@@ -143,8 +150,114 @@ public static int[] getCodes(char character) {
143150 case ' ' : return codes (VK_SPACE );
144151 case '\b' : return codes (VK_BACK_SPACE );
145152 case '\r' : return codes (VK_ENTER );
146- default :
147- throw new IllegalArgumentException ("Cannot type character " + character );
153+ default : return codes ();
154+ //default: throw new IllegalArgumentException("Cannot type character " + character);
155+ }
156+ }
157+
158+ public static int [] getLWJGLCodes (char character ) {
159+ switch (character ) {
160+ case 'a' : return codes (Keyboard .KEY_A );
161+ case 'b' : return codes (Keyboard .KEY_B );
162+ case 'c' : return codes (Keyboard .KEY_C );
163+ case 'd' : return codes (Keyboard .KEY_D );
164+ case 'e' : return codes (Keyboard .KEY_E );
165+ case 'f' : return codes (Keyboard .KEY_F );
166+ case 'g' : return codes (Keyboard .KEY_G );
167+ case 'h' : return codes (Keyboard .KEY_H );
168+ case 'i' : return codes (Keyboard .KEY_I );
169+ case 'j' : return codes (Keyboard .KEY_J );
170+ case 'k' : return codes (Keyboard .KEY_K );
171+ case 'l' : return codes (Keyboard .KEY_L );
172+ case 'm' : return codes (Keyboard .KEY_M );
173+ case 'n' : return codes (Keyboard .KEY_N );
174+ case 'o' : return codes (Keyboard .KEY_O );
175+ case 'p' : return codes (Keyboard .KEY_P );
176+ case 'q' : return codes (Keyboard .KEY_Q );
177+ case 'r' : return codes (Keyboard .KEY_R );
178+ case 's' : return codes (Keyboard .KEY_S );
179+ case 't' : return codes (Keyboard .KEY_T );
180+ case 'u' : return codes (Keyboard .KEY_U );
181+ case 'v' : return codes (Keyboard .KEY_V );
182+ case 'w' : return codes (Keyboard .KEY_W );
183+ case 'x' : return codes (Keyboard .KEY_X );
184+ case 'y' : return codes (Keyboard .KEY_Y );
185+ case 'z' : return codes (Keyboard .KEY_Z );
186+ case 'A' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_A );
187+ case 'B' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_B );
188+ case 'C' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_C );
189+ case 'D' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_D );
190+ case 'E' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_E );
191+ case 'F' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_F );
192+ case 'G' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_G );
193+ case 'H' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_H );
194+ case 'I' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_I );
195+ case 'J' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_J );
196+ case 'K' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_K );
197+ case 'L' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_L );
198+ case 'M' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_M );
199+ case 'N' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_N );
200+ case 'O' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_O );
201+ case 'P' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_P );
202+ case 'Q' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_Q );
203+ case 'R' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_R );
204+ case 'S' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_S );
205+ case 'T' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_T );
206+ case 'U' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_U );
207+ case 'V' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_V );
208+ case 'W' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_W );
209+ case 'X' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_X );
210+ case 'Y' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_Y );
211+ case 'Z' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_Z );
212+ case '`' : return codes (Keyboard .KEY_GRAVE );
213+ case '0' : return codes (Keyboard .KEY_0 );
214+ case '1' : return codes (Keyboard .KEY_1 );
215+ case '2' : return codes (Keyboard .KEY_2 );
216+ case '3' : return codes (Keyboard .KEY_3 );
217+ case '4' : return codes (Keyboard .KEY_4 );
218+ case '5' : return codes (Keyboard .KEY_5 );
219+ case '6' : return codes (Keyboard .KEY_6 );
220+ case '7' : return codes (Keyboard .KEY_7 );
221+ case '8' : return codes (Keyboard .KEY_8 );
222+ case '9' : return codes (Keyboard .KEY_9 );
223+ case '-' : return codes (Keyboard .KEY_MINUS );
224+ case '=' : return codes (Keyboard .KEY_EQUALS );
225+ case '~' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_B );
226+ case '!' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_1 );
227+ case '@' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_2 );
228+ case '#' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_3 );
229+ case '$' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_4 );
230+ case '%' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_5 );
231+ case '^' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_6 );
232+ case '&' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_7 );
233+ case '*' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_8 );
234+ case '(' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_9 );
235+ case ')' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_0 );
236+ case '_' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_MINUS );
237+ case '+' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_EQUALS );
238+ case '\t' : return codes (Keyboard .KEY_TAB );
239+ case '\n' : return codes (Keyboard .KEY_RETURN );
240+ case '[' : return codes (Keyboard .KEY_LBRACKET );
241+ case ']' : return codes (Keyboard .KEY_RBRACKET );
242+ case '\\' : return codes (Keyboard .KEY_BACKSLASH );
243+ case '{' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_LBRACKET );
244+ case '}' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_RBRACKET );
245+ case '|' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_BACKSLASH );
246+ case ';' : return codes (Keyboard .KEY_SEMICOLON );
247+ case ':' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_SEMICOLON );
248+ case '\'' : return codes (Keyboard .KEY_APOSTROPHE );
249+ case '"' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_APOSTROPHE );
250+ case ',' : return codes (Keyboard .KEY_COMMA );
251+ case '<' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_COMMA );
252+ case '.' : return codes (Keyboard .KEY_PERIOD );
253+ case '>' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_PERIOD );
254+ case '/' : return codes (Keyboard .KEY_SLASH );
255+ case '?' : return codes (Keyboard .KEY_LSHIFT , Keyboard .KEY_SLASH );
256+ case ' ' : return codes (Keyboard .KEY_SPACE );
257+ case '\b' : return codes (Keyboard .KEY_BACK );
258+ case '\r' : return codes (Keyboard .KEY_RETURN );
259+ default : return codes ();
260+ //default: throw new IllegalArgumentException("Cannot type character " + character);
148261 }
149262 }
150263
@@ -154,13 +267,12 @@ private static int[] codes(int... keyCodes) {
154267
155268 private static void doType (int [] keyCodes , int offset , int length ) {
156269 try {
157-
158- if (length == 0 ) {
159- return ;
160- }
161- robot .keyPress (keyCodes [offset ]);
162- doType (keyCodes , offset + 1 , length - 1 );
163- robot .keyRelease (keyCodes [offset ]);
270+ if (length == 0 ) {
271+ return ;
272+ }
273+ robot .keyPress (keyCodes [offset ]);
274+ doType (keyCodes , offset + 1 , length - 1 );
275+ robot .keyRelease (keyCodes [offset ]);
164276 } catch (Exception e ) {
165277 System .out .println ("Cannot type keycode: " + keyCodes [offset ]);
166278 }
0 commit comments