Modifica funzione tasti (almeno su KDE4) [risolto con worka]

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
wakkokid
Linux 2.x
Linux 2.x
Messaggi: 339
Iscritto il: gio 27 gen 2005, 0:00
Kernel: 2.6.3*
Desktop: Kde4
Distribuzione: Debian
Contatta:

Modifica funzione tasti (almeno su KDE4) [risolto con worka]

Messaggio da wakkokid »

Salve,
Ho comperato un PC con questa tastiera:
Immagine

Questa tastiera ha, secondo me, un grosso problema:
Come in tante altre tastiere da portatili, si attiva/disativa il Blocco Numerico premendo la combinazione Fn + Bloc Num.
Purtroppo, in questo caso si può passare da numeri a frecce anche mantenendo premuto shift.
Infatti si può notare come sulle frecce "normali" i tasti modificati siano disegnati in blu (richiedono il tasto modificatore Fn) mentre sul tastierino numerico sono in bianco (e richiedono come modificatore shift)

Io di solito tengo il blocco numerico disattivato, usufruendo dei tasti home e Fine presenti sul blocco numerico.
Quando vado a selezionare una riga di testo, di solito mi posiziono alla fine e premo shift + Home ma con questa tastiera questa combinazione equivale al 7 a causa della sopracitata particolarità del tastierino numerico.

