Try using a custom keymap

This commit is contained in:
David Boddie
2019-07-14 20:40:26 +00:00
parent fbdc5f4a93
commit 839968dc84
2 changed files with 285 additions and 3 deletions

View File

@ -30,6 +30,7 @@
#endif /* HAVE_CONFIG_H */
#include "eekboard/eekboard-context-service.h"
#include "keymap.h"
#include <fcntl.h>
#include <stdio.h>
@ -148,16 +149,16 @@ eekboard_context_service_real_create_keyboard (EekboardContextService *self,
struct xkb_rule_names rules = { 0 };
rules.layout = strdup(keyboard_type);
struct xkb_keymap *keymap = xkb_keymap_new_from_names(context, &rules,
XKB_KEYMAP_COMPILE_NO_FLAGS);
struct xkb_keymap *keymap = xkb_keymap_new_from_string(context, default_keymap,
XKB_KEYMAP_FORMAT_TEXT_V1, XKB_KEYMAP_COMPILE_NO_FLAGS);
xkb_context_unref(context);
if (!keymap) {
g_error("Bad keymap");
}
keyboard->keymap = keymap;
char *keymap_str = xkb_keymap_get_as_string(keymap, XKB_KEYMAP_FORMAT_TEXT_V1);
g_debug("%s", keymap_str);
keyboard->keymap_len = strlen(keymap_str) + 1;
g_autofree char *path = strdup("/eek_keymap-XXXXXX");
char *r = &path[strlen(path) - 6];
getrandom(r, 6, GRND_NONBLOCK);

View File

@ -6,3 +6,284 @@ squeek_keymap_get_entries_for_keyval (struct xkb_keymap *xkb_keymap,
guint keyval,
GdkKeymapKey **keys,
guint *n_keys);
static const char default_keymap[] = "xkb_keymap {\
\
xkb_keycodes \"squeekboard\" {\
minimum = 8;\
maximum = 255;\
<ESC> = 9;\
<AE01> = 10;\
<AE02> = 11;\
<AE03> = 12;\
<AE04> = 13;\
<AE05> = 14;\
<AE06> = 15;\
<AE07> = 16;\
<AE08> = 17;\
<AE09> = 18;\
<AE10> = 19;\
<AE11> = 20;\
<AE12> = 21;\
<BKSP> = 22;\
<TAB> = 23;\
<AD01> = 24;\
<AD02> = 25;\
<AD03> = 26;\
<AD04> = 27;\
<AD05> = 28;\
<AD06> = 29;\
<AD07> = 30;\
<AD08> = 31;\
<AD09> = 32;\
<AD10> = 33;\
<AD11> = 34;\
<AD12> = 35;\
<RTRN> = 36;\
<LCTL> = 37;\
<AC01> = 38;\
<AC02> = 39;\
<AC03> = 40;\
<AC04> = 41;\
<AC05> = 42;\
<AC06> = 43;\
<AC07> = 44;\
<AC08> = 45;\
<AC09> = 46;\
<AC10> = 47;\
<AC11> = 48;\
<TLDE> = 49;\
<LFSH> = 50;\
<BKSL> = 51;\
<AB01> = 52;\
<AB02> = 53;\
<AB03> = 54;\
<AB04> = 55;\
<AB05> = 56;\
<AB06> = 57;\
<AB07> = 58;\
<AB08> = 59;\
<AB09> = 60;\
<AB10> = 61;\
<RTSH> = 62;\
<KPMU> = 63;\
<LALT> = 64;\
<SPCE> = 65;\
<CAPS> = 66;\
<FK01> = 67;\
<FK02> = 68;\
<FK03> = 69;\
<FK04> = 70;\
<FK05> = 71;\
<FK06> = 72;\
<FK07> = 73;\
<FK08> = 74;\
<FK09> = 75;\
<FK10> = 76;\
<NMLK> = 77;\
<SCLK> = 78;\
<KP7> = 79;\
<KP8> = 80;\
<KP9> = 81;\
<KPSU> = 82;\
<KP4> = 83;\
<KP5> = 84;\
<KP6> = 85;\
<KPAD> = 86;\
<KP1> = 87;\
<KP2> = 88;\
<KP3> = 89;\
<KP0> = 90;\
<KPDL> = 91;\
<LVL3> = 92;\
<LSGT> = 94;\
<FK11> = 95;\
<FK12> = 96;\
<AB11> = 97;\
<KATA> = 98;\
<HIRA> = 99;\
<HENK> = 100;\
<HKTG> = 101;\
<MUHE> = 102;\
<JPCM> = 103;\
<KPEN> = 104;\
<RCTL> = 105;\
<KPDV> = 106;\
<PRSC> = 107;\
<RALT> = 108;\
<LNFD> = 109;\
<HOME> = 110;\
<UP> = 111;\
<PGUP> = 112;\
<LEFT> = 113;\
<RGHT> = 114;\
<END> = 115;\
<DOWN> = 116;\
<PGDN> = 117;\
<INS> = 118;\
<DELE> = 119;\
<I120> = 120;\
<MUTE> = 121;\
<VOL-> = 122;\
<VOL+> = 123;\
<POWR> = 124;\
<KPEQ> = 125;\
<I126> = 126;\
<PAUS> = 127;\
<I128> = 128;\
<I129> = 129;\
<HNGL> = 130;\
<HJCV> = 131;\
<AE13> = 132;\
<LWIN> = 133;\
<RWIN> = 134;\
<COMP> = 135;\
<STOP> = 136;\
<AGAI> = 137;\
<PROP> = 138;\
<UNDO> = 139;\
<FRNT> = 140;\
<COPY> = 141;\
<OPEN> = 142;\
<PAST> = 143;\
<FIND> = 144;\
<CUT> = 145;\
<HELP> = 146;\
<I147> = 147;\
<I148> = 148;\
<I149> = 149;\
<I150> = 150;\
<I151> = 151;\
<I152> = 152;\
<I153> = 153;\
<I154> = 154;\
<I155> = 155;\
<I156> = 156;\
<I157> = 157;\
<I158> = 158;\
<I159> = 159;\
<I160> = 160;\
<I161> = 161;\
<I162> = 162;\
<I163> = 163;\
<I164> = 164;\
<I165> = 165;\
<I166> = 166;\
<I167> = 167;\
<I168> = 168;\
<I169> = 169;\
<I170> = 170;\
<I171> = 171;\
<I172> = 172;\
<I173> = 173;\
<I174> = 174;\
<I175> = 175;\
<I176> = 176;\
<I177> = 177;\
<I178> = 178;\
<I179> = 179;\
<I180> = 180;\
<I181> = 181;\
<I182> = 182;\
<I183> = 183;\
<I184> = 184;\
<I185> = 185;\
<I186> = 186;\
<I187> = 187;\
<I188> = 188;\
<I189> = 189;\
<I190> = 190;\
<FK13> = 191;\
<FK14> = 192;\
<FK15> = 193;\
<FK16> = 194;\
<FK17> = 195;\
<FK18> = 196;\
<FK19> = 197;\
<FK20> = 198;\
<FK21> = 199;\
<FK22> = 200;\
<FK23> = 201;\
<FK24> = 202;\
<MDSW> = 203;\
<ALT> = 204;\
<META> = 205;\
<SUPR> = 206;\
<HYPR> = 207;\
<I208> = 208;\
<I209> = 209;\
<I210> = 210;\
<I211> = 211;\
<I212> = 212;\
<I213> = 213;\
<I214> = 214;\
<I215> = 215;\
<I216> = 216;\
<I217> = 217;\
<I218> = 218;\
<I219> = 219;\
<I220> = 220;\
<I221> = 221;\
<I222> = 222;\
<I223> = 223;\
<I224> = 224;\
<I225> = 225;\
<I226> = 226;\
<I227> = 227;\
<I228> = 228;\
<I229> = 229;\
<I230> = 230;\
<I231> = 231;\
<I232> = 232;\
<I233> = 233;\
<I234> = 234;\
<I235> = 235;\
<I236> = 236;\
<I237> = 237;\
<I238> = 238;\
<I239> = 239;\
<I240> = 240;\
<I241> = 241;\
<I242> = 242;\
<I243> = 243;\
<I244> = 244;\
<I245> = 245;\
<I246> = 246;\
<I247> = 247;\
<I248> = 248;\
<I249> = 249;\
<I250> = 250;\
<I251> = 251;\
<I252> = 252;\
<I253> = 253;\
<I254> = 254;\
<I255> = 255;\
};\
\
xkb_symbols \"squeekboard\" {\
key <AE04> { [ 4, dollar, EuroSign, onequarter ] };\
};\
\
xkb_types \"squeekboard\" {\
type \"ONE_LEVEL\" {\
modifiers= none;\
level_name[Level1]= \"Any\";\
};\
type \"TWO_LEVEL\" {\
modifiers= Shift;\
map[Shift]= Level2;\
level_name[Level1]= \"Base\";\
level_name[Level2]= \"Shift\";\
};\
type \"ALPHABETIC\" {\
modifiers= Shift+Lock;\
map[Shift]= Level2;\
map[Lock]= Level2;\
level_name[Level1]= \"Base\";\
level_name[Level2]= \"Caps\";\
};\
};\
\
xkb_compatibility \"squeekboard\" {\
};\
};";