mirror of
https://github.com/davatorium/rofi.git
synced 2024-11-11 13:50:48 -05:00
Support combined characters.
This commit is contained in:
parent
c90e240c90
commit
0b7fe775ca
4 changed files with 24 additions and 8 deletions
|
@ -639,7 +639,7 @@ and the others slightly transparent.
|
||||||
* `Ctrl-Shift-Tab`: Switch to the previous modi. The list can be customized with the `-switchers` argument.
|
* `Ctrl-Shift-Tab`: Switch to the previous modi. The list can be customized with the `-switchers` argument.
|
||||||
* `Ctrl-space`: Set selected item as input text.
|
* `Ctrl-space`: Set selected item as input text.
|
||||||
* `Shift-Del`: Delete entry from history.
|
* `Shift-Del`: Delete entry from history.
|
||||||
* `grave`: Toggle case sensitivity.
|
* `Ctrl-grave`: Toggle case sensitivity.
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
|
|
|
@ -837,7 +837,7 @@ and the others slightly transparent.
|
||||||
.IP \(bu 2
|
.IP \(bu 2
|
||||||
\fB\fCShift\-Del\fR: Delete entry from history.
|
\fB\fCShift\-Del\fR: Delete entry from history.
|
||||||
.IP \(bu 2
|
.IP \(bu 2
|
||||||
\fB\fCgrave\fR: Toggle case sensitivity.
|
\fB\fCCtrl\-grave\fR: Toggle case sensitivity.
|
||||||
.RE
|
.RE
|
||||||
.SH FAQ
|
.SH FAQ
|
||||||
.PP
|
.PP
|
||||||
|
|
|
@ -1110,9 +1110,11 @@ MenuReturn menu ( char **lines, unsigned int num_lines, char **input, char *prom
|
||||||
}
|
}
|
||||||
// Get next event. (might block)
|
// Get next event. (might block)
|
||||||
XNextEvent ( display, &ev );
|
XNextEvent ( display, &ev );
|
||||||
|
if ( ev.type == KeymapNotify ) {
|
||||||
|
XRefreshKeyboardMapping ( &ev.xmapping );
|
||||||
|
}
|
||||||
// Handle event.
|
// Handle event.
|
||||||
if ( ev.type == Expose ) {
|
else if ( ev.type == Expose ) {
|
||||||
while ( XCheckTypedEvent ( display, Expose, &ev ) ) {
|
while ( XCheckTypedEvent ( display, Expose, &ev ) ) {
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
@ -1173,8 +1175,9 @@ MenuReturn menu ( char **lines, unsigned int num_lines, char **input, char *prom
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Toggle case sensitivity.
|
// Toggle case sensitivity.
|
||||||
else if ( key == XK_grave || key == XK_dead_grave
|
else if ( ( ev.xkey.state & ControlMask ) == ControlMask && (
|
||||||
|| key == XK_acute ) {
|
key == XK_grave || key == XK_dead_grave || key == XK_acute
|
||||||
|
) ) {
|
||||||
config.case_sensitive = !config.case_sensitive;
|
config.case_sensitive = !config.case_sensitive;
|
||||||
*( state.selected_line ) = 0;
|
*( state.selected_line ) = 0;
|
||||||
state.refilter = TRUE;
|
state.refilter = TRUE;
|
||||||
|
@ -1340,7 +1343,6 @@ void error_dialog ( const char *msg )
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
XNextEvent ( display, &ev );
|
XNextEvent ( display, &ev );
|
||||||
|
|
||||||
// Handle event.
|
// Handle event.
|
||||||
if ( ev.type == Expose ) {
|
if ( ev.type == Expose ) {
|
||||||
while ( XCheckTypedEvent ( display, Expose, &ev ) ) {
|
while ( XCheckTypedEvent ( display, Expose, &ev ) ) {
|
||||||
|
@ -1706,6 +1708,15 @@ int main ( int argc, char *argv[] )
|
||||||
display_str = getenv ( "DISPLAY" );
|
display_str = getenv ( "DISPLAY" );
|
||||||
find_arg_str ( "-display", &display_str );
|
find_arg_str ( "-display", &display_str );
|
||||||
|
|
||||||
|
|
||||||
|
if ( !XSupportsLocale () ) {
|
||||||
|
fprintf ( stderr, "X11 does not support locales\n" );
|
||||||
|
return 11;
|
||||||
|
}
|
||||||
|
if ( XSetLocaleModifiers ( "@im=none" ) == NULL ) {
|
||||||
|
fprintf ( stderr, "Failed to set locale modifier.\n" );
|
||||||
|
return 10;
|
||||||
|
}
|
||||||
if ( !( display = XOpenDisplay ( display_str ) ) ) {
|
if ( !( display = XOpenDisplay ( display_str ) ) ) {
|
||||||
fprintf ( stderr, "cannot open display!\n" );
|
fprintf ( stderr, "cannot open display!\n" );
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
|
@ -511,6 +511,12 @@ int textbox_keypress ( textbox *tb, XEvent *ev )
|
||||||
char pad[32];
|
char pad[32];
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
|
// This is needed for letting the Input Method handle combined keys.
|
||||||
|
// E.g. `e into è
|
||||||
|
if ( XFilterEvent ( ev, tb->window ) ) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if ( !( tb->flags & TB_EDITABLE ) ) {
|
if ( !( tb->flags & TB_EDITABLE ) ) {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -518,7 +524,6 @@ int textbox_keypress ( textbox *tb, XEvent *ev )
|
||||||
|
|
||||||
len = Xutf8LookupString ( tb->xic, &ev->xkey, pad, sizeof ( pad ), &key, &stat );
|
len = Xutf8LookupString ( tb->xic, &ev->xkey, pad, sizeof ( pad ), &key, &stat );
|
||||||
pad[len] = 0;
|
pad[len] = 0;
|
||||||
|
|
||||||
// Left or Ctrl-b
|
// Left or Ctrl-b
|
||||||
if ( key == XK_Left ||
|
if ( key == XK_Left ||
|
||||||
( ( ev->xkey.state & ControlMask ) && key == XK_b ) ) {
|
( ( ev->xkey.state & ControlMask ) && key == XK_b ) ) {
|
||||||
|
|
Loading…
Reference in a new issue