PDA

Visualizza versione completa : alt di destra non mappato su alt gr?



Andy86
13-04-16, 00: 27
:bai

Ho un problema strano, i giochi (compresi quelli nativi come hedgewars, ho provato apposta) non sentono il tasto alt di sinistra, cioè alt gr, ma da solo. Funziona tasto modificatore per la chiocciola e tutta l'altra roba, ma non come alt di destra.

Ora direte "usa un altro tasto", il problema è che sono alle prese con un gioco sfigato che non permette di cambiare tutti i tasti a piacimento, e in una particolare sezione del gioco sono obbligato ad utilizzare alt di sinistra per poterla superare (a dir la verità il gioco prosegue anche "fallendo" la prova, ma sapete com'è...)

Comunque come dicevo ho appurato con hedgewars che il problema non è di wine, infatti impostando su hedgewars il tasto fuoco su "alt di destra" anziché su "spazio" non è più possibile sparare (premendo alt di destra ovviamente, non lo sente proprio).

Ho notato che lanciando xmodmap il tasto Alt_R non c'è, c'è modo di rimetterlo a posto?


Only registered members can view code.

Edit 13/04:

Spulciando un po' nei forum inglesi ho trovato un tentativo "quasi" funzionante:


$ xmodmap -e "keycode 108 = Alt_R"
$ xmodmap -e "add mod5 = Alt_R"

In questo modo si può mappare Alt_R nei giochi, ma di conseguenza sparisce Alt_Gr nelle combinazioni della tastiera, ergo, non posso più fare la chiocciola e le robe varie... :boh

Ho appurato che senza dare un keycode qualunque ad Alt_R il secondo comando non sortisce effetto.
Come se la variabile Alt_R di default fosse vuota.

L'output di xmodmap ora è questo:


Only registered members can view code.

Usando il keycode 108 vengono inseriti due Alt_R. Ho provato ad utilizzare i codici indicati tra parentesi per rimuoverne uno ma non mi ascolta. Se do il comando inverso se ne vanno entrambe.

Non ho ben capito cosa cambia tra i vari "mod", però anche mappando su "mod1" il risultato è lo stesso.

Possibile che per qualche motivo la mia tastiera non supporti il doppio tasto su 'alt-gr'?



riedit:

Una cosa l'ho capita. AltGr corrisponde a "ISO_Level3_Shift".
A seconda di quale delle due cose assegno al codice "108" cambia il comportamento del tasto.
Però non riesco a fargli fare tutte due le cose contemporaneamente.
Alt_R di default non contiene niente, infatti da errore se lo uso senza assegnazione.

Ho provato a fare così:


Only registered members can view code.

Ma non fa altro che ripetere il comando all'inverso facendo esplodere Alt_R in 108.

I vari "add modX" invece sembrano non cambiare nulla.
Basta il remap per invertire il comportamento.

A questo punto l'unica soluzione è attaccare uno script che mappa il tasto prima di avviare il gioco e lo rimappa prima di uscire dal gioco.

Avevo già adottato una soluzione simile tempo fa con un gioco che su wine dava problemi con la mappatura interna dei tasti, però poi chiaramente dava problemi se cambiavo applicazione con alt+tab o desktop senza uscirne perché venivano influenzate anche il resto delle app.

Per cui non metto il risolto nella speranza di una soluzione migliore.

pierino_89
13-04-16, 14: 18
Alt gr fa da modificatore per i tasti (chiocciola, parentesi, ecc.), Alt no. Quindi pensa bene a cosa stai rimappando.
Medita magari una cosa di questo tipo, solo mentre va il programma: Using XBindKeys on Ubuntu Linux to Remap Key Commands | ButlerPC Blog (http://butlerpc.net/blog/2011/01/using-xbindkeys-on-ubuntu-linux-to-remap-key-commands/)

Andy86
13-04-16, 14: 32
:bai

Infatti, me ne sono accorto. Per quello dicevo che non riesco ad inserire entrambe le cose sullo stesso tasto.
(non è impossibile, perché su windows è sempre stato così, e poi da il problema anche hedgewars che è nativo).

Non ho ben capito... quella cosa che hai postato è un po' come lo script che ho detto io che mappa il tasto temporaneamente durante l'esecuzione del programma? Cosa cambia tra quello e xmodmap?

La cosa assurda è che facendo così:


Only registered members can view code.

La chiocciola e le altre cose funzionano nel terminale, ma non in tutte le altre applicazioni.
Che cos'ha il terminale di speciale che le altre applicazioni non hanno?

pierino_89
13-04-16, 14: 37
La differenza è che quello che ti ho postato invece di rimappare, pigia un tasto in più.

Andy86
13-04-16, 14: 47
Ah. Allora perché dici "solo mentre va il programma"?
Se mi permette di inserire entrambe i tasti sullo stesso tasto posso lasciarlo sempre attivo, no?

(sempre che poi funziona. adesso devo uscire, per cui lo provo dopo).

pierino_89
13-04-16, 15: 29
Perché non ti garantisco che lo interpreti come Alt e Alt Gr+ò piuttosto che Alt+Alt Gr+ò...

Andy86
13-04-16, 18: 21
:bai

Forse non ho capito, a quanto vedo quel comando serve a creare degli shortcut, leggo solo la possibilità di associare un comando ad uno shortcut, quindi quello che bisognerebbe fare è lanciare un comando (tipo xdotool) che simuli la pressione del tasto da associare ad uno shortcut... sbaglio? :m:

Se ho capito bene, c'è un problema. Alt_R è un modificatore e non si può lanciare. :ohoh



Niente. Non rimappa altgr.
xdotool si può chiamare con 'key' per mandare i tasti modificatori.
[-]Comunque no, non preme due tasti insieme, crea proprio uno shortcut ma sovrascrive l'azione di base del tasto.[/-]
Quindi usare xbindkey più xdotool equivale ad utilizzare xmodmap, solo che il secondo è più veloce.
---
Ho capito che due tasti insieme si fanno premere concatenando il comando, tipo:


Only registered members can view code.

Però con i tasti modificatori non funziona:


Only registered members can view code.

Non ho capito se xdotool non è il comando giusto.

pierino_89
13-04-16, 20: 59
:bai
Quindi usare xbindkey più xdotool equivale ad utilizzare xmodmap, solo che il secondo è più veloce.

Esatto, era solo per non pastrocchiare con la mappatura dei tasti. A questo punto ti conviene fare uno script mappi e poi rimetta tutto com'era prima al termine del programma.

Andy86
13-04-16, 21: 20
Che poi è ciò che avevo già detto prima. Cioè che da problemi (passabili) se faccio alt+tab e passo ad altra applicazione senza chiudere il gioco, poiché, ovviamente, in quel caso lo script non interviene.