paste detection fixes

git-svn-id: http://svn.irssi.org/repos/irssi/trunk@3169 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
Timo Sirainen 2003-11-17 12:17:57 +00:00 committed by cras
commit 4d3d559f93
3 changed files with 22 additions and 13 deletions

View file

@ -551,8 +551,6 @@ static int key_states_search(const unsigned char *combo,
return 0;
}
/* Returns TRUE if key press was consumed. Control characters should be sent
as "^@" .. "^_" instead of #0..#31 chars, #127 should be sent as ^? */
int key_pressed(KEYBOARD_REC *keyboard, const char *key)
{
KEY_REC *rec;
@ -565,7 +563,7 @@ int key_pressed(KEYBOARD_REC *keyboard, const char *key)
if (keyboard->key_state == NULL && key[1] == '\0' &&
!used_keys[(int) (unsigned char) key[0]]) {
/* fast check - key not used */
return FALSE;
return -1;
}
first_key = keyboard->key_state == NULL;
@ -583,13 +581,13 @@ int key_pressed(KEYBOARD_REC *keyboard, const char *key)
/* unknown key combo, eat the invalid key
unless it was the first key pressed */
g_free(combo);
return !first_key;
return first_key ? 0 : -1;
}
if (g_tree_lookup(key_states, combo) != rec) {
/* key combo continues.. */
keyboard->key_state = combo;
return TRUE;
return 0;
}
/* finished key combo, execute */
@ -597,7 +595,7 @@ int key_pressed(KEYBOARD_REC *keyboard, const char *key)
consumed = key_emit_signal(keyboard, rec);
/* never consume non-control characters */
return consumed;
return consumed ? 1 : -1;
}
void keyboard_entry_redirect(SIGNAL_FUNC func, const char *entry,

View file

@ -29,8 +29,9 @@ extern GSList *keyinfos;
KEYBOARD_REC *keyboard_create(void *gui_data);
/* Destroys a keyboard */
void keyboard_destroy(KEYBOARD_REC *keyboard);
/* Returns TRUE if key press was consumed. Control characters should be sent
as "^@" .. "^_" instead of #0..#31 chars, #127 should be sent as ^? */
/* Returns 1 if key press was consumed, -1 if not, 0 if it's beginning of a
key combo. Control characters should be sent as "^@" .. "^_" instead of
#0..#31 chars, #127 should be sent as ^? */
int key_pressed(KEYBOARD_REC *keyboard, const char *key);
void key_bind(const char *id, const char *description,