Quando si tenta di costruire il mio codice con le intestazioni X11 in Ubuntu 12,04Sostituire di XKeycodeToKeysym
case KeyPress:
xcommon_update_server_time(event.xkey.time);
/* if(event.xkey.state & ShiftMask) arg |= I_SHIFT; */
/* this alternate approach allows handling of keys like '<' and '>' -- mrallen */
if(event.xkey.state & ShiftMask) {
mykey = XKeycodeToKeysym(display, event.xkey.keycode, 1);
} else {
mykey = XKeycodeToKeysym(display, event.xkey.keycode, 0);
}
Qual è il risultato atteso? Compila.
Cosa succede invece?
warning: 'XKeycodeToKeysym' is deprecated (declared at /usr/include/X11/Xlib.h:1695) [-Wdeprecated-declarations]
Come risultato di https://bugs.freedesktop.org/show_bug.cgi?id=5349 XKeycodeToKeysym è ora correttamente contrassegnati come obsoleto.
Come risolvere il mio codice per la generazione di avvisi gratuita e corretta?
Grazie
commento # 5 nella pagina di errore si è collegato cita 'XkbKeycodeToKeysym', non avrebbe che fare quello che vuoi? – Eric
Eric, mia domanda Aggiunta: #include e cambiando XKeycodeToKeysym (display, event.xkey.keycode, 1); con XkbKeycodeToKeysym (g_display, e.xkey.keycode, 1, 0); e XKeycodeToKeysym (visualizzazione, event.xkey.keycode, 0); con: XkbKeycodeToKeysym (g_display, e.xkey.keycode, 0, 0); è la soluzione corretta? –
iattila
Credo che sia necessario scambiare gli ultimi due parametri. Non ho esperienza con la programmazione X11, ma raccolgo da questa pagina http://www.x.org/archive/X11R7.5/doc/man/man3/XkbKeyAction.3.html che 'idx = group_index * key_width + shift_level ', che corrisponde al terzo parametro (indice) nel vecchio codice corrispondente al tasto maiuscole. – Eric