aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--README2
-rw-r--r--events.c27
-rw-r--r--uzbl-core.c14
-rw-r--r--uzbl-core.h3
4 files changed, 34 insertions, 12 deletions
diff --git a/README b/README
index 4ac11a0..6170743 100644
--- a/README
+++ b/README
@@ -144,6 +144,8 @@ The following commands are recognized:
* `search <string>`
* `search_reverse <string>`
- search with no string will search for the next/previous occurrence of the string previously searched for
+* `search_clear`
+ - unmark and clear the search string
* `toggle_insert_mode <optional state>` TODO new plugin based syntax
- if the optional state is 0, disable insert mode. If 1, enable insert mode.
* `dump_config`
diff --git a/events.c b/events.c
index 965988d..99e7dcb 100644
--- a/events.c
+++ b/events.c
@@ -180,23 +180,26 @@ send_event(int type, const gchar *details, const gchar *custom_event) {
/* Transform gdk key events to our own events */
void
key_to_event(guint keyval, gint mode) {
- char byte[2] = {0, 0};
- gchar *utf_conv = NULL;
+ gchar ucs[7];
+ gint ulen;
+ guint32 ukval = gdk_keyval_to_unicode(keyval);
- /* check for Latin-1 characters (1:1 mapping) */
- if ((keyval > 0x0020 && keyval <= 0x007e) ||
- (keyval >= 0x0080 && keyval <= 0x00ff)) {
- byte[0] = (char) keyval;
-
- /* convert to utf-8 */
- utf_conv = g_convert(byte, -1, "UTF-8", "ISO-8859-1", NULL, NULL, NULL);
+ /* check for printable unicode char */
+ /* TODO: Pass the keyvals through a GtkIMContext so that
+ * we also get combining chars right
+ */
+ if(g_unichar_isgraph(ukval)) {
+ ulen = g_unichar_to_utf8(ukval, ucs);
+ ucs[ulen] = 0;
- send_event(mode == GDK_KEY_PRESS ? KEY_PRESS : KEY_RELEASE, utf_conv ? utf_conv : byte, NULL);
- g_free(utf_conv);
+ send_event(mode == GDK_KEY_PRESS ? KEY_PRESS : KEY_RELEASE,
+ ucs, NULL);
}
- else
+ /* send keysym for non-printable chars */
+ else {
send_event(mode == GDK_KEY_PRESS ? KEY_PRESS : KEY_RELEASE,
gdk_keyval_name(keyval), NULL);
+ }
}
diff --git a/uzbl-core.c b/uzbl-core.c
index be2ce75..2f808b5 100644
--- a/uzbl-core.c
+++ b/uzbl-core.c
@@ -630,6 +630,7 @@ struct {const char *key; CommandInfo value;} cmdlist[] =
{ "exit", {close_uzbl, 0} },
{ "search", {search_forward_text, TRUE} },
{ "search_reverse", {search_reverse_text, TRUE} },
+ { "search_clear", {search_clear, TRUE} },
{ "dehilight", {dehilight, 0} },
{ "set", {set_var, TRUE} },
{ "dump_config", {act_dump_config, 0} },
@@ -1094,6 +1095,7 @@ search_text (WebKitWebView *page, GArray *argv, const gboolean forward) {
}
}
+
if (uzbl.state.searchtx) {
if (uzbl.state.verbose)
printf ("Searching: %s\n", uzbl.state.searchtx);
@@ -1103,6 +1105,18 @@ search_text (WebKitWebView *page, GArray *argv, const gboolean forward) {
}
void
+search_clear(WebKitWebView *page, GArray *argv, GString *result) {
+ (void) argv;
+ (void) result;
+
+ webkit_web_view_unmark_text_matches (page);
+ if(uzbl.state.searchtx) {
+ g_free(uzbl.state.searchtx);
+ uzbl.state.searchtx = NULL;
+ }
+}
+
+void
search_forward_text (WebKitWebView *page, GArray *argv, GString *result) {
(void) result;
search_text(page, argv, TRUE);
diff --git a/uzbl-core.h b/uzbl-core.h
index 5c291e5..82137e3 100644
--- a/uzbl-core.h
+++ b/uzbl-core.h
@@ -374,6 +374,9 @@ void
search_reverse_text (WebKitWebView *page, GArray *argv, GString *result);
void
+search_clear(WebKitWebView *page, GArray *argv, GString *result);
+
+void
dehilight (WebKitWebView *page, GArray *argv, GString *result);
void