Log In  

Today i fixed a keyboard issue for PICO-8 running on a rpi3 B + raspbian(2016-05-27).

I use a German keyboard and the "<>" keys weren't displayed neither in console nor in code editor.
This occured with the static linked pico8 binary. ( pico8_dyn seems to work with the sdl version installed here, but runs to slow to be usable in my setup.)

As far as i understand it, it has to do with the keyboard handling of SDL. SDL seems to drop unknown keycodes.
I could observe an error message like:

INFO: The key you just pressed is not recognized by SDL. To help get this fixed, please report this to the SDL mailing list <[email protected]> EVDEV KeyCode 86

Creating a custom xmodmap file did not work. My custom keyboard mappings weren't recognised. So i tried to handle it a level closer to the keyboard and created a custom xkb mapping.

I copied the current used layout

cp /usr/share/X11/xkb/symbols/de /usr/share/X11/xkb/symbols/de_pi

Modified de_pi so that less and greater were printed by pressing AltGr+x and AltGr+v:

 ...
    key <AB02>    { [         x,          X,        less,    U2039    ] };
    key <AB04>    { [         v,          V,   greater, singlelowquotemark ]  };
 ...

Registered the new layout in /usr/share/X11/xkb/rules/xfree86.lst

...
  de              German
  de_pi           German (PICO-8)
  gr              Greek
...

Enabled it in /etc/default/keyboard

XKBMODEL="pc105"
XKBLAYOUT="de_pi"
XKBVARIANT=""
XKBOPTIONS=""

And after restarting the raspberry pi. < and > can be used in PICO-8.
Put this here. May be someone find it usefull

P#32475 2016-11-14 18:33 ( Edited 2018-02-16 22:05)

Hm, with the current release (0.1.10) my solution seems to be broken, as there is now a hard coded US layout.

Does anyone know a way to change this layout?

Otherwise i think i have to write a complete own raspi/pico-8 xkb mapping for my german keyboards.

P#34450 2016-12-29 15:31 ( Edited 2016-12-29 20:31)

"The mapped keyboard events for text input (SDL_TEXTINPUT) also seems to be broken for some raspis (so far observed on 2nd generation units), so 0.1.10 now detects if this is happening and uses a hard-coded US layout based on keydown events instead."

For me it might be enough to suppress this error detection and use the "broken" text input solution. My be there is an option or flag to avoid this fallback?

P#34451 2016-12-29 15:57 ( Edited 2016-12-29 20:57)

I have the same problem on raspberry 2 and 3 regarding french keyboard ( which works well in the bash console ) .
I was thinking of patching my sdl "dirtily".

As far as I can remember ( I build sdl2.0.3 projects on raspi 1b , 2 and 3 ), the keymap has always appeared as us in my sdl apps , regardless of my raspi settings ( various raspbians over the years ) .

P#38451 2017-03-20 11:36 ( Edited 2017-03-20 15:36)

Any solutions found to this issue? I'm still not able to use a german keyboard on a raspberry pi.

P#49290 2018-02-14 18:40 ( Edited 2018-02-14 23:40)

Okay so my current approach is to rewire the scancode to keycode mapping with udev. This seems to be possible.

The downside of this solution is, that any other normal keyboard mapping or locale setting on the next layers set with xkb, localectl or what ever will be broken.

But I was able to remap keys of a USB keyboard.

(Done on a 4.9.59-1-ARCH ArchLinux)

My /etc/udev/hwdb.d/90-custom-keyboard.hwdb looks like this

evdev:input:b0003v04D9pA008*
 KEYBOARD_KEY_7001d=y
 KEYBOARD_KEY_7001c=z

This swapped z with y to take the first step from US qwerty to DE qwertz layout in pico-8
If a DE keyboard layout is set in this situation, then in every other application the key are swapped a second time.

The cryptic evdev address was derived from the output of

 # evtest /dev/input/event0 | head  
 ...
 ...
 Input device ID: bus 0x3 vendor 0x4d9 product 0xa088 version 0x111

So "vendor 0x4d9" becomes "v04D9". Small letter v + capitalized 4-digit hexcode.

To apply this settings, i did:

udevadm hwdb --update
udevadm trigger --sysname-match="event*"

Todo:

  • Map more keys to get a full hardwired non-us layout in pico-8
  • Write a pico-8 start script which apllies the mapping and revokes it when pico-8 is quit.

Sources:

P#49310 2018-02-15 17:47 ( Edited 2018-02-15 22:47)

Hm, okay this wont work out, because on this level you don't have control over meta key mapping. I'm going with keyboardstickers. :P

P#49344 2018-02-16 17:05 ( Edited 2018-02-16 22:05)

[Please log in to post a comment]

Follow Lexaloffle:          
Generated 2024-03-28 13:54:41 | 0.008s | Q:17