Only send utf8 string in Key Press event

Fixes #869
This commit is contained in:
TingPing 2015-02-01 16:37:27 -05:00
parent 60fa7efbc8
commit afee9fd42b
3 changed files with 11 additions and 6 deletions

View File

@ -659,26 +659,31 @@ plugin_emit_dummy_print (session *sess, char *name)
} }
int int
plugin_emit_keypress (session *sess, unsigned int state, unsigned int keyval, plugin_emit_keypress (session *sess, unsigned int state, unsigned int keyval, gunichar key)
int len, char *string)
{ {
char *word[PDIWORDS]; char *word[PDIWORDS];
char keyval_str[16]; char keyval_str[16];
char state_str[16]; char state_str[16];
char len_str[16]; char len_str[16];
int i; char key_str[7];
int i, len;
if (!hook_list) if (!hook_list)
return 0; return 0;
sprintf (keyval_str, "%u", keyval); sprintf (keyval_str, "%u", keyval);
sprintf (state_str, "%u", state); sprintf (state_str, "%u", state);
if (!key)
len = 0;
else
len = g_unichar_to_utf8 (key, key_str);
key_str[len] = '\0';
sprintf (len_str, "%d", len); sprintf (len_str, "%d", len);
word[0] = "Key Press"; word[0] = "Key Press";
word[1] = keyval_str; word[1] = keyval_str;
word[2] = state_str; word[2] = state_str;
word[3] = string; word[3] = key_str;
word[4] = len_str; word[4] = len_str;
for (i = 5; i < PDIWORDS; i++) for (i = 5; i < PDIWORDS; i++)
word[i] = "\000"; word[i] = "\000";

View File

@ -174,7 +174,7 @@ int plugin_emit_server (session *sess, char *name, char *word[], char *word_eol[
time_t server_time); time_t server_time);
int plugin_emit_print (session *sess, char *word[], time_t server_time); int plugin_emit_print (session *sess, char *word[], time_t server_time);
int plugin_emit_dummy_print (session *sess, char *name); int plugin_emit_dummy_print (session *sess, char *name);
int plugin_emit_keypress (session *sess, unsigned int state, unsigned int keyval, int len, char *string); int plugin_emit_keypress (session *sess, unsigned int state, unsigned int keyval, gunichar key);
GList* plugin_command_list(GList *tmp_list); GList* plugin_command_list(GList *tmp_list);
int plugin_show_help (session *sess, char *cmd); int plugin_show_help (session *sess, char *cmd);
void plugin_command_foreach (session *sess, void *userdata, void (*cb) (session *sess, void *userdata, char *name, char *usage)); void plugin_command_foreach (session *sess, void *userdata, void (*cb) (session *sess, void *userdata, char *name, char *usage));

View File

@ -322,7 +322,7 @@ key_handle_key_press (GtkWidget *wid, GdkEventKey *evt, session *sess)
return FALSE; return FALSE;
current_sess = sess; current_sess = sess;
if (plugin_emit_keypress (sess, evt->state, evt->keyval, evt->length, evt->string)) if (plugin_emit_keypress (sess, evt->state, evt->keyval, gdk_keyval_to_unicode (evt->keyval)))
return 1; return 1;
/* maybe the plugin closed this tab? */ /* maybe the plugin closed this tab? */