Vorrei sapere se è possibile cambiare la mappatura della tastiera, in modo che il tasto shift non influenzi il tastierino numerico.
Oppure assegnare la funzione di switch momentaneo del tastierino al tasto Fn (per capirci, come nell'immagine della tastiera i numeri del tastierino numerico fossero scritti in blu).




Ho provato ad analizzare i codici dei tasti premuti con il comando xev. Filtrando i dati che mi sembrano inutili ho determinato i vari codici relativi al tasto "7" nelle sue diverse condizioni (con bloc num, senza, con shift, ecc):

Codice: Seleziona tutto

Con bloc num (funzione "7"):
       state 0x10, keycode 79 (keysym 0xffb7, KP_7),

Con bloc num + shift (funzione "home")
       state 0x11, keycode 79 (keysym 0xff95, KP_Home),

Senza bloc num (funzione "home")
        state 0x0, keycode 79 (keysym 0xff95, KP_Home)

Senza bloc num, con shift  (funzione "7"):
        state 0x1, keycode 79 (keysym 0xffb7, KP_7)
Con questi dati, è possibile cambiare la mappatura della tastiera almeno all'interno dell'ambiente KDE4? (pazienza se in console testuale non dovesse funzionare, non utilizzo spesso le funzioni di selezione lì).

Vi ringrazio molto dell'attezione,
WK
Ultima modifica di wakkokid il mer 18 gen 2012, 11:30, modificato 1 volta in totale.

Avatar utente
wakkokid
Linux 2.x
Linux 2.x
Messaggi: 339
Iscritto il: gio 27 gen 2005, 0:00
Kernel: 2.6.3*
Desktop: Kde4
Distribuzione: Debian
Contatta:

Re: Modifica funzione tasti (almeno su KDE4)

Messaggio da wakkokid »

Passo avanti:
ho trovato il comando xmodmap.
Facendogli stampare a video la lista dei comandi vedo (xmodmap -pk)

Codice: Seleziona tutto

79         0xff95 (KP_Home)        0xffb7 (KP_7)   0xff95 (KP_Home)        0xffb7 (KP_7)
Il risultato che vorrei ottenere è che lo shift non influisca, quindi ho pensato di mettere nelle regole di xmodmap:

Codice: Seleziona tutto

keycode 79 = KP_Home   KP_Home   KP_7   KP_7
A questo punto il risultato del comando xmodmap -pk è

Codice: Seleziona tutto

79         0xff95 (KP_Home)        0xff95 (KP_Home)        0xffb7 (KP_7)   0xffb7 (KP_7)
Il che a me sembra corretto, ma a questo punto il tasto ha perso le funzioni di blocknum:
fa sempre il tasto home qualsiasi combinazione di bloc num e shift io usi.




AGGIORNAMENTO:

Codice: Seleziona tutto

keycode 79 = KP_Home KP_7   KP_7 KP_Home  
Con questa impostazione:
Senza Bloc num => Home
Senza Bloc num + shift => Home
Con Bloc num => 7
Con Bloc num + shift => Home


Non è ancora il risultato che mi ero prefisso, ma è una soluzione che mi va bene, in quanto non mi capita di usare lo shift con i numeri.



AGGIORNAMENTO 2:

Il risultato dipende dal contesto...
In Kate funziona come previsto, in console e nella barra degli indirizzi di chrome non funziona.
Perché ?
Ultima modifica di wakkokid il gio 5 gen 2012, 16:01, modificato 1 volta in totale.

Avatar utente
wakkokid
Linux 2.x
Linux 2.x
Messaggi: 339
Iscritto il: gio 27 gen 2005, 0:00
Kernel: 2.6.3*
Desktop: Kde4
Distribuzione: Debian
Contatta:

Re: Modifica funzione tasti (almeno su KDE4)

Messaggio da wakkokid »

Inoltre noto che alcune cose non funzionano con xmodmap. Ad esempio, la riga:

Codice: Seleziona tutto

keycode 118 = Num_Lock Insert
Dovrebbe spostarmi la funzione Num_Lock sul tasto Ins e la funzione Insert sulla combinazione Shift + ins.
La seconda funzione è ok, mentre la prima non si degna di funzionare.

Avatar utente
wakkokid
Linux 2.x
Linux 2.x
Messaggi: 339
Iscritto il: gio 27 gen 2005, 0:00
Kernel: 2.6.3*
Desktop: Kde4
Distribuzione: Debian
Contatta:

Re: Modifica funzione tasti (almeno su KDE4)

Messaggio da wakkokid »

Risolto con un brutto workaround

Se non si usano i modificatori, la configurazione funziona dappertutto.
Allora ho creato 2 configurazioni:

file /opt/switch_keypad/keypad_on

Codice: Seleziona tutto

! ====================================================
!                       KEYPAD ON
! ====================================================

keycode 79 = KP_7
keycode 80 = KP_8
keycode 81 = KP_9
keycode 83 = KP_4
keycode 84 = KP_5
keycode 85 = KP_6
keycode 87 = KP_1
keycode 88 = KP_2
keycode 89 = KP_3
keycode 90 = KP_0

file /opt/switch_keypad/keypad_off

Codice: Seleziona tutto

! ====================================================
!                       KEYPAD OFF
! ====================================================

keycode 79 = KP_Home
keycode 80 = KP_Up
keycode 81 = KP_Prior
keycode 83 = KP_Left
keycode 84 = KP_5
keycode 85 = KP_Right
keycode 87 = KP_End
keycode 88 = KP_Down
keycode 89 = KP_Next
keycode 90 = KP_0

Poi ho creato uno script per switchare tra le due configurazioni:
file /opt/switch_keypad/numlock_switch

Codice: Seleziona tutto

#!/bin/sh
if [ -f ~/.numlockstate ]
then
    #echo "numlockstate: ";
    cat ~/.numlockstate;
    #echo "";
else
    echo "1" > ~/.numlockstate;
fi

STATO=`cat ~/.numlockstate`;
if [ $STATO -eq 1 ] ; then
    echo "0" > ~/.numlockstate;
    echo "setting keypad off";
    xmodmap /opt/switch_keypad/keypad_off
else
    echo "1" > ~/.numlockstate;
    echo "setting keypad on";
    xmodmap /opt/switch_keypad/keypad_on
E infine ho utilizzato xbindkeys per far eseguire a ogni pressione di "bloc num" lo script da me creato:
file ~/.xbindkeysrc

Codice: Seleziona tutto

#switch keypad
"/opt/switch_keypad/numlock"
    m:0x10 + c:77
    Mod2 + Num_Lock

Rispondi