Depois de muita dor, consegui criar um mapa de chaves que faz algo útil.
Primeiro algumas notas (não posso comentar ainda) sobre a resposta anterior:
-
o script do fixMouse fornecido pelo Mr back-up não funciona, porque às vezes a entrada do teclado do mouse aparece com o nome errado no xinput, ou seja, no meu caso ele mostra:
⎡ Virtual core pointer id=2 [master pointer (3)] ... ⎜ ↳ Ultrathin Touch Mouse id=11 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ... ↳ AT Translated Set 2 keyboard id=12 [slave keyboard (3)]
por outro lado, você pode usar o lsinput a partir de input-utils para encontrar o id correto:
lsinput 2>&1|grep -B5 "Ultrathin Touch Mouse" /dev/input/event12 bustype : BUS_BLUETOOTH vendor : 0x46d product : 0xb00d version : 1792 name : "Ultrathin Touch Mouse"
-
por algum motivo, quando descarregar o mapa para o mouse, alguns códigos são duplicados (aqueles entre 0x700e0 e 0x700e7), tenha cuidado para localizá-los e eliminá-los, ou você ficará louco.
-
substituir todos os códigos de teclas por KEY_UNKNOWN impede as explosões de caracteres aleatórios, mas torna inúteis as ações especiais de toque. Em vez disso, descobri que você pode remapear alguns dos gestos para combinações úteis. Em particular, o "furto da esquerda" envia os códigos 0x700e0 + 0x700e3 + 0x7002b, enquanto o "furto da direita" envia 0x700e3 + 0x700e3 + 0x70072. Eu mapeei 0x700e3, que é comum a ambos os gestos, para KEY_UNKNOW, para tirá-lo do caminho. Então eu usei os códigos de chaves restantes para fazer CTRL + F8 (grade de desktop) e ALT-F2 (runner), mas é claro que você pode gerar qualquer combinação de quaisquer duas chaves. Aqui está o meu mapa, tenha cuidado ao copiar / colar para não deixar linhas vazias e nenhum espaço em branco inicial (eles quebram o input-kbd):
0x700e3 = KEY_UNKNOWN 0x700e0 = KEY_LEFTCTRL 0x7002b = KEY_F8 0x700e2 = KEY_LEFTALT 0x70072 = KEY_F2 0x70004 = KEY_UNKNOWN 0x70005 = KEY_UNKNOWN 0x70006 = KEY_UNKNOWN 0x70007 = KEY_UNKNOWN 0x70008 = KEY_UNKNOWN 0x70009 = KEY_UNKNOWN 0x7000a = KEY_UNKNOWN 0x7000b = KEY_UNKNOWN 0x7000c = KEY_UNKNOWN 0x7000d = KEY_UNKNOWN 0x7000e = KEY_UNKNOWN 0x7000f = KEY_UNKNOWN 0x70010 = KEY_UNKNOWN 0x70011 = KEY_UNKNOWN 0x70012 = KEY_UNKNOWN 0x70013 = KEY_UNKNOWN 0x70014 = KEY_UNKNOWN 0x70015 = KEY_UNKNOWN 0x70016 = KEY_UNKNOWN 0x70017 = KEY_UNKNOWN 0x70018 = KEY_UNKNOWN 0x70019 = KEY_UNKNOWN 0x7001a = KEY_UNKNOWN 0x7001b = KEY_UNKNOWN 0x7001c = KEY_UNKNOWN 0x7001d = KEY_UNKNOWN 0x7001e = KEY_UNKNOWN 0x7001f = KEY_UNKNOWN 0x70020 = KEY_UNKNOWN 0x70021 = KEY_UNKNOWN 0x70022 = KEY_UNKNOWN 0x70023 = KEY_UNKNOWN 0x70024 = KEY_UNKNOWN 0x70025 = KEY_UNKNOWN 0x70026 = KEY_UNKNOWN 0x70027 = KEY_UNKNOWN 0x70028 = KEY_UNKNOWN 0x70029 = KEY_UNKNOWN 0x7002a = KEY_UNKNOWN 0x7002c = KEY_UNKNOWN 0x7002d = KEY_UNKNOWN 0x7002e = KEY_UNKNOWN 0x7002f = KEY_UNKNOWN 0x70030 = KEY_UNKNOWN 0x70031 = KEY_UNKNOWN 0x70032 = KEY_UNKNOWN 0x70033 = KEY_UNKNOWN 0x70034 = KEY_UNKNOWN 0x70035 = KEY_UNKNOWN 0x70036 = KEY_UNKNOWN 0x70037 = KEY_UNKNOWN 0x70038 = KEY_UNKNOWN 0x70039 = KEY_UNKNOWN 0x7003a = KEY_UNKNOWN 0x7003b = KEY_UNKNOWN 0x7003c = KEY_UNKNOWN 0x7003d = KEY_UNKNOWN 0x7003e = KEY_UNKNOWN 0x7003f = KEY_UNKNOWN 0x70040 = KEY_UNKNOWN 0x70041 = KEY_UNKNOWN 0x70042 = KEY_UNKNOWN 0x70043 = KEY_UNKNOWN 0x70044 = KEY_UNKNOWN 0x70045 = KEY_UNKNOWN 0x70046 = KEY_UNKNOWN 0x70047 = KEY_UNKNOWN 0x70048 = KEY_UNKNOWN 0x70049 = KEY_UNKNOWN 0x7004a = KEY_UNKNOWN 0x7004b = KEY_UNKNOWN 0x7004c = KEY_UNKNOWN 0x7004d = KEY_UNKNOWN 0x7004e = KEY_UNKNOWN 0x7004f = KEY_UNKNOWN 0x70050 = KEY_UNKNOWN 0x70051 = KEY_UNKNOWN 0x70052 = KEY_UNKNOWN 0x70053 = KEY_UNKNOWN 0x70054 = KEY_UNKNOWN 0x70055 = KEY_UNKNOWN 0x70056 = KEY_UNKNOWN 0x70057 = KEY_UNKNOWN 0x70058 = KEY_UNKNOWN 0x70059 = KEY_UNKNOWN 0x7005a = KEY_UNKNOWN 0x7005b = KEY_UNKNOWN 0x7005c = KEY_UNKNOWN 0x7005d = KEY_UNKNOWN 0x7005e = KEY_UNKNOWN 0x7005f = KEY_UNKNOWN 0x70060 = KEY_UNKNOWN 0x70061 = KEY_UNKNOWN 0x70062 = KEY_UNKNOWN 0x70063 = KEY_UNKNOWN 0x70064 = KEY_UNKNOWN 0x70065 = KEY_UNKNOWN 0x70066 = KEY_UNKNOWN 0x70067 = KEY_UNKNOWN 0x70068 = KEY_UNKNOWN 0x70069 = KEY_UNKNOWN 0x7006a = KEY_UNKNOWN 0x7006b = KEY_UNKNOWN 0x7006c = KEY_UNKNOWN 0x7006d = KEY_UNKNOWN 0x7006e = KEY_UNKNOWN 0x7006f = KEY_UNKNOWN 0x70070 = KEY_UNKNOWN 0x70071 = KEY_UNKNOWN 0x70073 = KEY_UNKNOWN 0x70074 = KEY_UNKNOWN 0x70075 = KEY_UNKNOWN 0x70076 = KEY_UNKNOWN 0x70077 = KEY_UNKNOWN 0x70078 = KEY_UNKNOWN 0x70079 = KEY_UNKNOWN 0x7007a = KEY_UNKNOWN 0x7007b = KEY_UNKNOWN 0x7007c = KEY_UNKNOWN 0x7007d = KEY_UNKNOWN 0x7007e = KEY_UNKNOWN 0x7007f = KEY_UNKNOWN 0x70080 = KEY_UNKNOWN 0x70081 = KEY_UNKNOWN 0x70082 = KEY_UNKNOWN 0x70083 = KEY_UNKNOWN 0x70084 = KEY_UNKNOWN 0x70085 = KEY_UNKNOWN 0x70086 = KEY_UNKNOWN 0x70087 = KEY_UNKNOWN 0x70088 = KEY_UNKNOWN 0x70089 = KEY_UNKNOWN 0x7008a = KEY_UNKNOWN 0x7008b = KEY_UNKNOWN 0x7008c = KEY_UNKNOWN 0x7008d = KEY_UNKNOWN 0x7008e = KEY_UNKNOWN 0x7008f = KEY_UNKNOWN 0x70090 = KEY_UNKNOWN 0x70091 = KEY_UNKNOWN 0x70092 = KEY_UNKNOWN 0x70093 = KEY_UNKNOWN 0x70094 = KEY_UNKNOWN 0x70095 = KEY_UNKNOWN 0x70096 = KEY_UNKNOWN 0x70097 = KEY_UNKNOWN 0x70098 = KEY_UNKNOWN 0x70099 = KEY_UNKNOWN 0x7009a = KEY_UNKNOWN 0x7009b = KEY_UNKNOWN 0x7009c = KEY_UNKNOWN 0x7009d = KEY_UNKNOWN 0x7009e = KEY_UNKNOWN 0x7009f = KEY_UNKNOWN 0x700a0 = KEY_UNKNOWN 0x700a1 = KEY_UNKNOWN 0x700a2 = KEY_UNKNOWN 0x700a3 = KEY_UNKNOWN 0x700a4 = KEY_UNKNOWN 0x700a5 = KEY_UNKNOWN 0x700a6 = KEY_UNKNOWN 0x700a7 = KEY_UNKNOWN 0x700a8 = KEY_UNKNOWN 0x700a9 = KEY_UNKNOWN 0x700aa = KEY_UNKNOWN 0x700ab = KEY_UNKNOWN 0x700ac = KEY_UNKNOWN 0x700ad = KEY_UNKNOWN 0x700ae = KEY_UNKNOWN 0x700af = KEY_UNKNOWN 0x700b0 = KEY_UNKNOWN 0x700b1 = KEY_UNKNOWN 0x700b2 = KEY_UNKNOWN 0x700b3 = KEY_UNKNOWN 0x700b4 = KEY_UNKNOWN 0x700b5 = KEY_UNKNOWN 0x700b6 = KEY_UNKNOWN 0x700b7 = KEY_UNKNOWN 0x700b8 = KEY_UNKNOWN 0x700b9 = KEY_UNKNOWN 0x700ba = KEY_UNKNOWN 0x700bb = KEY_UNKNOWN 0x700bc = KEY_UNKNOWN 0x700bd = KEY_UNKNOWN 0x700be = KEY_UNKNOWN 0x700bf = KEY_UNKNOWN 0x700c0 = KEY_UNKNOWN 0x700c1 = KEY_UNKNOWN 0x700c2 = KEY_UNKNOWN 0x700c3 = KEY_UNKNOWN 0x700c4 = KEY_UNKNOWN 0x700c5 = KEY_UNKNOWN 0x700c6 = KEY_UNKNOWN 0x700c7 = KEY_UNKNOWN 0x700c8 = KEY_UNKNOWN 0x700c9 = KEY_UNKNOWN 0x700ca = KEY_UNKNOWN 0x700cb = KEY_UNKNOWN 0x700cc = KEY_UNKNOWN 0x700cd = KEY_UNKNOWN 0x700ce = KEY_UNKNOWN 0x700cf = KEY_UNKNOWN 0x700d0 = KEY_UNKNOWN 0x700d1 = KEY_UNKNOWN 0x700d2 = KEY_UNKNOWN 0x700d3 = KEY_UNKNOWN 0x700d4 = KEY_UNKNOWN 0x700d5 = KEY_UNKNOWN 0x700d6 = KEY_UNKNOWN 0x700d7 = KEY_UNKNOWN 0x700d8 = KEY_UNKNOWN 0x700d9 = KEY_UNKNOWN 0x700da = KEY_UNKNOWN 0x700db = KEY_UNKNOWN 0x700dc = KEY_UNKNOWN 0x700dd = KEY_UNKNOWN 0x700de = KEY_UNKNOWN 0x700df = KEY_UNKNOWN 0x700e1 = KEY_UNKNOWN 0x700e4 = KEY_UNKNOWN 0x700e5 = KEY_UNKNOWN 0x700e6 = KEY_UNKNOWN 0x700e7 = KEY_UNKNOWN 0x700e8 = KEY_UNKNOWN 0x700e9 = KEY_UNKNOWN 0x700ea = KEY_UNKNOWN 0x700eb = KEY_UNKNOWN 0x700ec = KEY_UNKNOWN 0x700ed = KEY_UNKNOWN 0x700ee = KEY_UNKNOWN 0x700ef = KEY_UNKNOWN 0x700f0 = KEY_UNKNOWN 0x700f1 = KEY_UNKNOWN 0x700f2 = KEY_UNKNOWN 0x700f3 = KEY_UNKNOWN 0x700f4 = KEY_UNKNOWN 0x700f5 = KEY_UNKNOWN 0x700f6 = KEY_UNKNOWN 0x700f7 = KEY_UNKNOWN 0x700f8 = KEY_UNKNOWN 0x700f9 = KEY_UNKNOWN 0x700fa = KEY_UNKNOWN 0x700fb = KEY_UNKNOWN 0x700fc = KEY_UNKNOWN 0x700fd = KEY_UNKNOWN 0x700fe = KEY_UNKNOWN 0x700ff = KEY_UNKNOWN 0x90001 = 272 # BTN_LEFT 0x90002 = 273 # BTN_RIGHT 0x90003 = 274 # BTN_MIDDLE 0x90004 = 275 # BTN_SIDE 0x90005 = 276 # BTN_EXTRA
Não consegui códigos adequados para os deslizes de dois dedos, mas novamente não ligo porque esses gestos são impossíveis de realizar.
P.S. Caso você queira tentar personalizar outros gestos, aqui está como eu prossegui:
-
Classifiquei as entradas do mapa, limpei as duplicatas e percebi que compreende 252 símbolos (mais 5 botões).
-
Eu configurei os primeiros dez símbolos para KEY_A, os dez seguintes para KEY_B e assim por diante até os últimos dois que se tornaram KEY_Z; então eu carreguei este mapa.
-
Eu faço os gestos em uma janela de texto (ou você pode usar "xbindkeys -mk") e anote as letras produzidas.
-
No mapa eu mudo todas as letras NÃO produzidas para KEY_UNKNOWN, as três restantes para KEY_A, KEY_B, KEY_C .. KEY_Z, KEY_1, .., KEY_4, então eu carrego este novo MAP.
-
Realizo o gesto novamente, anote as letras / números produzidos: são os códigos que podem ser definidos para o que você precisa para fazer uma combinação específica de teclas.