1 1.8 blymn /* $NetBSD: keyname.c,v 1.8 2019/06/11 10:17:24 blymn Exp $ */ 2 1.1 jdc 3 1.1 jdc /*- 4 1.1 jdc * Copyright (c) 2003 The NetBSD Foundation, Inc. 5 1.1 jdc * All rights reserved. 6 1.1 jdc * 7 1.1 jdc * This code is derived from software contributed to The NetBSD Foundation 8 1.1 jdc * by Julian Coleman. 9 1.1 jdc * 10 1.1 jdc * Redistribution and use in source and binary forms, with or without 11 1.1 jdc * modification, are permitted provided that the following conditions 12 1.1 jdc * are met: 13 1.1 jdc * 1. Redistributions of source code must retain the above copyright 14 1.1 jdc * notice, this list of conditions and the following disclaimer. 15 1.1 jdc * 2. Redistributions in binary form must reproduce the above copyright 16 1.1 jdc * notice, this list of conditions and the following disclaimer in the 17 1.1 jdc * documentation and/or other materials provided with the distribution. 18 1.1 jdc * 19 1.1 jdc * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20 1.1 jdc * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21 1.1 jdc * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 1.1 jdc * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23 1.1 jdc * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 1.1 jdc * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 1.1 jdc * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 1.1 jdc * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 1.1 jdc * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 1.1 jdc * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 1.1 jdc * POSSIBILITY OF SUCH DAMAGE. 30 1.1 jdc */ 31 1.1 jdc 32 1.1 jdc #include <sys/cdefs.h> 33 1.1 jdc #ifndef lint 34 1.8 blymn __RCSID("$NetBSD: keyname.c,v 1.8 2019/06/11 10:17:24 blymn Exp $"); 35 1.1 jdc #endif /* not lint */ 36 1.1 jdc 37 1.1 jdc #include <stdlib.h> 38 1.1 jdc #include <string.h> 39 1.1 jdc 40 1.1 jdc #include "curses.h" 41 1.1 jdc #include "curses_private.h" 42 1.1 jdc 43 1.1 jdc #define KEYNAMEMAX (size_t) 14 /* "KEY_BACKSPACE\0" */ 44 1.5 jdc static char name[KEYNAMEMAX + 1]; 45 1.5 jdc 46 1.1 jdc /* 47 1.1 jdc * keyname -- 48 1.1 jdc * Return name of key or NULL; 49 1.1 jdc */ 50 1.1 jdc char * 51 1.1 jdc keyname(int key) 52 1.1 jdc { 53 1.1 jdc /* We don't bother with the large keyname table if SMALL is defined. */ 54 1.1 jdc #ifdef SMALL 55 1.5 jdc strcpy(name, "-1\0"); 56 1.5 jdc return name; 57 1.1 jdc #else 58 1.5 jdc if (key < 0) { 59 1.5 jdc strcpy(name, "-1\0"); 60 1.5 jdc return name; 61 1.5 jdc } 62 1.2 christos 63 1.2 christos /* No name. */ 64 1.5 jdc if (key == 0x100) { 65 1.5 jdc strcpy(name, "-1\0"); 66 1.5 jdc return name; 67 1.5 jdc } 68 1.1 jdc 69 1.1 jdc /* Control codes */ 70 1.1 jdc if (key < 0x20) { 71 1.1 jdc name[0] = '^'; 72 1.1 jdc name[1] = (char) (key + 64); /* Offset of '@' */ 73 1.1 jdc name[2] = '\0'; 74 1.1 jdc return name; 75 1.1 jdc } 76 1.1 jdc 77 1.1 jdc /* "Normal" keys */ 78 1.1 jdc if (key < 0x7F) { 79 1.1 jdc name[0] = (char) key; 80 1.1 jdc name[1] = '\0'; 81 1.1 jdc return name; 82 1.1 jdc } 83 1.1 jdc 84 1.1 jdc /* Delete key */ 85 1.1 jdc if (key == 0x7F) { 86 1.1 jdc strcpy(name, "^?\0"); 87 1.1 jdc return name; 88 1.1 jdc } 89 1.1 jdc 90 1.1 jdc /* Meta + control codes */ 91 1.1 jdc if (key < 0x9F) { 92 1.1 jdc strcpy(name, "M-^"); 93 1.1 jdc name[3] = (char) (key - 64); /* Offset of '@' */ 94 1.1 jdc name[4] = '\0'; 95 1.1 jdc return name; 96 1.1 jdc } 97 1.1 jdc 98 1.1 jdc /* Meta + "normal" keys */ 99 1.1 jdc if (key < 0xFF) { 100 1.1 jdc strcpy (name, "M-"); 101 1.1 jdc name[2] = (char) (key - 128); 102 1.1 jdc name[3] = '\0'; 103 1.1 jdc return name; 104 1.1 jdc } 105 1.1 jdc 106 1.1 jdc /* Meta + delete key */ 107 1.1 jdc if (key == 0xFF) { 108 1.1 jdc strcpy(name, "M-^?\0"); 109 1.1 jdc return name; 110 1.1 jdc } 111 1.1 jdc 112 1.1 jdc /* Key names. Synchronise this with curses.h. */ 113 1.1 jdc if (key == 0x101) { 114 1.1 jdc strncpy(name, "KEY_BREAK\0", KEYNAMEMAX); 115 1.1 jdc return name; 116 1.1 jdc } 117 1.1 jdc if (key == 0x102) { 118 1.1 jdc strncpy(name, "KEY_DOWN\0", KEYNAMEMAX); 119 1.1 jdc return name; 120 1.1 jdc } 121 1.1 jdc if (key == 0x103) { 122 1.1 jdc strncpy(name, "KEY_UP\0", KEYNAMEMAX); 123 1.1 jdc return name; 124 1.1 jdc } 125 1.1 jdc if (key == 0x104) { 126 1.1 jdc strncpy(name, "KEY_LEFT\0", KEYNAMEMAX); 127 1.1 jdc return name; 128 1.1 jdc } 129 1.1 jdc if (key == 0x105) { 130 1.1 jdc strncpy(name, "KEY_RIGHT\0", KEYNAMEMAX); 131 1.1 jdc return name; 132 1.1 jdc } 133 1.1 jdc if (key == 0x106) { 134 1.1 jdc strncpy(name, "KEY_HOME\0", KEYNAMEMAX); 135 1.1 jdc return name; 136 1.1 jdc } 137 1.1 jdc if (key == 0x107) { 138 1.1 jdc strncpy(name, "KEY_BACKSPACE\0", KEYNAMEMAX); 139 1.1 jdc return name; 140 1.1 jdc } 141 1.1 jdc /* Function key block (64 keys). */ 142 1.1 jdc if (key < 0x148) { 143 1.1 jdc int i; 144 1.1 jdc 145 1.1 jdc strcpy(name, "KEY_F("); 146 1.1 jdc i = snprintf(&name[6], (size_t) 3, "%d", key - 0x108); 147 1.1 jdc name[6 + i] = ')'; 148 1.1 jdc name[7 + i] = '\0'; 149 1.1 jdc return name; 150 1.1 jdc } 151 1.1 jdc if (key == 0x148) { 152 1.1 jdc strncpy(name, "KEY_DL\0", KEYNAMEMAX); 153 1.1 jdc return name; 154 1.1 jdc } 155 1.1 jdc if (key == 0x149) { 156 1.1 jdc strncpy(name, "KEY_IL\0", KEYNAMEMAX); 157 1.1 jdc return name; 158 1.1 jdc } 159 1.1 jdc if (key == 0x14A) { 160 1.1 jdc strncpy(name, "KEY_DC\0", KEYNAMEMAX); 161 1.1 jdc return name; 162 1.1 jdc } 163 1.1 jdc if (key == 0x14B) { 164 1.1 jdc strncpy(name, "KEY_IC\0", KEYNAMEMAX); 165 1.1 jdc return name; 166 1.1 jdc } 167 1.1 jdc if (key == 0x14C) { 168 1.1 jdc strncpy(name, "KEY_EIC\0", KEYNAMEMAX); 169 1.1 jdc return name; 170 1.1 jdc } 171 1.1 jdc if (key == 0x14D) { 172 1.1 jdc strncpy(name, "KEY_CLEAR\0", KEYNAMEMAX); 173 1.1 jdc return name; 174 1.1 jdc } 175 1.1 jdc if (key == 0x14E) { 176 1.1 jdc strncpy(name, "KEY_EOS\0", KEYNAMEMAX); 177 1.1 jdc return name; 178 1.1 jdc } 179 1.1 jdc if (key == 0x14F) { 180 1.1 jdc strncpy(name, "KEY_EOL\0", KEYNAMEMAX); 181 1.1 jdc return name; 182 1.1 jdc } 183 1.1 jdc if (key == 0x150) { 184 1.1 jdc strncpy(name, "KEY_SF\0", KEYNAMEMAX); 185 1.1 jdc return name; 186 1.1 jdc } 187 1.1 jdc if (key == 0x151) { 188 1.1 jdc strncpy(name, "KEY_SR\0", KEYNAMEMAX); 189 1.1 jdc return name; 190 1.1 jdc } 191 1.1 jdc if (key == 0x152) { 192 1.1 jdc strncpy(name, "KEY_NPAGE\0", KEYNAMEMAX); 193 1.1 jdc return name; 194 1.1 jdc } 195 1.1 jdc if (key == 0x153) { 196 1.1 jdc strncpy(name, "KEY_PPAGE\0", KEYNAMEMAX); 197 1.1 jdc return name; 198 1.1 jdc } 199 1.1 jdc if (key == 0x154) { 200 1.1 jdc strncpy(name, "KEY_STAB\0", KEYNAMEMAX); 201 1.1 jdc return name; 202 1.1 jdc } 203 1.1 jdc if (key == 0x155) { 204 1.1 jdc strncpy(name, "KEY_CTAB\0", KEYNAMEMAX); 205 1.1 jdc return name; 206 1.1 jdc } 207 1.1 jdc if (key == 0x156) { 208 1.1 jdc strncpy(name, "KEY_CATAB\0", KEYNAMEMAX); 209 1.1 jdc return name; 210 1.1 jdc } 211 1.1 jdc if (key == 0x157) { 212 1.1 jdc strncpy(name, "KEY_ENTER\0", KEYNAMEMAX); 213 1.1 jdc return name; 214 1.1 jdc } 215 1.1 jdc if (key == 0x158) { 216 1.1 jdc strncpy(name, "KEY_SRESET\0", KEYNAMEMAX); 217 1.1 jdc return name; 218 1.1 jdc } 219 1.1 jdc if (key == 0x159) { 220 1.1 jdc strncpy(name, "KEY_RESET\0", KEYNAMEMAX); 221 1.1 jdc return name; 222 1.1 jdc } 223 1.1 jdc if (key == 0x15A) { 224 1.1 jdc strncpy(name, "KEY_PRINT\0", KEYNAMEMAX); 225 1.1 jdc return name; 226 1.1 jdc } 227 1.1 jdc if (key == 0x15B) { 228 1.1 jdc strncpy(name, "KEY_LL\0", KEYNAMEMAX); 229 1.1 jdc return name; 230 1.1 jdc } 231 1.1 jdc if (key == 0x15C) { 232 1.1 jdc strncpy(name, "KEY_A1\0", KEYNAMEMAX); 233 1.1 jdc return name; 234 1.1 jdc } 235 1.1 jdc if (key == 0x15D) { 236 1.1 jdc strncpy(name, "KEY_A3\0", KEYNAMEMAX); 237 1.1 jdc return name; 238 1.1 jdc } 239 1.1 jdc if (key == 0x15E) { 240 1.1 jdc strncpy(name, "KEY_B2\0", KEYNAMEMAX); 241 1.1 jdc return name; 242 1.1 jdc } 243 1.1 jdc if (key == 0x15F) { 244 1.1 jdc strncpy(name, "KEY_C1\0", KEYNAMEMAX); 245 1.1 jdc return name; 246 1.1 jdc } 247 1.1 jdc if (key == 0x160) { 248 1.1 jdc strncpy(name, "KEY_C3\0", KEYNAMEMAX); 249 1.1 jdc return name; 250 1.1 jdc } 251 1.1 jdc if (key == 0x161) { 252 1.1 jdc strncpy(name, "KEY_BTAB\0", KEYNAMEMAX); 253 1.1 jdc return name; 254 1.1 jdc } 255 1.1 jdc if (key == 0x162) { 256 1.1 jdc strncpy(name, "KEY_BEG\0", KEYNAMEMAX); 257 1.1 jdc return name; 258 1.1 jdc } 259 1.1 jdc if (key == 0x163) { 260 1.1 jdc strncpy(name, "KEY_CANCEL\0", KEYNAMEMAX); 261 1.1 jdc return name; 262 1.1 jdc } 263 1.1 jdc if (key == 0x164) { 264 1.1 jdc strncpy(name, "KEY_CLOSE\0", KEYNAMEMAX); 265 1.1 jdc return name; 266 1.1 jdc } 267 1.1 jdc if (key == 0x165) { 268 1.1 jdc strncpy(name, "KEY_COMMAND\0", KEYNAMEMAX); 269 1.1 jdc return name; 270 1.1 jdc } 271 1.1 jdc if (key == 0x166) { 272 1.1 jdc strncpy(name, "KEY_COPY\0", KEYNAMEMAX); 273 1.1 jdc return name; 274 1.1 jdc } 275 1.1 jdc if (key == 0x167) { 276 1.1 jdc strncpy(name, "KEY_CREATE\0", KEYNAMEMAX); 277 1.1 jdc return name; 278 1.1 jdc } 279 1.1 jdc if (key == 0x168) { 280 1.1 jdc strncpy(name, "KEY_END\0", KEYNAMEMAX); 281 1.1 jdc return name; 282 1.1 jdc } 283 1.1 jdc if (key == 0x169) { 284 1.1 jdc strncpy(name, "KEY_EXIT\0", KEYNAMEMAX); 285 1.1 jdc return name; 286 1.1 jdc } 287 1.1 jdc if (key == 0x16A) { 288 1.1 jdc strncpy(name, "KEY_FIND\0", KEYNAMEMAX); 289 1.1 jdc return name; 290 1.1 jdc } 291 1.1 jdc if (key == 0x16B) { 292 1.1 jdc strncpy(name, "KEY_HELP\0", KEYNAMEMAX); 293 1.1 jdc return name; 294 1.1 jdc } 295 1.1 jdc if (key == 0x16C) { 296 1.1 jdc strncpy(name, "KEY_MARK\0", KEYNAMEMAX); 297 1.1 jdc return name; 298 1.1 jdc } 299 1.1 jdc if (key == 0x16D) { 300 1.1 jdc strncpy(name, "KEY_MESSAGE\0", KEYNAMEMAX); 301 1.1 jdc return name; 302 1.1 jdc } 303 1.1 jdc if (key == 0x16E) { 304 1.1 jdc strncpy(name, "KEY_MOVE\0", KEYNAMEMAX); 305 1.1 jdc return name; 306 1.1 jdc } 307 1.1 jdc if (key == 0x16F) { 308 1.1 jdc strncpy(name, "KEY_NEXT\0", KEYNAMEMAX); 309 1.1 jdc return name; 310 1.1 jdc } 311 1.1 jdc if (key == 0x170) { 312 1.1 jdc strncpy(name, "KEY_OPEN\0", KEYNAMEMAX); 313 1.1 jdc return name; 314 1.1 jdc } 315 1.1 jdc if (key == 0x171) { 316 1.1 jdc strncpy(name, "KEY_OPTIONS\0", KEYNAMEMAX); 317 1.1 jdc return name; 318 1.1 jdc } 319 1.1 jdc if (key == 0x172) { 320 1.1 jdc strncpy(name, "KEY_PREVIOUS\0", KEYNAMEMAX); 321 1.1 jdc return name; 322 1.1 jdc } 323 1.1 jdc if (key == 0x173) { 324 1.1 jdc strncpy(name, "KEY_REDO\0", KEYNAMEMAX); 325 1.1 jdc return name; 326 1.1 jdc } 327 1.1 jdc if (key == 0x174) { 328 1.1 jdc strncpy(name, "KEY_REFERENCE\0", KEYNAMEMAX); 329 1.1 jdc return name; 330 1.1 jdc } 331 1.1 jdc if (key == 0x175) { 332 1.1 jdc strncpy(name, "KEY_REFRESH\0", KEYNAMEMAX); 333 1.1 jdc return name; 334 1.1 jdc } 335 1.1 jdc if (key == 0x176) { 336 1.1 jdc strncpy(name, "KEY_REPLACE\0", KEYNAMEMAX); 337 1.1 jdc return name; 338 1.1 jdc } 339 1.1 jdc if (key == 0x177) { 340 1.1 jdc strncpy(name, "KEY_RESTART\0", KEYNAMEMAX); 341 1.1 jdc return name; 342 1.1 jdc } 343 1.1 jdc if (key == 0x178) { 344 1.1 jdc strncpy(name, "KEY_RESUME\0", KEYNAMEMAX); 345 1.1 jdc return name; 346 1.1 jdc } 347 1.1 jdc if (key == 0x179) { 348 1.1 jdc strncpy(name, "KEY_SAVE\0", KEYNAMEMAX); 349 1.1 jdc return name; 350 1.1 jdc } 351 1.1 jdc if (key == 0x17A) { 352 1.1 jdc strncpy(name, "KEY_SBEG\0", KEYNAMEMAX); 353 1.1 jdc return name; 354 1.1 jdc } 355 1.1 jdc if (key == 0x17B) { 356 1.1 jdc strncpy(name, "KEY_SCANCEL\0", KEYNAMEMAX); 357 1.1 jdc return name; 358 1.1 jdc } 359 1.1 jdc if (key == 0x17C) { 360 1.1 jdc strncpy(name, "KEY_SCOMMAND\0", KEYNAMEMAX); 361 1.1 jdc return name; 362 1.1 jdc } 363 1.1 jdc if (key == 0x17D) { 364 1.1 jdc strncpy(name, "KEY_SCOPY\0", KEYNAMEMAX); 365 1.1 jdc return name; 366 1.1 jdc } 367 1.1 jdc if (key == 0x17E) { 368 1.1 jdc strncpy(name, "KEY_SCREATE\0", KEYNAMEMAX); 369 1.1 jdc return name; 370 1.1 jdc } 371 1.1 jdc if (key == 0x17F) { 372 1.1 jdc strncpy(name, "KEY_SDC\0", KEYNAMEMAX); 373 1.1 jdc return name; 374 1.1 jdc } 375 1.1 jdc if (key == 0x180) { 376 1.1 jdc strncpy(name, "KEY_SDL\0", KEYNAMEMAX); 377 1.1 jdc return name; 378 1.1 jdc } 379 1.1 jdc if (key == 0x181) { 380 1.1 jdc strncpy(name, "KEY_SELECT\0", KEYNAMEMAX); 381 1.1 jdc return name; 382 1.1 jdc } 383 1.1 jdc if (key == 0x182) { 384 1.1 jdc strncpy(name, "KEY_SEND\0", KEYNAMEMAX); 385 1.1 jdc return name; 386 1.1 jdc } 387 1.1 jdc if (key == 0x183) { 388 1.1 jdc strncpy(name, "KEY_SEOL\0", KEYNAMEMAX); 389 1.1 jdc return name; 390 1.1 jdc } 391 1.1 jdc if (key == 0x184) { 392 1.1 jdc strncpy(name, "KEY_SEXIT\0", KEYNAMEMAX); 393 1.1 jdc return name; 394 1.1 jdc } 395 1.1 jdc if (key == 0x185) { 396 1.1 jdc strncpy(name, "KEY_SFIND\0", KEYNAMEMAX); 397 1.1 jdc return name; 398 1.1 jdc } 399 1.1 jdc if (key == 0x186) { 400 1.1 jdc strncpy(name, "KEY_SHELP\0", KEYNAMEMAX); 401 1.1 jdc return name; 402 1.1 jdc } 403 1.1 jdc if (key == 0x187) { 404 1.1 jdc strncpy(name, "KEY_SHOME\0", KEYNAMEMAX); 405 1.1 jdc return name; 406 1.1 jdc } 407 1.1 jdc if (key == 0x188) { 408 1.1 jdc strncpy(name, "KEY_SIC\0", KEYNAMEMAX); 409 1.1 jdc return name; 410 1.1 jdc } 411 1.1 jdc if (key == 0x189) { 412 1.1 jdc strncpy(name, "KEY_SLEFT\0", KEYNAMEMAX); 413 1.1 jdc return name; 414 1.1 jdc } 415 1.1 jdc if (key == 0x18A) { 416 1.1 jdc strncpy(name, "KEY_SMESSAGE\0", KEYNAMEMAX); 417 1.1 jdc return name; 418 1.1 jdc } 419 1.1 jdc if (key == 0x18B) { 420 1.1 jdc strncpy(name, "KEY_SMOVE\0", KEYNAMEMAX); 421 1.1 jdc return name; 422 1.1 jdc } 423 1.1 jdc if (key == 0x18C) { 424 1.1 jdc strncpy(name, "KEY_SNEXT\0", KEYNAMEMAX); 425 1.1 jdc return name; 426 1.1 jdc } 427 1.1 jdc if (key == 0x18D) { 428 1.1 jdc strncpy(name, "KEY_SOPTIONS\0", KEYNAMEMAX); 429 1.1 jdc return name; 430 1.1 jdc } 431 1.1 jdc if (key == 0x18E) { 432 1.1 jdc strncpy(name, "KEY_SPREVIOUS\0", KEYNAMEMAX); 433 1.1 jdc return name; 434 1.1 jdc } 435 1.1 jdc if (key == 0x18F) { 436 1.1 jdc strncpy(name, "KEY_SPRINT\0", KEYNAMEMAX); 437 1.1 jdc return name; 438 1.1 jdc } 439 1.1 jdc if (key == 0x190) { 440 1.1 jdc strncpy(name, "KEY_SREDO\0", KEYNAMEMAX); 441 1.1 jdc return name; 442 1.1 jdc } 443 1.1 jdc if (key == 0x191) { 444 1.1 jdc strncpy(name, "KEY_SREPLACE\0", KEYNAMEMAX); 445 1.1 jdc return name; 446 1.1 jdc } 447 1.1 jdc if (key == 0x192) { 448 1.1 jdc strncpy(name, "KEY_SRIGHT\0", KEYNAMEMAX); 449 1.1 jdc return name; 450 1.1 jdc } 451 1.1 jdc if (key == 0x193) { 452 1.1 jdc strncpy(name, "KEY_SRSUME\0", KEYNAMEMAX); 453 1.1 jdc return name; 454 1.1 jdc } 455 1.1 jdc if (key == 0x194) { 456 1.1 jdc strncpy(name, "KEY_SSAVE\0", KEYNAMEMAX); 457 1.1 jdc return name; 458 1.1 jdc } 459 1.1 jdc if (key == 0x195) { 460 1.1 jdc strncpy(name, "KEY_SSUSPEND\0", KEYNAMEMAX); 461 1.1 jdc return name; 462 1.1 jdc } 463 1.1 jdc if (key == 0x196) { 464 1.1 jdc strncpy(name, "KEY_SUNDO\0", KEYNAMEMAX); 465 1.1 jdc return name; 466 1.1 jdc } 467 1.1 jdc if (key == 0x197) { 468 1.1 jdc strncpy(name, "KEY_SUSPEND\0", KEYNAMEMAX); 469 1.1 jdc return name; 470 1.1 jdc } 471 1.1 jdc if (key == 0x198) { 472 1.1 jdc strncpy(name, "KEY_UNDO\0", KEYNAMEMAX); 473 1.1 jdc return name; 474 1.1 jdc } 475 1.1 jdc if (key == 0x199) { 476 1.1 jdc strncpy(name, "KEY_MOUSE\0", KEYNAMEMAX); 477 1.1 jdc return name; 478 1.1 jdc } 479 1.4 jdc if (key == 0x200) { 480 1.4 jdc strncpy(name, "KEY_RESIZE\0", KEYNAMEMAX); 481 1.4 jdc return name; 482 1.4 jdc } 483 1.1 jdc /* No more names. */ 484 1.8 blymn strncpy(name, "UNKNOWN KEY\0", KEYNAMEMAX); 485 1.3 blymn return name; 486 1.3 blymn #endif 487 1.3 blymn } 488 1.3 blymn /* 489 1.3 blymn * key_name -- 490 1.3 blymn * Return name of key or NULL; 491 1.3 blymn */ 492 1.3 blymn char * 493 1.3 blymn key_name(wchar_t key) 494 1.3 blymn { 495 1.3 blymn #ifndef HAVE_WCHAR 496 1.3 blymn return NULL; 497 1.3 blymn #else 498 1.7 roy (void)keyname((int)key); 499 1.3 blymn 500 1.5 jdc if (!strncmp(name, "M-", 2)) { 501 1.5 jdc /* Remove the "M-" */ 502 1.5 jdc name[0] = name[2]; 503 1.5 jdc name[1] = '\0'; 504 1.3 blymn } 505 1.3 blymn return name; 506 1.3 blymn #endif /* HAVE_WCHAR */ 507 1.1 jdc } 508