Android Tablet - cursor keys ...
Monkey Targets Forums/Android/Android Tablet - cursor keys ...
| ||
Hi! Does anyone know how to get the keycodes for the Android cursor keys? I'm working with Beaker's awesome bitmap text modules but the cursor keys aren't working right now and I was going to look into why this might be. The cursors work on the PC but not on the Android at the moment. Thanks Mike |
| ||
Hi again! I should possibly add that I am trying this on the 'Android Galaxy Note 10.1' with a plugged in keyboard which has cursor keys. This one: ![]() I would have thought Monkey would recognise the cursors (it does on the PC). I've used the cursors in other apps I have, so I know it's not a hardware issue. Is there something I'm doing wrong here? Thanks Mike |
| ||
I have a Nexus 10 / USB Keyboard / and USB adapter. If you post some code I will try and see if I have the same problem. |
| ||
Thanks Loofdawg :) I've been looking into a Java solution, but my Java skillz are extremely rusty/limited and I'm really struggling with it. It seems that using 'KeyEvent' is the key possibly, but creating a workable class to work with that is beyond my knowledge right now. Here's my example code. When I hit a key, you get a value and the words 'backspace' for when the backspace key is hit (a simple check to see if my key entry code was working) It should also print up 'Cursor Left' and 'Cursor Right' to if the left and right cursors are hit. But, on my tablet I get nothing. Any help would be muchly appriciated! Thanks Mike Import mojo Class MyApp Extends App Field text$="Type something:" Field ascii:Int Field cursorL:Int Field cursorR:Int Field backspace:Int Method OnCreate() EnableKeyboard SetUpdateRate 30 End Method OnUpdate() Repeat cursorL = 0 cursorR = 0 backspace = 9 Local char=GetChar() Local asc:Int asc = char If Not char Exit If char>=32 text+=String.FromChar( char ) ascii = char Print ascii Endif Select asc Case KEY_LEFT cursorL = 1 text+="<Cursor Right>" Exit Case KEY_RIGHT cursorR = 1 text+="<Cursor Left>" Exit Case 8 ' Backspace backspace = 1 text+="<backspace>" Exit End Forever End Method OnRender() Cls If cursorL = 1 DrawText "LEFT CURSOR",0,100 Endif If cursorR = 1 DrawText "RIGHT CURSOR",0,140 Endif If backspace = 1 DrawText "BACKSPACE",0,140 Endif DrawText text,0,0 DrawText ascii,0,40 End End Function Main() New MyApp End |
| ||
This piece of Java code looks like it would give you keyboard feedback with the cursors. But I have no idea how to get this working in Monkey :/ Any pointers/tutorials would be ace! thanks Mike public void onKey(KeyEvent keyEvent) { if (keyEvent.type == KeyEvent.TypeDown) { if (keyEvent.key == KeyCodes.Left) { if (getSliderPosition() > 0) { // move the slider left and mark the event as handled. moveSlider(-1); // Mark the event as handled. keyEvent.stop = True; } } if (keyEvent.key == KeyCodes.Right) { if (getSliderPosition() < MAX_SLIDER_POSITION) { // move the slider right and mark the event as handled. moveSlider(1); keyEvent.stop = true; } } } } Taken from here: http://developer.particlecode.com/index.jsp?topic=/com.particlecode.infocenter/help/html/bn1041593.html |
| ||
KeyEvent is enabled in monkey mojo, so you shouldn't have to add anything. Does the command GetChar() return anything? My other thought is that monkey may be grabbing the cursor keys in place of a gamepad, so you may be able to read JoyDown(joy_num) and it may show up. |
| ||
Hi Adam! At present the GetChar doesn't even register the cursor keys have been pushed. I'm wondering if the keycodes on my Tablet are different for some reason. I'll take a look at the JoyDown option, that sounds promising :) I'm determined to get to the bottom of it as it's something I'll need in my editor I'm writing :) Thanks Mike |
| ||
Well, I've done some more research and I've realised that when I push the '@' key it acts like the cursor left. For some reason its keycode is 39 on my keyboard. The plot thickens! Is anyone else finding this?(You can do the test by compiling my code above) If so there's possibly a bug report, if not, it must be something to do with my tablet setup. Thanks Mike |
| ||
Well, the digging goes on. It seems that 'hard keyboards' can have different keycodes, which is nice and sensible (note the sarcasm in my voice) I found this post that shed some light on the problem: http://www.mobileread.com/forums/showthread.php?t=159538 I'll try out the small app tonight that gives you feedback on the keycodes used and get to the bottom of what's going on. It looks also as if all the information relating to the correct keycodes can be found in this file on your Android device, 'qwerty.kl'. You can edit it, but I'd be VERY careful if you want to, do a back up first as they warn you it can mess up you device, even to the point of it not turning on, you have been warned. I'll keep you posted(even if no one replies as this could be a very helpful post for anyone with the same issue I'm having) Thanks Mike |
| ||
Below is a list of my Android keycodes (taken from the generic.kl file). The cursor keys keycods (called DPad) are these: key 103 DPAD_UP key 105 DPAD_LEFT key 106 DPAD_RIGHT key 108 DPAD_DOWN Even forcing a check for these key codes (if keydown(103)= true etc.) nothing happens. I think there may actually be a bug in the latest version of Monkeycoder. The small keycode checker app, as noted above, records the key hits, it's only my Monkeycoder App that isn't registering it right now. Can someone please check my code above if they have an external keyboard plugged into an Android device (preferably a tablet) with cursor keys and let me know if they work, then we'll know for sure (maybe your goodself Mark :)) Thanks Mike key 1 ESCAPE key 2 1 key 3 2 key 4 3 key 5 4 key 6 5 key 7 6 key 8 7 key 9 8 key 10 9 key 11 0 key 12 MINUS key 13 EQUALS key 14 DEL key 15 TAB key 16 Q key 17 W key 18 E key 19 R key 20 T key 21 Y key 22 U key 23 I key 24 O key 25 P key 26 LEFT_BRACKET key 27 RIGHT_BRACKET key 28 ENTER key 29 CTRL_LEFT key 30 A key 31 S key 32 D key 33 F key 34 G key 35 H key 36 J key 37 K key 38 L key 39 SEMICOLON key 40 APOSTROPHE key 41 GRAVE key 42 SHIFT_LEFT key 43 BACKSLASH key 44 Z key 45 X key 46 C key 47 V key 48 B key 49 N key 50 M key 51 COMMA key 52 PERIOD key 53 SLASH key 54 SHIFT_RIGHT key 55 NUMPAD_MULTIPLY key 56 ALT_LEFT key 57 SPACE key 58 CAPS_LOCK key 59 F1 key 60 F2 key 61 F3 key 62 F4 key 63 F5 key 64 F6 key 65 F7 key 66 F8 key 67 F9 key 68 F10 key 69 NUM_LOCK key 70 SCROLL_LOCK key 71 NUMPAD_7 key 72 NUMPAD_8 key 73 NUMPAD_9 key 74 NUMPAD_SUBTRACT key 75 NUMPAD_4 key 76 NUMPAD_5 key 77 NUMPAD_6 key 78 NUMPAD_ADD key 79 NUMPAD_1 key 80 NUMPAD_2 key 81 NUMPAD_3 key 82 NUMPAD_0 key 83 NUMPAD_DOT # key 84 (undefined) key 85 ZENKAKU_HANKAKU key 86 BACKSLASH key 87 F11 key 88 F12 key 89 RO # key 90 "KEY_KATAKANA" # key 91 "KEY_HIRAGANA" key 92 HENKAN key 93 KATAKANA_HIRAGANA key 94 MUHENKAN key 95 NUMPAD_COMMA key 96 NUMPAD_ENTER key 97 CTRL_RIGHT key 98 NUMPAD_DIVIDE key 99 SYSRQ key 100 ALT_RIGHT # key 101 "KEY_LINEFEED" key 102 MOVE_HOME key 103 DPAD_UP key 104 PAGE_UP key 105 DPAD_LEFT key 106 DPAD_RIGHT key 107 MOVE_END key 108 DPAD_DOWN key 109 PAGE_DOWN key 110 INSERT key 111 FORWARD_DEL # key 112 "KEY_MACRO" key 113 VOLUME_MUTE key 114 VOLUME_DOWN key 115 VOLUME_UP key 116 POWER WAKE key 117 NUMPAD_EQUALS # key 118 "KEY_KPPLUSMINUS" key 119 BREAK # key 120 (undefined) key 121 NUMPAD_COMMA key 122 LANG key 123 EISU key 124 YEN key 125 META_LEFT key 126 META_RIGHT key 127 MENU WAKE_DROPPED key 128 MEDIA_STOP # key 129 "KEY_AGAIN" # key 130 "KEY_PROPS" # key 131 "KEY_UNDO" # key 132 "KEY_FRONT" # key 133 "KEY_COPY" # key 134 "KEY_OPEN" # key 135 "KEY_PASTE" # key 136 "KEY_FIND" # key 137 "KEY_CUT" # key 138 "KEY_HELP" key 139 MENU WAKE_DROPPED key 140 CALCULATOR # key 141 "KEY_SETUP" key 142 POWER WAKE key 143 POWER WAKE # key 144 "KEY_FILE" # key 145 "KEY_SENDFILE" # key 146 "KEY_DELETEFILE" # key 147 "KEY_XFER" # key 148 "KEY_PROG1" # key 149 "KEY_PROG2" key 150 EXPLORER # key 151 "KEY_MSDOS" key 152 POWER WAKE # key 153 "KEY_DIRECTION" # key 154 "KEY_CYCLEWINDOWS" key 155 ENVELOPE key 156 BOOKMARK # key 157 "KEY_COMPUTER" key 158 BACK WAKE_DROPPED key 159 FORWARD key 160 MEDIA_CLOSE key 161 MEDIA_EJECT key 162 MEDIA_EJECT key 163 MEDIA_NEXT key 164 MEDIA_PLAY_PAUSE key 165 MEDIA_PREVIOUS key 166 MEDIA_STOP key 167 MEDIA_RECORD key 168 MEDIA_REWIND key 169 CALL # key 170 "KEY_ISO" key 171 MUSIC key 172 HOME # key 173 "KEY_REFRESH" # key 174 "KEY_EXIT" # key 175 "KEY_MOVE" # key 176 "KEY_EDIT" key 177 PAGE_UP key 178 PAGE_DOWN key 179 NUMPAD_LEFT_PAREN key 180 NUMPAD_RIGHT_PAREN # key 181 "KEY_NEW" # key 182 "KEY_REDO" # key 183 F13 # key 184 F14 # key 185 F15 # key 186 F16 # key 187 F17 # key 188 F18 # key 189 F19 # key 190 F20 # key 191 F21 # key 192 F22 # key 193 F23 # key 194 F24 # key 195 (undefined) # key 196 (undefined) # key 197 (undefined) # key 198 (undefined) # key 199 (undefined) key 200 MEDIA_PLAY key 201 MEDIA_PAUSE # key 202 "KEY_PROG3" # key 203 "KEY_PROG4" # key 204 (undefined) # key 205 "KEY_SUSPEND" # key 206 "KEY_CLOSE" key 207 MEDIA_PLAY key 208 MEDIA_FAST_FORWARD # key 209 "KEY_BASSBOOST" # key 210 "KEY_PRINT" # key 211 "KEY_HP" key 212 CAMERA key 213 MUSIC # key 214 "KEY_QUESTION" key 215 ENVELOPE # key 216 "KEY_CHAT" key 217 SEARCH # key 218 "KEY_CONNECT" # key 219 "KEY_FINANCE" # key 220 "KEY_SPORT" # key 221 "KEY_SHOP" # key 222 "KEY_ALTERASE" # key 223 "KEY_CANCEL" key 224 BRIGHTNESS_DOWN key 225 BRIGHTNESS_UP key 226 HEADSETHOOK key 256 BUTTON_1 key 257 BUTTON_2 key 258 BUTTON_3 key 259 BUTTON_4 key 260 BUTTON_5 key 261 BUTTON_6 key 262 BUTTON_7 key 263 BUTTON_8 key 264 BUTTON_9 key 265 BUTTON_10 key 266 BUTTON_11 key 267 BUTTON_12 key 268 BUTTON_13 key 269 BUTTON_14 key 270 BUTTON_15 key 271 BUTTON_16 key 288 BUTTON_1 key 289 BUTTON_2 key 290 BUTTON_3 key 291 BUTTON_4 key 292 BUTTON_5 key 293 BUTTON_6 key 294 BUTTON_7 key 295 BUTTON_8 key 296 BUTTON_9 key 297 BUTTON_10 key 298 BUTTON_11 key 299 BUTTON_12 key 300 BUTTON_13 key 301 BUTTON_14 key 302 BUTTON_15 key 303 BUTTON_16 key 304 BUTTON_A key 305 BUTTON_B key 306 BUTTON_C key 307 BUTTON_X key 308 BUTTON_Y key 309 BUTTON_Z key 310 BUTTON_L1 key 311 BUTTON_R1 key 312 BUTTON_L2 key 313 BUTTON_R2 key 314 BUTTON_SELECT key 315 BUTTON_START key 316 BUTTON_MODE key 317 BUTTON_THUMBL key 318 BUTTON_THUMBR # key 352 "KEY_OK" # key 353 DPAD_CENTER # key 354 "KEY_GOTO" # key 355 "KEY_CLEAR" # key 356 "KEY_POWER2" # key 357 "KEY_OPTION" # key 358 "KEY_INFO" # key 359 "KEY_TIME" # key 360 "KEY_VENDOR" # key 361 "KEY_ARCHIVE" key 362 GUIDE # key 363 "KEY_CHANNEL" # key 364 "KEY_FAVORITES" # key 365 "KEY_EPG" key 366 DVR # key 367 "KEY_MHP" # key 368 "KEY_LANGUAGE" # key 369 "KEY_TITLE" # key 370 "KEY_SUBTITLE" # key 371 "KEY_ANGLE" # key 372 "KEY_ZOOM" # key 373 "KEY_MODE" # key 374 "KEY_KEYBOARD" # key 375 "KEY_SCREEN" # key 376 "KEY_PC" key 377 TV # key 378 "KEY_TV2" # key 379 "KEY_VCR" # key 380 "KEY_VCR2" # key 381 "KEY_SAT" # key 382 "KEY_SAT2" # key 383 "KEY_CD" # key 384 "KEY_TAPE" # key 385 "KEY_RADIO" # key 386 "KEY_TUNER" # key 387 "KEY_PLAYER" # key 388 "KEY_TEXT" # key 389 "KEY_DVD" # key 390 "KEY_AUX" # key 391 "KEY_MP3" # key 392 "KEY_AUDIO" # key 393 "KEY_VIDEO" # key 394 "KEY_DIRECTORY" # key 395 "KEY_LIST" # key 396 "KEY_MEMO" key 397 CALENDAR # key 398 "KEY_RED" # key 399 "KEY_GREEN" # key 400 "KEY_YELLOW" # key 401 "KEY_BLUE" key 402 CHANNEL_UP key 403 CHANNEL_DOWN # key 404 "KEY_FIRST" # key 405 "KEY_LAST" # key 406 "KEY_AB" # key 407 "KEY_NEXT" # key 408 "KEY_RESTART" # key 409 "KEY_SLOW" # key 410 "KEY_SHUFFLE" # key 411 "KEY_BREAK" # key 412 "KEY_PREVIOUS" # key 413 "KEY_DIGITS" # key 414 "KEY_TEEN" # key 415 "KEY_TWEN" key 429 CONTACTS # key 448 "KEY_DEL_EOL" # key 449 "KEY_DEL_EOS" # key 450 "KEY_INS_LINE" # key 451 "KEY_DEL_LINE" key 464 FUNCTION key 465 ESCAPE FUNCTION key 466 F1 FUNCTION key 467 F2 FUNCTION key 468 F3 FUNCTION key 469 F4 FUNCTION key 470 F5 FUNCTION key 471 F6 FUNCTION key 472 F7 FUNCTION key 473 F8 FUNCTION key 474 F9 FUNCTION key 475 F10 FUNCTION key 476 F11 FUNCTION key 477 F12 FUNCTION key 478 1 FUNCTION key 479 2 FUNCTION key 480 D FUNCTION key 481 E FUNCTION key 482 F FUNCTION key 483 S FUNCTION key 484 B FUNCTION # key 497 KEY_BRL_DOT1 # key 498 KEY_BRL_DOT2 # key 499 KEY_BRL_DOT3 # key 500 KEY_BRL_DOT4 # key 501 KEY_BRL_DOT5 # key 502 KEY_BRL_DOT6 # key 503 KEY_BRL_DOT7 # key 504 KEY_BRL_DOT8 # Joystick and game controller axes. # Axes that are not mapped will be assigned generic axis numbers by the input subsystem. axis 0x00 X axis 0x01 Y axis 0x02 Z axis 0x03 RX axis 0x04 RY axis 0x05 RZ axis 0x06 THROTTLE axis 0x07 RUDDER axis 0x08 WHEEL axis 0x09 GAS axis 0x0a BRAKE axis 0x10 HAT_X axis 0x11 HAT_Y |
| ||
Weird. The cursor keys work in non-monkey apps and home screen but apparently not in the monkey apps. Also some of the constants from MOJO don't import or maybe I don't know what the heck I am doing. Sorry I can't help but I am curious what the solution is. Okay.. these post should help. http://www.monkeycoder.co.nz/Community/posts.php?topic=1462#13375 http://www.monkeycoder.co.nz/Community/posts.php?topic=496#5130 The first link references the second. I remember commenting on it back then. I don't have time to mess with it but I bet you can get it working by modifying the code posted there. The following code works in HTML5 but obviously not in Android. Import mojo Class MyApp Extends App Field text$="" Method OnCreate() SetUpdateRate 60 End Method OnUpdate() If KeyHit(37) Print "Left" text = "Left" End If If KeyHit(38) Print "Up" text = "Up" End If If KeyHit(39) Print "Right" text = "Right" End If If KeyHit(40) Print "Down" text = "Down" End If End Method OnRender() Cls DrawText "Last Cursor Key Hit",0,0 DrawText text,16,16 End End Function Main() New MyApp End |
| ||
Thanks for the info above :) I'll take a look this evening :) all the best! Mike |
| ||
One of my friends has also tried the code above and he is getting the same results. The cursor keys are not responding at the moment. I think this is a Monkeycoder issue. I'll post it on the bugs forum. Thanks :) Mike |
| ||
Oh, sorry Mike. I was just posting code that I was using to test with the keyboard. It wasn't meant to be a solution or anything of the sort. I don't think it is a bug in Monkey, it is just that Monkey just doesn't so it.. yet. But I hope a solution comes soon for you. |