Example #1
0
File: sdlkeys.c Project: engur/PUAE
int keysym2amiga (int keysym)
{
    int amiga_keycode = kc_decode (keysym);

    if (amiga_keycode == -1) {
	switch (currprefs.keyboard_lang) {
	    case KBD_LANG_FR:
		amiga_keycode = decode_fr (keysym); break;
	    case KBD_LANG_US:
		amiga_keycode = decode_us (keysym); break;
	    case KBD_LANG_DE:
		amiga_keycode = decode_de (keysym); break;
	    case KBD_LANG_DK:
		amiga_keycode = decode_dk (keysym); break;
	    case KBD_LANG_SE:
		amiga_keycode = decode_se (keysym); break;
	    case KBD_LANG_IT:
		amiga_keycode = decode_it (keysym); break;
	    case KBD_LANG_ES:
		amiga_keycode = decode_es (keysym); break;
	    case KBD_LANG_FI:
		amiga_keycode = decode_fi (keysym); break;
	    case KBD_LANG_TR:
		amiga_keycode = decode_tr (keysym); break;
	    default:
			break;
	}
    }
    return amiga_keycode;
}
Example #2
0
int32_t xkeysym2amiga (KeySym ks)
{
    int32_t as = kc_decode (ks);

    if (as == -1) {
	switch (currprefs.keyboard_lang) {
	    case KBD_LANG_FR:
		as = decode_fr (ks); break;
	    case KBD_LANG_US:
		as = decode_us (ks); break;
	    case KBD_LANG_DE:
		as = decode_de (ks); break;
	    case KBD_LANG_DK:
		as = decode_dk (ks); break;
	    case KBD_LANG_SE:
		as = decode_se (ks); break;
	    case KBD_LANG_IT:
		as = decode_it (ks); break;
	    case KBD_LANG_ES:
		as = decode_es (ks); break;
			case KBD_LANG_TR:
			as = decode_tr (ks); break;
			case KBD_LANG_FI:
			default:
			break;
	}
    }
    return as;
}
Example #3
0
static void handle_de(yystype *tokens, size_t start, const size_t cnt, const char *name, struct decode_result *res)
{
	/* find function decl. end */
	size_t i, nesting = 1, j;
	yystype* parameters [6];
	const size_t parameters_cnt = 6;

	for(i=start;i < cnt; i++) {
		if(tokens[i].type == TOK_FUNCTION) {
			if(TOKEN_GET(&tokens[i], scope))
				nesting++;
			else
				nesting--;
			if(!nesting)
				break;
		}
	}
	if(nesting)
		return;
	memset(parameters, 0, sizeof(parameters));
	if(name) {
		/* find call to function */
		for(;i+2 < cnt; i++) {
			const char* token_val = TOKEN_GET(&tokens[i], cstring);
			if(tokens[i].type == TOK_IDENTIFIER_NAME &&
			   token_val &&
			   !strcmp(name, token_val) &&
			   tokens[i+1].type == TOK_PAR_OPEN) {

				i += 2;
				for(j = 0;j < parameters_cnt && i < cnt;j++) {
					parameters[j] = &tokens[i++];
					if(j != parameters_cnt-1)
						while (tokens[i].type != TOK_COMMA && i < cnt) i++;
					else
						while (tokens[i].type != TOK_PAR_CLOSE && i < cnt) i++;
					i++;
				}
				if(j == parameters_cnt)
					decode_de(parameters, &res->txtbuf);
			}
		}
	} else {
		while(i<cnt && tokens[i].type != TOK_PAR_OPEN) i++;
		++i;
		if(i >= cnt) return;
		/* TODO: move this v to another func */
				for(j = 0;j < parameters_cnt && i < cnt;j++) {
					parameters[j] = &tokens[i++];
					if(j != parameters_cnt-1)
						while (tokens[i].type != TOK_COMMA && i < cnt) i++;
					else
						while (tokens[i].type != TOK_PAR_CLOSE && i < cnt) i++;
					i++;
				}
				if(j == parameters_cnt)
					decode_de(parameters, &res->txtbuf);
	}
	if(parameters[0] && parameters[parameters_cnt-1]) {
		res->pos_begin = parameters[0] - tokens;
		res->pos_end = parameters[parameters_cnt-1] - tokens + 1;
		if(tokens[res->pos_end].type == TOK_BRACKET_OPEN &&
				tokens[res->pos_end+1].type == TOK_BRACKET_CLOSE &&
				tokens[res->pos_end+2].type == TOK_PAR_CLOSE)
			res->pos_end += 3; /* {}) */
		else
			res->pos_end++; /* ) */
	}
}