Kiedy próbuję zbudować mój kod z nagłówkami X11 w Ubuntu 12.04Wymienić od 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);
}
Jaki jest oczekiwany wynik? Kompilacja.
Co się stanie zamiast tego?
warning: 'XKeycodeToKeysym' is deprecated (declared at /usr/include/X11/Xlib.h:1695) [-Wdeprecated-declarations]
Wskutek https://bugs.freedesktop.org/show_bug.cgi?id=5349 XKeycodeToKeysym jest teraz prawidłowo oznaczone jako przestarzałe.
Jak naprawić mój kod za ostrzeżenie za darmo i prawidłową kompilację?
Dzięki
Komentarz # 5 na stronie bug związany wspomina pan 'XkbKeycodeToKeysym', że nie będzie robić to, co chcesz? – Eric
Eric, Moje pytanie dodania: #include i zmieniając XKeycodeToKeysym (wyświetlacz, event.xkey.keycode, 1); z XkbKeycodeToKeysym (g_display, e.xkey.keycode, 1, 0); i XKeycodeToKeysym (display, event.xkey.keycode, 0); z: XkbKeycodeToKeysym (g_display, e.xkey.keycode, 0, 0); to poprawne rozwiązanie? –
iattila
Uważam, że należy zamienić dwa ostatnie parametry. Nie mam doświadczenia z programowaniem X11, ale z tej strony http://www.x.org/archive/X11R7.5/doc/man/man3/XkbKeyAction.3.html wynika, że idx = group_index * key_width + shift_level ', który pasuje do trzeciego parametru (indeksu) w twoim starym kodzie odpowiadającym klawiszowi shift. – Eric