I've been trying to "fix" the PS2Keyboard library for current Arduino software, and I've got it mostly working, but I get these warnings about the PROGMEM tables in the library:
PS2Keyboard-n.cpp:36: warning: only initialized variables can be placed into program memory area
PS2Keyboard-n.cpp:37: warning: only initialized variables can be placed into program memory area
which I get regardless of which variation of progmem-style declaration is used (prog_uchar or prog_char instead of PROGMEM, PROGMEM in various positions, etc, etc.)
The actual code looks like
#define PS2_KC_LUT_CAPACITY 10
const PROGMEM unsigned char PS2_KC_LUT_DATA[PS2_KC_LUT_CAPACITY] = {0x70, 0x69
, 0x72, 0x7a, 0x6b, 0x73, 0x74, 0x6c, 0x75, 0x7d};
const PROGMEM unsigned char PS2_KC_LUT_CHAR[PS2_KC_LUT_CAPACITY] = {'0', '1',
'2', '3', '4', '5', '6', '7', '8', '9'};
So the data is surely initialized. And it looks like the code produced is correct with the tables in the right place. The warning will not happen if the PROGMEM table is moved into the sketch pde, only when it's in the library .cpp file (libraries are compiled with -Wall; manually compiling without -Wall also removes the warning. But that'd be little comfort to beginners trying to use the library!
Any ideas on what is actually going on?