mirror of
https://github.com/jjsullivan5196/wvkbd.git
synced 2025-03-13 10:52:47 +01:00
Added a compose button, copy type; added compose layouts and further layout updates
This commit is contained in:
parent
1fc0fbe5e6
commit
9e4cf69137
83
keyboard.h
83
keyboard.h
@ -12,7 +12,9 @@ enum key_type {
|
|||||||
Layout,
|
Layout,
|
||||||
EndRow,
|
EndRow,
|
||||||
Last,
|
Last,
|
||||||
|
Compose,
|
||||||
CodeMod,
|
CodeMod,
|
||||||
|
Copy,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Modifiers passed to the virtual_keyboard protocol. They are based on
|
/* Modifiers passed to the virtual_keyboard protocol. They are based on
|
||||||
@ -23,6 +25,7 @@ enum key_modifier_type {
|
|||||||
Shift = 1,
|
Shift = 1,
|
||||||
CapsLock = 2,
|
CapsLock = 2,
|
||||||
Ctrl = 4,
|
Ctrl = 4,
|
||||||
|
Alt = 8,
|
||||||
Super = 64,
|
Super = 64,
|
||||||
AltGr = 128,
|
AltGr = 128,
|
||||||
};
|
};
|
||||||
@ -35,26 +38,30 @@ struct clr_scheme {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct key {
|
struct key {
|
||||||
const char *label;
|
const char *label; //primary label
|
||||||
const char *shift_label;
|
const char *shift_label; //secondary label
|
||||||
const double width;
|
const double width; //relative width (1.0)
|
||||||
const enum key_type type;
|
const enum key_type type;
|
||||||
|
|
||||||
const uint32_t code;
|
const uint32_t code; /* code: key scancode or modifier name (see
|
||||||
struct layout *layout;
|
* `/usr/include/linux/input-event-codes.h` for scancode names, and
|
||||||
const uint32_t code_mod;
|
* `keyboard.h` for modifiers)
|
||||||
|
* XKB keycodes are +8 */
|
||||||
|
struct layout *layout; //pointer back to the parent layout that holds this key
|
||||||
|
const uint32_t code_mod; /* modifier to force when this key is pressed */
|
||||||
|
|
||||||
//actual coordinates on the surface
|
//actual coordinates on the surface (pixels), will be computed automatically for all keys
|
||||||
uint32_t x, y, w, h;
|
uint32_t x, y, w, h;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct layout {
|
struct layout {
|
||||||
struct key *keys;
|
struct key *keys;
|
||||||
uint32_t keyheight;
|
uint32_t keyheight; //absolute height (pixels)
|
||||||
};
|
};
|
||||||
|
|
||||||
struct kbd {
|
struct kbd {
|
||||||
struct layout *layout;
|
struct layout *layout;
|
||||||
|
struct layout *prevlayout;
|
||||||
struct clr_scheme scheme;
|
struct clr_scheme scheme;
|
||||||
|
|
||||||
uint32_t w, h;
|
uint32_t w, h;
|
||||||
@ -148,8 +155,13 @@ kbd_unpress_key(struct kbd *kb, uint32_t time) {
|
|||||||
kbd_draw_key(kb, kb->last_press, false);
|
kbd_draw_key(kb, kb->last_press, false);
|
||||||
kb->surf->dirty = true;
|
kb->surf->dirty = true;
|
||||||
|
|
||||||
zwp_virtual_keyboard_v1_key(kb->vkbd, time, kb->last_press->code,
|
if (kb->last_press->type == Copy) {
|
||||||
WL_KEYBOARD_KEY_STATE_RELEASED);
|
zwp_virtual_keyboard_v1_key(kb->vkbd, time, 127, //COMP key
|
||||||
|
WL_KEYBOARD_KEY_STATE_RELEASED);
|
||||||
|
} else {
|
||||||
|
zwp_virtual_keyboard_v1_key(kb->vkbd, time, kb->last_press->code,
|
||||||
|
WL_KEYBOARD_KEY_STATE_RELEASED);
|
||||||
|
}
|
||||||
kb->last_press = NULL;
|
kb->last_press = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -161,7 +173,7 @@ kbd_press_key(struct kbd *kb, struct key *k, uint32_t time) {
|
|||||||
case CodeMod:
|
case CodeMod:
|
||||||
mods_before = kb->mods;
|
mods_before = kb->mods;
|
||||||
|
|
||||||
kb->mods = k->code_mod;
|
kb->mods ^= k->code_mod;
|
||||||
kb->last_press = k;
|
kb->last_press = k;
|
||||||
kbd_draw_key(kb, k, true);
|
kbd_draw_key(kb, k, true);
|
||||||
zwp_virtual_keyboard_v1_modifiers(kb->vkbd, kb->mods, 0, 0, 0);
|
zwp_virtual_keyboard_v1_modifiers(kb->vkbd, kb->mods, 0, 0, 0);
|
||||||
@ -172,10 +184,26 @@ kbd_press_key(struct kbd *kb, struct key *k, uint32_t time) {
|
|||||||
zwp_virtual_keyboard_v1_modifiers(kb->vkbd, kb->mods, 0, 0, 0);
|
zwp_virtual_keyboard_v1_modifiers(kb->vkbd, kb->mods, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
case Code:
|
case Code:
|
||||||
kb->last_press = k;
|
if (compose == 1) {
|
||||||
kbd_draw_key(kb, k, true);
|
if (k->layout) {
|
||||||
zwp_virtual_keyboard_v1_key(kb->vkbd, time, kb->last_press->code,
|
compose++;
|
||||||
WL_KEYBOARD_KEY_STATE_PRESSED);
|
if (compose) {
|
||||||
|
fprintf(stderr,"showing compose %d\n", compose);
|
||||||
|
}
|
||||||
|
kb->prevlayout = kb->layout;
|
||||||
|
kb->layout = k->layout;
|
||||||
|
kbd_draw_layout(kb);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
kb->last_press = k;
|
||||||
|
kbd_draw_key(kb, k, true);
|
||||||
|
zwp_virtual_keyboard_v1_key(kb->vkbd, time, kb->last_press->code,
|
||||||
|
WL_KEYBOARD_KEY_STATE_PRESSED);
|
||||||
|
if (compose) {
|
||||||
|
fprintf(stderr,"pressing composed key\n");
|
||||||
|
compose++;
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case Mod:
|
case Mod:
|
||||||
kb->mods ^= k->code;
|
kb->mods ^= k->code;
|
||||||
@ -185,13 +213,36 @@ kbd_press_key(struct kbd *kb, struct key *k, uint32_t time) {
|
|||||||
kbd_draw_key(kb, k, kb->mods & k->code);
|
kbd_draw_key(kb, k, kb->mods & k->code);
|
||||||
zwp_virtual_keyboard_v1_modifiers(kb->vkbd, kb->mods, 0, 0, 0);
|
zwp_virtual_keyboard_v1_modifiers(kb->vkbd, kb->mods, 0, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
case Compose:
|
||||||
|
if (compose == 0) {
|
||||||
|
compose = 1;
|
||||||
|
} else {
|
||||||
|
compose = 0;
|
||||||
|
}
|
||||||
|
kbd_draw_key(kb, k, (bool) compose);
|
||||||
|
break;
|
||||||
case Layout:
|
case Layout:
|
||||||
kb->layout = k->layout;
|
kb->layout = k->layout;
|
||||||
kbd_draw_layout(kb);
|
kbd_draw_layout(kb);
|
||||||
|
case Copy:
|
||||||
|
kb->last_press = k;
|
||||||
|
kbd_draw_key(kb, k, true);
|
||||||
|
fprintf(stderr,"pressing copy key\n");
|
||||||
|
create_and_upload_keymap(k->code, k->code_mod);
|
||||||
|
zwp_virtual_keyboard_v1_modifiers(kb->vkbd, kb->mods, 0, 0, 0);
|
||||||
|
zwp_virtual_keyboard_v1_key(kb->vkbd, time, 127, //COMP key
|
||||||
|
WL_KEYBOARD_KEY_STATE_PRESSED);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (compose == 3) {
|
||||||
|
compose = 0;
|
||||||
|
kb->layout = kb->prevlayout;
|
||||||
|
kbd_draw_layout(kb);
|
||||||
|
}
|
||||||
|
|
||||||
kb->surf->dirty = true;
|
kb->surf->dirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,3 +303,5 @@ draw_inset(struct drwsurf *d, uint32_t x, uint32_t y, uint32_t width,
|
|||||||
wld_fill_rectangle(d->render, color, x + border, y + border, width - border,
|
wld_fill_rectangle(d->render, color, x + border, y + border, width - border,
|
||||||
height - border);
|
height - border);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
854
layout.mobile.h
854
layout.mobile.h
@ -16,28 +16,109 @@
|
|||||||
|
|
||||||
/* font (see `man fonts-conf` for instructions) */
|
/* font (see `man fonts-conf` for instructions) */
|
||||||
static const char *fc_font_pattern =
|
static const char *fc_font_pattern =
|
||||||
"FiraMono Nerd Font:size=16:antialias=true:hinting=true";
|
"Monospace:size=16:antialias=true:hinting=true";
|
||||||
|
|
||||||
/* layout declarations */
|
/* layout declarations */
|
||||||
enum layout_names {
|
enum layout_names {
|
||||||
Basic = 0,
|
Full = 0,
|
||||||
Special,
|
Special,
|
||||||
Simple,
|
Simple,
|
||||||
|
ComposeA,
|
||||||
|
ComposeE,
|
||||||
|
ComposeY,
|
||||||
|
ComposeU,
|
||||||
|
ComposeI,
|
||||||
|
ComposeO,
|
||||||
|
ComposeQ,
|
||||||
|
ComposeW,
|
||||||
|
ComposeR,
|
||||||
|
ComposeT,
|
||||||
|
ComposeP,
|
||||||
|
ComposeS,
|
||||||
|
ComposeD,
|
||||||
|
ComposeF,
|
||||||
|
ComposeG,
|
||||||
|
ComposeH,
|
||||||
|
ComposeJ,
|
||||||
|
ComposeK,
|
||||||
|
ComposeL,
|
||||||
|
ComposeZ,
|
||||||
|
ComposeX,
|
||||||
|
ComposeC,
|
||||||
|
ComposeV,
|
||||||
|
ComposeB,
|
||||||
|
ComposeN,
|
||||||
|
ComposeM,
|
||||||
NumLayouts,
|
NumLayouts,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct key keys_basic[], keys_special[], keys_simple[];
|
static struct key keys_full[], keys_special[], keys_simple[],
|
||||||
|
keys_compose_a[],
|
||||||
|
keys_compose_e[],
|
||||||
|
keys_compose_y[],
|
||||||
|
keys_compose_u[],
|
||||||
|
keys_compose_i[],
|
||||||
|
keys_compose_o[],
|
||||||
|
keys_compose_q[],
|
||||||
|
keys_compose_w[],
|
||||||
|
keys_compose_r[],
|
||||||
|
keys_compose_t[],
|
||||||
|
keys_compose_p[],
|
||||||
|
keys_compose_s[],
|
||||||
|
keys_compose_d[],
|
||||||
|
keys_compose_f[],
|
||||||
|
keys_compose_g[],
|
||||||
|
keys_compose_h[],
|
||||||
|
keys_compose_j[],
|
||||||
|
keys_compose_k[],
|
||||||
|
keys_compose_l[],
|
||||||
|
keys_compose_z[],
|
||||||
|
keys_compose_x[],
|
||||||
|
keys_compose_c[],
|
||||||
|
keys_compose_v[],
|
||||||
|
keys_compose_b[],
|
||||||
|
keys_compose_n[],
|
||||||
|
keys_compose_m[];
|
||||||
|
|
||||||
static struct layout layouts[NumLayouts] = {
|
static struct layout layouts[NumLayouts] = {
|
||||||
[Basic] = {keys_basic},
|
[Full] = {keys_full},
|
||||||
[Special] = {keys_special},
|
[Special] = {keys_special},
|
||||||
[Simple] = {keys_simple},
|
[Simple] = {keys_simple},
|
||||||
|
[ComposeA] = {keys_compose_a},
|
||||||
|
[ComposeE] = {keys_compose_e},
|
||||||
|
[ComposeY] = {keys_compose_y},
|
||||||
|
[ComposeU] = {keys_compose_u},
|
||||||
|
[ComposeI] = {keys_compose_i},
|
||||||
|
[ComposeO] = {keys_compose_o},
|
||||||
|
[ComposeQ] = {keys_compose_q},
|
||||||
|
[ComposeW] = {keys_compose_w},
|
||||||
|
[ComposeR] = {keys_compose_r},
|
||||||
|
[ComposeT] = {keys_compose_t},
|
||||||
|
[ComposeP] = {keys_compose_p},
|
||||||
|
[ComposeS] = {keys_compose_s},
|
||||||
|
[ComposeD] = {keys_compose_d},
|
||||||
|
[ComposeF] = {keys_compose_f},
|
||||||
|
[ComposeG] = {keys_compose_g},
|
||||||
|
[ComposeH] = {keys_compose_h},
|
||||||
|
[ComposeJ] = {keys_compose_j},
|
||||||
|
[ComposeK] = {keys_compose_k},
|
||||||
|
[ComposeL] = {keys_compose_l},
|
||||||
|
[ComposeZ] = {keys_compose_z},
|
||||||
|
[ComposeX] = {keys_compose_x},
|
||||||
|
[ComposeC] = {keys_compose_c},
|
||||||
|
[ComposeV] = {keys_compose_v},
|
||||||
|
[ComposeB] = {keys_compose_b},
|
||||||
|
[ComposeN] = {keys_compose_n},
|
||||||
|
[ComposeM] = {keys_compose_m},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const enum layout_names DefaultLayout = Full;
|
||||||
|
|
||||||
|
|
||||||
/* keyboard settings */
|
/* keyboard settings */
|
||||||
static struct kbd keyboard = {
|
static struct kbd keyboard = {
|
||||||
/* default layout */
|
/* default layout */
|
||||||
.layout = &layouts[Basic],
|
.layout = &layouts[DefaultLayout],
|
||||||
.scheme =
|
.scheme =
|
||||||
{
|
{
|
||||||
/* colors */
|
/* colors */
|
||||||
@ -76,17 +157,17 @@ static struct kbd keyboard = {
|
|||||||
*
|
*
|
||||||
* - layout: layout to switch to when key is pressed
|
* - layout: layout to switch to when key is pressed
|
||||||
*/
|
*/
|
||||||
static struct key keys_basic[] = {
|
static struct key keys_full[] = {
|
||||||
{"Esc", "Esc", 1.0, Code, KEY_ESC},
|
{"Esc", "Esc", 1.0, Code, KEY_ESC},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
{"Tab", "Tab", 1.0, Code, KEY_TAB},
|
{"Tab", "Tab", 1.0, Code, KEY_TAB},
|
||||||
{"↑", "↑", 1.0, Code, KEY_UP},
|
{"↑", "↑", 1.0, Code, KEY_UP},
|
||||||
{"↓", "↓", 1.0, Code, KEY_DOWN},
|
{"↓", "↓", 1.0, Code, KEY_DOWN},
|
||||||
{"←", "←", 1.0, Code, KEY_LEFT},
|
{"←", "←", 1.0, Code, KEY_LEFT},
|
||||||
{"→", "→", 1.0, Code, KEY_RIGHT},
|
{"→", "→", 1.0, Code, KEY_RIGHT},
|
||||||
{"'", "\"", 1.0, Code, KEY_APOSTROPHE},
|
{"'", "\"", 1.0, Code, KEY_APOSTROPHE},
|
||||||
{"/", "?", 1.0, Code, KEY_SLASH},
|
|
||||||
{";", ":", 1.0, Code, KEY_SEMICOLON},
|
{";", ":", 1.0, Code, KEY_SEMICOLON},
|
||||||
{"`", "~", 1.0, Code, KEY_GRAVE},
|
{"/", "?", 1.0, Code, KEY_SLASH},
|
||||||
{"", "", 0.0, EndRow},
|
{"", "", 0.0, EndRow},
|
||||||
|
|
||||||
{"1", "!", 1.0, Code, KEY_1},
|
{"1", "!", 1.0, Code, KEY_1},
|
||||||
@ -104,47 +185,47 @@ static struct key keys_basic[] = {
|
|||||||
{"", "", 0.0, EndRow},
|
{"", "", 0.0, EndRow},
|
||||||
|
|
||||||
{"", "", 0.5, Pad},
|
{"", "", 0.5, Pad},
|
||||||
{"q", "Q", 1.0, Code, KEY_Q},
|
{"q", "Q", 1.0, Code, KEY_Q, &layouts[ComposeQ]},
|
||||||
{"w", "W", 1.0, Code, KEY_W},
|
{"w", "W", 1.0, Code, KEY_W, &layouts[ComposeW]},
|
||||||
{"e", "E", 1.0, Code, KEY_E},
|
{"e", "E", 1.0, Code, KEY_E, &layouts[ComposeE]},
|
||||||
{"r", "R", 1.0, Code, KEY_R},
|
{"r", "R", 1.0, Code, KEY_R, &layouts[ComposeR]},
|
||||||
{"t", "T", 1.0, Code, KEY_T},
|
{"t", "T", 1.0, Code, KEY_T, &layouts[ComposeT]},
|
||||||
{"y", "Y", 1.0, Code, KEY_Y},
|
{"y", "Y", 1.0, Code, KEY_Y, &layouts[ComposeY]},
|
||||||
{"u", "U", 1.0, Code, KEY_U},
|
{"u", "U", 1.0, Code, KEY_U, &layouts[ComposeU]},
|
||||||
{"i", "I", 1.0, Code, KEY_I},
|
{"i", "I", 1.0, Code, KEY_I, &layouts[ComposeI]},
|
||||||
{"o", "O", 1.0, Code, KEY_O},
|
{"o", "O", 1.0, Code, KEY_O, &layouts[ComposeO]},
|
||||||
{"p", "P", 1.0, Code, KEY_P},
|
{"p", "P", 1.0, Code, KEY_P, &layouts[ComposeP]},
|
||||||
{"", "", 0.0, EndRow},
|
{"", "", 0.0, EndRow},
|
||||||
|
|
||||||
{"Ct", "Ct", 1.0, Mod, Ctrl},
|
{"Cmp", "Cmp", 1.0, Compose},
|
||||||
{"a", "A", 1.0, Code, KEY_A},
|
{"a", "A", 1.0, Code, KEY_A, &layouts[ComposeA]},
|
||||||
{"s", "S", 1.0, Code, KEY_S},
|
{"s", "S", 1.0, Code, KEY_S, &layouts[ComposeS]},
|
||||||
{"d", "D", 1.0, Code, KEY_D},
|
{"d", "D", 1.0, Code, KEY_D, &layouts[ComposeD]},
|
||||||
{"f", "F", 1.0, Code, KEY_F},
|
{"f", "F", 1.0, Code, KEY_F, &layouts[ComposeF]},
|
||||||
{"g", "G", 1.0, Code, KEY_G},
|
{"g", "G", 1.0, Code, KEY_G, &layouts[ComposeG]},
|
||||||
{"h", "H", 1.0, Code, KEY_H},
|
{"h", "H", 1.0, Code, KEY_H, &layouts[ComposeH]},
|
||||||
{"j", "J", 1.0, Code, KEY_J},
|
{"j", "J", 1.0, Code, KEY_J, &layouts[ComposeJ]},
|
||||||
{"k", "K", 1.0, Code, KEY_K},
|
{"k", "K", 1.0, Code, KEY_K, &layouts[ComposeK]},
|
||||||
{"l", "L", 1.0, Code, KEY_L},
|
{"l", "L", 1.0, Code, KEY_L, &layouts[ComposeL]},
|
||||||
{"", "", 0.5, Pad},
|
{"", "", 0.5, Pad},
|
||||||
{"", "", 0.0, EndRow},
|
{"", "", 0.0, EndRow},
|
||||||
|
|
||||||
{"⇧", "⇧", 1.5, Mod, Shift},
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
{"z", "Z", 1.0, Code, KEY_Z},
|
{"z", "Z", 1.0, Code, KEY_Z, &layouts[ComposeZ]},
|
||||||
{"x", "X", 1.0, Code, KEY_X},
|
{"x", "X", 1.0, Code, KEY_X, &layouts[ComposeX]},
|
||||||
{"c", "C", 1.0, Code, KEY_C},
|
{"c", "C", 1.0, Code, KEY_C, &layouts[ComposeC]},
|
||||||
{"v", "V", 1.0, Code, KEY_V},
|
{"v", "V", 1.0, Code, KEY_V, &layouts[ComposeV]},
|
||||||
{"b", "B", 1.0, Code, KEY_B},
|
{"b", "B", 1.0, Code, KEY_B, &layouts[ComposeB]},
|
||||||
{"n", "N", 1.0, Code, KEY_N},
|
{"n", "N", 1.0, Code, KEY_N, &layouts[ComposeN]},
|
||||||
{"m", "M", 1.0, Code, KEY_M},
|
{"m", "M", 1.0, Code, KEY_M, &layouts[ComposeM]},
|
||||||
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
{"", "", 0.0, EndRow},
|
{"", "", 0.0, EndRow},
|
||||||
|
|
||||||
{"Sym", "Sym", 1.0, Layout, 0, &layouts[Special]},
|
{"Sym", "Sym", 1.0, Layout, 0, &layouts[Special]},
|
||||||
{"Alt", "Alt", 1.0, Mod, AltGr},
|
{"Alt", "Alt", 1.0, Mod, Alt},
|
||||||
{",", "<", 1.0, Code, KEY_COMMA},
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
{"", "", 4.0, Code, KEY_SPACE},
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
{".", ">", 1.0, Code, KEY_DOT},
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
{"Entr", "Entr", 2.0, Code, KEY_ENTER},
|
{"Entr", "Entr", 2.0, Code, KEY_ENTER},
|
||||||
|
|
||||||
|
|
||||||
@ -154,6 +235,7 @@ static struct key keys_basic[] = {
|
|||||||
|
|
||||||
static struct key keys_special[] = {
|
static struct key keys_special[] = {
|
||||||
{"Esc", "Esc", 1.0, Code, KEY_ESC},
|
{"Esc", "Esc", 1.0, Code, KEY_ESC},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
{"Tab", "Tab", 1.0, Code, KEY_TAB},
|
{"Tab", "Tab", 1.0, Code, KEY_TAB},
|
||||||
{"↑", "↑", 1.0, Code, KEY_UP},
|
{"↑", "↑", 1.0, Code, KEY_UP},
|
||||||
{"↓", "↓", 1.0, Code, KEY_DOWN},
|
{"↓", "↓", 1.0, Code, KEY_DOWN},
|
||||||
@ -177,19 +259,8 @@ static struct key keys_special[] = {
|
|||||||
{"0", ")", 1.0, Code, KEY_0},
|
{"0", ")", 1.0, Code, KEY_0},
|
||||||
{"", "", 0.0, EndRow},
|
{"", "", 0.0, EndRow},
|
||||||
|
|
||||||
{"", "", 1.0, Pad},
|
{"Caps", "Caps", 1.0, Mod, CapsLock},
|
||||||
{"", "", 1.0, Pad},
|
{"Sup", "Sup", 1.0, Mod, Super},
|
||||||
{"", "", 1.0, Pad},
|
|
||||||
{"", "", 1.0, Pad},
|
|
||||||
{"", "", 1.0, Pad},
|
|
||||||
{"", "", 1.0, Pad},
|
|
||||||
{"", "", 1.0, Pad},
|
|
||||||
{"", "", 1.0, Pad},
|
|
||||||
{"", "", 1.0, Pad},
|
|
||||||
{"", "", 1.0, Pad},
|
|
||||||
{"", "", 0.0, EndRow},
|
|
||||||
|
|
||||||
{"Ct", "Ct", 2.0, Mod, Ctrl},
|
|
||||||
{"`", "~", 1.0, Code, KEY_GRAVE},
|
{"`", "~", 1.0, Code, KEY_GRAVE},
|
||||||
{"'", "\"", 1.0, Code, KEY_APOSTROPHE},
|
{"'", "\"", 1.0, Code, KEY_APOSTROPHE},
|
||||||
{"-", "_", 1.0, Code, KEY_MINUS},
|
{"-", "_", 1.0, Code, KEY_MINUS},
|
||||||
@ -203,19 +274,19 @@ static struct key keys_special[] = {
|
|||||||
{"⇧", "⇧", 2.0, Mod, Shift},
|
{"⇧", "⇧", 2.0, Mod, Shift},
|
||||||
{";", ":", 1.0, Code, KEY_SEMICOLON},
|
{";", ":", 1.0, Code, KEY_SEMICOLON},
|
||||||
{"/", "?", 1.0, Code, KEY_SLASH},
|
{"/", "?", 1.0, Code, KEY_SLASH},
|
||||||
|
{"<", "«", 1.0, CodeMod, KEY_COMMA, 0, AltGr},
|
||||||
|
{">", "»", 1.0, CodeMod, KEY_DOT, 0, AltGr},
|
||||||
|
{"¡", "¿", 1.0, Code, KEY_MENU},
|
||||||
{"", "", 1.0, Pad},
|
{"", "", 1.0, Pad},
|
||||||
{"", "", 1.0, Pad},
|
{"AGr", "AGr", 1.0, Mod, AltGr},
|
||||||
{"", "", 1.0, Pad},
|
|
||||||
{"", "", 1.0, Pad},
|
|
||||||
{"", "", 1.0, Pad},
|
|
||||||
{"⌫", "⌫", 1.0, Code, KEY_BACKSPACE},
|
{"⌫", "⌫", 1.0, Code, KEY_BACKSPACE},
|
||||||
{"", "", 0.0, EndRow},
|
{"", "", 0.0, EndRow},
|
||||||
|
|
||||||
{"Abc", "Abc", 1.0, Layout, 0, &layouts[Simple]},
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[(DefaultLayout == Simple) ? Full : Simple] },
|
||||||
{"Alt", "Alt", 1.0, Mod, AltGr},
|
{"Alt", "Alt", 1.0, Mod, Alt},
|
||||||
{",", "<", 1.0, Code, KEY_COMMA},
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
{"", "", 4.0, Code, KEY_SPACE},
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
{".", ">", 1.0, Code, KEY_DOT},
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
{"Entr", "Entr", 2.0, Code, KEY_ENTER},
|
{"Entr", "Entr", 2.0, Code, KEY_ENTER},
|
||||||
|
|
||||||
/* end of layout */
|
/* end of layout */
|
||||||
@ -224,47 +295,47 @@ static struct key keys_special[] = {
|
|||||||
|
|
||||||
static struct key keys_simple[] = {
|
static struct key keys_simple[] = {
|
||||||
{"", "", 0.5, Pad},
|
{"", "", 0.5, Pad},
|
||||||
{"q", "Q", 1.0, Code, KEY_Q},
|
{"q", "Q", 1.0, Code, KEY_Q, &layouts[ComposeQ]},
|
||||||
{"w", "W", 1.0, Code, KEY_W},
|
{"w", "W", 1.0, Code, KEY_W, &layouts[ComposeW]},
|
||||||
{"e", "E", 1.0, Code, KEY_E},
|
{"e", "E", 1.0, Code, KEY_E, &layouts[ComposeE]},
|
||||||
{"r", "R", 1.0, Code, KEY_R},
|
{"r", "R", 1.0, Code, KEY_R, &layouts[ComposeR]},
|
||||||
{"t", "T", 1.0, Code, KEY_T},
|
{"t", "T", 1.0, Code, KEY_T, &layouts[ComposeT]},
|
||||||
{"y", "Y", 1.0, Code, KEY_Y},
|
{"y", "Y", 1.0, Code, KEY_Y, &layouts[ComposeY]},
|
||||||
{"u", "U", 1.0, Code, KEY_U},
|
{"u", "U", 1.0, Code, KEY_U, &layouts[ComposeU]},
|
||||||
{"i", "I", 1.0, Code, KEY_I},
|
{"i", "I", 1.0, Code, KEY_I, &layouts[ComposeI]},
|
||||||
{"o", "O", 1.0, Code, KEY_O},
|
{"o", "O", 1.0, Code, KEY_O, &layouts[ComposeO]},
|
||||||
{"p", "P", 1.0, Code, KEY_P},
|
{"p", "P", 1.0, Code, KEY_P, &layouts[ComposeP]},
|
||||||
{"", "", 0.0, EndRow},
|
{"", "", 0.0, EndRow},
|
||||||
|
|
||||||
{"Ct", "Ct", 1.0, Mod, Ctrl},
|
{"Cmp", "Cmp", 1.0, Compose},
|
||||||
{"a", "A", 1.0, Code, KEY_A},
|
{"a", "A", 1.0, Code, KEY_A, &layouts[ComposeA]},
|
||||||
{"s", "S", 1.0, Code, KEY_S},
|
{"s", "S", 1.0, Code, KEY_S, &layouts[ComposeS]},
|
||||||
{"d", "D", 1.0, Code, KEY_D},
|
{"d", "D", 1.0, Code, KEY_D, &layouts[ComposeD]},
|
||||||
{"f", "F", 1.0, Code, KEY_F},
|
{"f", "F", 1.0, Code, KEY_F, &layouts[ComposeF]},
|
||||||
{"g", "G", 1.0, Code, KEY_G},
|
{"g", "G", 1.0, Code, KEY_G, &layouts[ComposeG]},
|
||||||
{"h", "H", 1.0, Code, KEY_H},
|
{"h", "H", 1.0, Code, KEY_H, &layouts[ComposeH]},
|
||||||
{"j", "J", 1.0, Code, KEY_J},
|
{"j", "J", 1.0, Code, KEY_J, &layouts[ComposeJ]},
|
||||||
{"k", "K", 1.0, Code, KEY_K},
|
{"k", "K", 1.0, Code, KEY_K, &layouts[ComposeK]},
|
||||||
{"l", "L", 1.0, Code, KEY_L},
|
{"l", "L", 1.0, Code, KEY_L, &layouts[ComposeL]},
|
||||||
{"", "", 0.5, Pad},
|
{"", "", 0.5, Pad},
|
||||||
{"", "", 0.0, EndRow},
|
{"", "", 0.0, EndRow},
|
||||||
|
|
||||||
{"⇧", "⇧", 1.5, Mod, Shift},
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
{"z", "Z", 1.0, Code, KEY_Z},
|
{"z", "Z", 1.0, Code, KEY_Z, &layouts[ComposeZ]},
|
||||||
{"x", "X", 1.0, Code, KEY_X},
|
{"x", "X", 1.0, Code, KEY_X, &layouts[ComposeX]},
|
||||||
{"c", "C", 1.0, Code, KEY_C},
|
{"c", "C", 1.0, Code, KEY_C, &layouts[ComposeC]},
|
||||||
{"v", "V", 1.0, Code, KEY_V},
|
{"v", "V", 1.0, Code, KEY_V, &layouts[ComposeV]},
|
||||||
{"b", "B", 1.0, Code, KEY_B},
|
{"b", "B", 1.0, Code, KEY_B, &layouts[ComposeB]},
|
||||||
{"n", "N", 1.0, Code, KEY_N},
|
{"n", "N", 1.0, Code, KEY_N, &layouts[ComposeN]},
|
||||||
{"m", "M", 1.0, Code, KEY_M},
|
{"m", "M", 1.0, Code, KEY_M, &layouts[ComposeM]},
|
||||||
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
{"", "", 0.0, EndRow},
|
{"", "", 0.0, EndRow},
|
||||||
|
|
||||||
{"Abc", "Abc", 1.0, Layout, 0, &layouts[Basic]},
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[(DefaultLayout == Simple) ? Special : DefaultLayout] },
|
||||||
{"Alt", "Alt", 1.0, Mod, AltGr},
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
{",", "<", 1.0, Code, KEY_COMMA},
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
{"", "", 4.0, Code, KEY_SPACE},
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
{".", ">", 1.0, Code, KEY_DOT},
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
{"Entr", "Entr", 2.0, Code, KEY_ENTER},
|
{"Entr", "Entr", 2.0, Code, KEY_ENTER},
|
||||||
|
|
||||||
|
|
||||||
@ -272,3 +343,606 @@ static struct key keys_simple[] = {
|
|||||||
{"", "", 0.0, Last},
|
{"", "", 0.0, Last},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_a[] = {
|
||||||
|
{"à", "À", 1.0, Copy, 0x00E0, 0, 0x00C0},
|
||||||
|
{"á", "Á", 1.0, Copy, 0x00E1, 0, 0x00C1},
|
||||||
|
{"â", "Â", 1.0, Copy, 0x00E2, 0, 0x00C2},
|
||||||
|
{"ã", "Ã", 1.0, Copy, 0x00E3, 0, 0x00C3},
|
||||||
|
{"ä", "Ä", 1.0, Copy, 0x00E4, 0, 0x00C4},
|
||||||
|
{"å", "Å", 1.0, Copy, 0x00E5, 0, 0x00C5},
|
||||||
|
{"æ", "Æ", 1.0, Copy, 0x00E5, 0, 0x00C6},
|
||||||
|
{"ā", "Ā", 1.0, Copy, 0x0101, 0, 0x0100},
|
||||||
|
{"ă", "Ă", 1.0, Copy, 0x0103, 0, 0x0102},
|
||||||
|
{"ą", "Ą", 1.0, Copy, 0x0105, 0, 0x0104},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"α", "Α", 1.0, Copy, 0x03B1, 0, 0x0391},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_e[] = {
|
||||||
|
{"è", "È", 1.0, Copy, 0x00E8, 0, 0x00C8},
|
||||||
|
{"é", "É", 1.0, Copy, 0x00E9, 0, 0x00C9},
|
||||||
|
{"ê", "Ê", 1.0, Copy, 0x00EA, 0, 0x00CA},
|
||||||
|
{"ë", "Ë", 1.0, Copy, 0x00EB, 0, 0x00CB},
|
||||||
|
{"ē", "Ē", 1.0, Copy, 0x0113, 0, 0x0112},
|
||||||
|
{"ĕ", "Ĕ", 1.0, Copy, 0x0115, 0, 0x0114},
|
||||||
|
{"ė", "Ė", 1.0, Copy, 0x0117, 0, 0x0116},
|
||||||
|
{"ę", "Ę", 1.0, Copy, 0x0119, 0, 0x0118},
|
||||||
|
{"ě", "Ě", 1.0, Copy, 0x011B, 0, 0x011A},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"ε", "Ε", 1.0, Copy, 0x03B5, 0, 0x0395},
|
||||||
|
{"ǝ", "Ə", 1.0, Copy, 0x0259, 0, 0x018F},
|
||||||
|
{"", "", 8.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_y[] = {
|
||||||
|
{"ý", "Ý", 1.0, Copy, 0x00FD, 0, 0x00DD},
|
||||||
|
{"ÿ", "Ÿ", 1.0, Copy, 0x00FF, 0, 0x0178},
|
||||||
|
{"ŷ", "Ŷ", 1.0, Copy, 0x0177, 0, 0x0176},
|
||||||
|
{"", "", 7.0, Pad},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"υ", "Υ", 1.0, Copy, 0x03C5, 0, 0x03A5},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_u[] = {
|
||||||
|
{"ù", "Ù", 1.0, Copy, 0x00F9, 0, 0x00D9},
|
||||||
|
{"ú", "Ú", 1.0, Copy, 0x00FA, 0, 0x00DA},
|
||||||
|
{"û", "Û", 1.0, Copy, 0x00FB, 0, 0x00DB},
|
||||||
|
{"ü", "Ü", 1.0, Copy, 0x00FC, 0, 0x00DC},
|
||||||
|
{"ũ", "Ũ", 1.0, Copy, 0x0169, 0, 0x0168},
|
||||||
|
{"ū", "Ū", 1.0, Copy, 0x016B, 0, 0x016A},
|
||||||
|
{"ŭ", "Ŭ", 1.0, Copy, 0x016D, 0, 0x016C},
|
||||||
|
{"ů", "Ů", 1.0, Copy, 0x016F, 0, 0x016E},
|
||||||
|
{"ű", "Ű", 1.0, Copy, 0x0171, 0, 0x0170},
|
||||||
|
{"ų", "Ų", 1.0, Copy, 0x0172, 0, 0x0173},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"υ", "Υ", 1.0, Copy, 0x03C5, 0, 0x03A5},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_o[] = {
|
||||||
|
{"ò", "Ò", 1.0, Copy, 0x00F2, 0, 0x00D2},
|
||||||
|
{"ó", "Ó", 1.0, Copy, 0x00F3, 0, 0x00D3},
|
||||||
|
{"ô", "Ô", 1.0, Copy, 0x00F4, 0, 0x00D4},
|
||||||
|
{"õ", "Õ", 1.0, Copy, 0x00F5, 0, 0x00D5},
|
||||||
|
{"ø", "Ø", 1.0, Copy, 0x00F8, 0, 0x00D8},
|
||||||
|
{"ō", "Ō", 1.0, Copy, 0x014D, 0, 0x014C},
|
||||||
|
{"ŏ", "Ŏ", 1.0, Copy, 0x014F, 0, 0x014E},
|
||||||
|
{"ő", "Ő", 1.0, Copy, 0x0150, 0, 0x0151},
|
||||||
|
{"œ", "Œ", 1.0, Copy, 0x0153, 0, 0x0152},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"ο", "Ο", 1.0, Copy, 0x03BF, 0, 0x039F},
|
||||||
|
{"ω", "Ο", 1.0, Copy, 0x03C9, 0, 0x03A9},
|
||||||
|
{"", "", 8.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_i[] = {
|
||||||
|
{"ì", "Ì", 1.0, Copy, 0x00EC, 0, 0x00CC},
|
||||||
|
{"í", "Í", 1.0, Copy, 0x00ED, 0, 0x00CD},
|
||||||
|
{"î", "Î", 1.0, Copy, 0x00EE, 0, 0x00CE},
|
||||||
|
{"ï", "Ï", 1.0, Copy, 0x00EF, 0, 0x00CF},
|
||||||
|
{"ĩ", "Ĩ", 1.0, Copy, 0x0129, 0, 0x0128},
|
||||||
|
{"ī", "Ī", 1.0, Copy, 0x012B, 0, 0x012A},
|
||||||
|
{"ĭ", "Ĭ", 1.0, Copy, 0x012D, 0, 0x012C},
|
||||||
|
{"į", "Į", 1.0, Copy, 0x012F, 0, 0x012E},
|
||||||
|
{"ı", "I", 1.0, Copy, 0x0150, 0, 0x0049},
|
||||||
|
{"i","İ", 1.0, Copy, 0x0069, 0, 0x0152},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"ι", "Ι", 1.0, Copy, 0x03B9, 0, 0x0399},
|
||||||
|
{"η", "Η", 1.0, Copy, 0x03B7, 0, 0x0397},
|
||||||
|
{"", "", 8.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_q[] = {
|
||||||
|
{ "🙂", "", 1.0, Copy, 0x101f642, 0, 0 }, //Emojis
|
||||||
|
{ "😀", "", 1.0, Copy, 0x101f600, 0, 0 },
|
||||||
|
{ "😁", "", 1.0, Copy, 0x101f601, 0, 0 },
|
||||||
|
{ "😂", "", 1.0, Copy, 0x101f602, 0, 0 },
|
||||||
|
{ "😃", "", 1.0, Copy, 0x101f603, 0, 0 },
|
||||||
|
{ "😄", "", 1.0, Copy, 0x101f604, 0, 0 },
|
||||||
|
{ "😅", "", 1.0, Copy, 0x101f605, 0, 0 },
|
||||||
|
{ "😆", "", 1.0, Copy, 0x101f606, 0, 0 },
|
||||||
|
{ "😇", "", 1.0, Copy, 0x101f607, 0, 0 },
|
||||||
|
{ "😈", "", 1.0, Copy, 0x101f608, 0, 0 },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{ "😉", "", 1.0, Copy, 0x101f609, 0, 0 },
|
||||||
|
{ "😊", "", 1.0, Copy, 0x101f60a, 0, 0 },
|
||||||
|
{ "😋", "", 1.0, Copy, 0x101f60b, 0, 0 },
|
||||||
|
{ "😌", "", 1.0, Copy, 0x101f60c, 0, 0 },
|
||||||
|
{ "😍", "", 1.0, Copy, 0x101f60d, 0, 0 },
|
||||||
|
{ "😎", "", 1.0, Copy, 0x101f60e, 0, 0 },
|
||||||
|
{ "😏", "", 1.0, Copy, 0x101f60f, 0, 0 },
|
||||||
|
{ "😐", "", 1.0, Copy, 0x101f610, 0, 0 },
|
||||||
|
{ "😒", "", 1.0, Copy, 0x101f612, 0, 0 },
|
||||||
|
{ "😓", "", 1.0, Copy, 0x101f613, 0, 0 },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{ "😛", "", 1.0, Copy, 0x101f61b, 0, 0 },
|
||||||
|
{ "😮", "", 1.0, Copy, 0x101f62e, 0, 0 },
|
||||||
|
{ "😟", "", 1.0, Copy, 0x101f61f, 0, 0 },
|
||||||
|
{ "😟", "", 1.0, Copy, 0x101f620, 0, 0 },
|
||||||
|
{ "😢", "", 1.0, Copy, 0x101f622, 0, 0 },
|
||||||
|
{ "😭", "", 1.0, Copy, 0x101f62d, 0, 0 },
|
||||||
|
{ "😳", "", 1.0, Copy, 0x101f633, 0, 0 },
|
||||||
|
{ "😴", "", 1.0, Copy, 0x101f634, 0, 0 },
|
||||||
|
{"⌫", "⌫", 2.0, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 5.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static struct key keys_compose_w[] = {
|
||||||
|
{"ŵ", "Ŵ", 1.0, Copy, 0x0175, 0, 0x0174},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_r[] = {
|
||||||
|
{"ŕ", "Ŕ", 1.0, Copy, 0x0155, 0, 0x0154},
|
||||||
|
{"ŗ", "Ŗ", 1.0, Copy, 0x0157, 0, 0x0156},
|
||||||
|
{"ř", "Ř", 1.0, Copy, 0x0159, 0, 0x0158},
|
||||||
|
{"", "", 7.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"ρ", "Ρ", 1.0, Copy, 0x03C1, 0, 0x03A1},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_t[] = {
|
||||||
|
{"ț", "Ț", 1.0, Copy, 0x021B, 0, 0x021A},
|
||||||
|
{"ť", "Ť", 1.0, Copy, 0x0165, 0, 0x0164},
|
||||||
|
{"ŧ", "Ŧ", 1.0, Copy, 0x0167, 0, 0x0166},
|
||||||
|
{"þ", "Þ", 1.0, Copy, 0x00FE, 0, 0x00DE},
|
||||||
|
{"", "", 6.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"τ", "Τ", 1.0, Copy, 0x03C4, 0, 0x03A4},
|
||||||
|
{"θ", "Θ", 1.0, Copy, 0x03B8, 0, 0x0398},
|
||||||
|
{"", "", 8.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_p[] = {
|
||||||
|
{"", "", 10.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"π", "Π", 1.0, Copy, 0x03C0, 0, 0x03A0},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static struct key keys_compose_s[] = {
|
||||||
|
{"ś", "Ś", 1.0, Copy, 0x015B, 0, 0x015A},
|
||||||
|
{"ŝ", "Ŝ", 1.0, Copy, 0x015D, 0, 0x015C},
|
||||||
|
{"ş", "Ş", 1.0, Copy, 0x015F, 0, 0x015E},
|
||||||
|
{"š", "Š", 1.0, Copy, 0x0161, 0, 0x0160},
|
||||||
|
{"ß", "ẞ", 1.0, Copy, 0x00DF, 0, 0x1E9E},
|
||||||
|
{"", "", 5.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"σ", "Σ", 1.0, Copy, 0x03C3, 0, 0x03A3},
|
||||||
|
{"ς", "Σ", 1.0, Copy, 0x03C2, 0, 0x03A3},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_d[] = {
|
||||||
|
{"ð", "Ð", 1.0, Copy, 0x00F0, 0, 0x00D0},
|
||||||
|
{"ď", "Ď", 1.0, Copy, 0x010F, 0, 0x010E},
|
||||||
|
{"đ", "Đ", 1.0, Copy, 0x0111, 0, 0x0110},
|
||||||
|
{"", "", 7.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"δ", "Δ", 1.0, Copy, 0x03B4, 0, 0x0394},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_f[] = {
|
||||||
|
{"", "", 10.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"φ", "Φ", 1.0, Copy, 0x03C6, 0, 0x03A6},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_g[] = {
|
||||||
|
{"ĝ", "Ĝ", 1.0, Copy, 0x011D, 0, 0x011C},
|
||||||
|
{"ğ", "Ğ", 1.0, Copy, 0x011F, 0, 0x011E},
|
||||||
|
{"", "", 8.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"γ", "Γ", 1.0, Copy, 0x03B3, 0, 0x0393},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_h[] = {
|
||||||
|
{"ĥ", "Ĥ", 1.0, Copy, 0x0125, 0, 0x0124},
|
||||||
|
{"ħ", "Ħ", 1.0, Copy, 0x0127, 0, 0x0126},
|
||||||
|
{"", "", 8.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"η", "Η", 1.0, Copy, 0x03B7, 0, 0x0397},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_j[] = {
|
||||||
|
{"ĵ", "Ĵ", 1.0, Copy, 0x0135, 0, 0x0134},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"", "", 10.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_k[] = {
|
||||||
|
{"ķ", "Ķ", 1.0, Copy, 0x0137, 0, 0x0136},
|
||||||
|
{"ǩ", "Ǩ", 1.0, Copy, 0x01E9, 0, 0x01E8},
|
||||||
|
{"", "", 8.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"κ", "Κ", 1.0, Copy, 0x03BA, 0, 0x039A},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_l[] = {
|
||||||
|
{"ľ", "Ľ", 1.0, Copy, 0x013D, 0, 0x013E},
|
||||||
|
{"ŀ", "Ŀ", 1.0, Copy, 0x0140, 0, 0x013F},
|
||||||
|
{"ł", "Ł", 1.0, Copy, 0x0142, 0, 0x0141},
|
||||||
|
{"", "", 7.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"λ", "Λ", 1.0, Copy, 0x03BB, 0, 0x039B},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_z[] = {
|
||||||
|
{"ź", "Ź", 1.0, Copy, 0x017A, 0, 0x0179},
|
||||||
|
{"ż", "Ż", 1.0, Copy, 0x017C, 0, 0x017B},
|
||||||
|
{"ž", "Ž", 1.0, Copy, 0x017E, 0, 0x017D},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"ζ", "Ζ", 1.0, Copy, 0x03B6, 0, 0x0396},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_x[] = {
|
||||||
|
{"", "", 10.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"χ", "Χ", 1.0, Copy, 0x03C7, 0, 0x03A7},
|
||||||
|
{"ξ", "Ξ", 1.0, Copy, 0x03BE, 0, 0x039E},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_c[] = {
|
||||||
|
{"ç", "Ç", 1.0, Copy, 0x00E7, 0, 0x00C7},
|
||||||
|
{"ć", "Ć", 1.0, Copy, 0x0107, 0, 0x0106},
|
||||||
|
{"ĉ", "Ĉ", 1.0, Copy, 0x0109, 0, 0x0108},
|
||||||
|
{"ċ", "Ċ", 1.0, Copy, 0x010B, 0, 0x010A},
|
||||||
|
{"č", "Č", 1.0, Copy, 0x010D, 0, 0x010C},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"χ", "Χ", 1.0, Copy, 0x03C7, 0, 0x03A7},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_v[] = {
|
||||||
|
{"", "", 10.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"", "", 10.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_b[] = {
|
||||||
|
{"", "", 10.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"β", "Β", 1.0, Copy, 0x03B2, 0, 0x0392},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_n[] = {
|
||||||
|
{"ñ", "Ñ", 1.0, Copy, 0x00F1, 0, 0x00D1},
|
||||||
|
{"ń", "Ń", 1.0, Copy, 0x0144, 0, 0x0143},
|
||||||
|
{"ņ", "Ņ", 1.0, Copy, 0x0146, 0, 0x0145},
|
||||||
|
{"ň", "Ň", 1.0, Copy, 0x0148, 0, 0x0147},
|
||||||
|
{"ŋ", "Ŋ", 1.0, Copy, 0x014B, 0, 0x014A},
|
||||||
|
{"", "", 5.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"ν", "Ν", 1.0, Copy, 0x03BD, 0, 0x039D},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct key keys_compose_m[] = {
|
||||||
|
{"", "", 10.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"μ", "Μ", 1.0, Copy, 0x03BC, 0, 0x039C},
|
||||||
|
{"", "", 9.0, Pad },
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"⇧", "⇧", 1.5, Mod, Shift},
|
||||||
|
{"", "", 7, Pad},
|
||||||
|
{"⌫", "⌫", 1.5, Code, KEY_BACKSPACE},
|
||||||
|
{"", "", 0.0, EndRow},
|
||||||
|
{"Abc", "Abc", 1.0, Layout, 0, &layouts[DefaultLayout]},
|
||||||
|
{"Ctr", "Ctr", 1.0, Mod, Ctrl},
|
||||||
|
{",", "'", 1.0, Code, KEY_COMMA},
|
||||||
|
{"", "", 4.0, Code, KEY_SPACE},
|
||||||
|
{".", "?", 1.0, Code, KEY_DOT},
|
||||||
|
{"Enter", "Enter", 2.0, Code, KEY_ENTER},
|
||||||
|
{"", "", 0.0, Last},
|
||||||
|
};
|
||||||
|
34
main.c
34
main.c
@ -6,6 +6,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <wchar.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <wayland-client.h>
|
#include <wayland-client.h>
|
||||||
|
|
||||||
@ -46,6 +47,7 @@ static uint32_t anchor = ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM |
|
|||||||
/* application state */
|
/* application state */
|
||||||
static bool run_display = true;
|
static bool run_display = true;
|
||||||
static int cur_x = -1, cur_y = -1;
|
static int cur_x = -1, cur_y = -1;
|
||||||
|
static int compose = 0;
|
||||||
|
|
||||||
/* event handler prototypes */
|
/* event handler prototypes */
|
||||||
static void wl_pointer_enter(void *data, struct wl_pointer *wl_pointer,
|
static void wl_pointer_enter(void *data, struct wl_pointer *wl_pointer,
|
||||||
@ -92,6 +94,7 @@ static void layer_surface_configure(void *data,
|
|||||||
uint32_t serial, uint32_t w, uint32_t h);
|
uint32_t serial, uint32_t w, uint32_t h);
|
||||||
static void layer_surface_closed(void *data,
|
static void layer_surface_closed(void *data,
|
||||||
struct zwlr_layer_surface_v1 *surface);
|
struct zwlr_layer_surface_v1 *surface);
|
||||||
|
static void create_and_upload_keymap(uint32_t comp_unichr, uint32_t comp_shift_unichr);
|
||||||
|
|
||||||
/* event handlers */
|
/* event handlers */
|
||||||
static const struct wl_pointer_listener pointer_listener = {
|
static const struct wl_pointer_listener pointer_listener = {
|
||||||
@ -273,10 +276,27 @@ layer_surface_closed(void *data, struct zwlr_layer_surface_v1 *surface) {
|
|||||||
run_display = false;
|
run_display = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
create_and_upload_keymap(uint32_t comp_unichr, uint32_t comp_shift_unichr) {
|
||||||
|
const char * keymap_str = get_keymap(comp_unichr, comp_shift_unichr);
|
||||||
|
size_t keymap_size = strlen(keymap_str) + 1;
|
||||||
|
int keymap_fd = os_create_anonymous_file(keymap_size);
|
||||||
|
if (keymap_fd < 0) {
|
||||||
|
die("could not create keymap fd\n");
|
||||||
|
}
|
||||||
|
void *ptr =
|
||||||
|
mmap(NULL, keymap_size, PROT_READ | PROT_WRITE, MAP_SHARED, keymap_fd, 0);
|
||||||
|
if (ptr == (void *)-1) {
|
||||||
|
die("could not map keymap data\n");
|
||||||
|
}
|
||||||
|
strcpy(ptr, keymap_str);
|
||||||
|
zwp_virtual_keyboard_v1_keymap(
|
||||||
|
keyboard.vkbd, WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1, keymap_fd, keymap_size);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char **argv) {
|
main(int argc, char **argv) {
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
int keymap_fd = os_create_anonymous_file(keymap_size);
|
|
||||||
|
|
||||||
/* connect to compositor */
|
/* connect to compositor */
|
||||||
display = wl_display_connect(NULL);
|
display = wl_display_connect(NULL);
|
||||||
@ -307,17 +327,7 @@ main(int argc, char **argv) {
|
|||||||
zwp_virtual_keyboard_manager_v1_create_virtual_keyboard(vkbd_mgr, seat);
|
zwp_virtual_keyboard_manager_v1_create_virtual_keyboard(vkbd_mgr, seat);
|
||||||
|
|
||||||
/* upload keymap */
|
/* upload keymap */
|
||||||
if (keymap_fd < 0) {
|
create_and_upload_keymap(0,0);
|
||||||
die("could not create keymap fd\n");
|
|
||||||
}
|
|
||||||
void *ptr =
|
|
||||||
mmap(NULL, keymap_size, PROT_READ | PROT_WRITE, MAP_SHARED, keymap_fd, 0);
|
|
||||||
if (ptr == (void *)-1) {
|
|
||||||
die("could not map keymap data\n");
|
|
||||||
}
|
|
||||||
strcpy(ptr, keymap_str);
|
|
||||||
zwp_virtual_keyboard_v1_keymap(
|
|
||||||
keyboard.vkbd, WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1, keymap_fd, keymap_size);
|
|
||||||
|
|
||||||
/* assign kbd state */
|
/* assign kbd state */
|
||||||
keyboard.surf = &draw_surf;
|
keyboard.surf = &draw_surf;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user