- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
public void type(char character) {
switch (character) {
case 'a': doType(VK_A); break;
case 'b': doType(VK_B); break;
case 'c': doType(VK_C); break;
case 'd': doType(VK_D); break;
case 'e': doType(VK_E); break;
case 'f': doType(VK_F); break;
case 'g': doType(VK_G); break;
case 'h': doType(VK_H); break;
case 'i': doType(VK_I); break;
case 'j': doType(VK_J); break;
case 'k': doType(VK_K); break;
case 'l': doType(VK_L); break;
case 'm': doType(VK_M); break;
case 'n': doType(VK_N); break;
case 'o': doType(VK_O); break;
case 'p': doType(VK_P); break;
case 'q': doType(VK_Q); break;
case 'r': doType(VK_R); break;
case 's': doType(VK_S); break;
case 't': doType(VK_T); break;
case 'u': doType(VK_U); break;
case 'v': doType(VK_V); break;
case 'w': doType(VK_W); break;
case 'x': doType(VK_X); break;
case 'y': doType(VK_Y); break;
case 'z': doType(VK_Z); break;
case 'A': doType(VK_SHIFT, VK_A); break;
case 'B': doType(VK_SHIFT, VK_B); break;
case 'C': doType(VK_SHIFT, VK_C); break;
case 'D': doType(VK_SHIFT, VK_D); break;
case 'E': doType(VK_SHIFT, VK_E); break;
<...>
case '$': doType(VK_DOLLAR); break;
case '%': doType(VK_SHIFT, VK_5); break;
case '^': doType(VK_CIRCUMFLEX); break;
case '&': doType(VK_AMPERSAND); break;
case '*': doType(VK_ASTERISK); break;
case '(': doType(VK_LEFT_PARENTHESIS); break;
case ')': doType(VK_RIGHT_PARENTHESIS); break;
case '_': doType(VK_UNDERSCORE); break;
case '+': doType(VK_PLUS); break;
case '\t': doType(VK_TAB); break;
case '\n': doType(VK_ENTER); break;
case '[': doType(VK_OPEN_BRACKET); break;
case ']': doType(VK_CLOSE_BRACKET); break;
case '\\': doType(VK_BACK_SLASH); break;
case '{': doType(VK_SHIFT, VK_OPEN_BRACKET); break;
case '}': doType(VK_SHIFT, VK_CLOSE_BRACKET); break;
case '|': doType(VK_SHIFT, VK_BACK_SLASH); break;
case ';': doType(VK_SEMICOLON); break;
case ':': doType(VK_COLON); break;
case '\'': doType(VK_QUOTE); break;
case '"': doType(VK_QUOTEDBL); break;
case ',': doType(VK_COMMA); break;
case '<': doType(VK_LESS); break;
case '.': doType(VK_PERIOD); break;
case '>': doType(VK_GREATER); break;
case '/': doType(VK_SLASH); break;
case '?': doType(VK_SHIFT, VK_SLASH); break;
case ' ': doType(VK_SPACE); break;
default:
http://stackoverflow.com/questions/1248510/convert-string-to-keyevents
Конвертируем символы в клавиши.
Боян, да. Но теперь на джаве. Кстати, автор забыл про toLower и toUpper.
tir 02.12.2011 09:10 # +1
guest 02.12.2011 09:39 # 0
tir 02.12.2011 09:49 # 0
absolut 02.12.2011 10:58 # 0
roman-kashitsyn 02.12.2011 11:09 # 0
Потенциальный плюс: можно частично автоматизировать рефлексией добавление в мапу, но тут надо немножко подумать. А вообще тут вроде как гавно в самой java.
tir 02.12.2011 11:14 # +1
AxisPod 02.12.2011 14:32 # +2
guest 02.12.2011 18:55 # 0
Плюсую, но как можно было исправить java, чтобы это говно убрать? Но нужно признать, что оптимизирующий компилятор может превратить этот свитч в одно обращение к массиву. Так что, если компилятор хороший и включены соответствующие оптимизации, то это самый быстрый способ. (Ну разве что можно самому массив смастерить, но это не удобно. Такое лучше генератором кода делать).
guest 02.12.2011 18:57 # −5
Тк, тип VK_* не указан - будем считать что это enum. В крайнем случае константы #define VK_* можно переписать на энум и это будет более правильно.
И так мой код, хотя форматирование не очень:
Кто сможет написать короче меня этот код на любом языке? Это не под силу никому. Я самый крутой.
Хотя у PHP с рефлексией и eval больше шансов, чем у меня.
guest 02.12.2011 21:07 # 0
Это самый короткий вариант, но платформозависмый.
lucidfoxGovno 04.12.2011 02:48 # −2
RaZeR 11.12.2011 18:18 # 0
guest8 09.04.2019 12:17 # −999