Pifou from the Pine64 forum about how to modify the Pinephone keyboard layout

Last Updated on October 23, 2023 by pg@petergamma.org

Link to the original thread:

https://forum.pine64.org/showthread.php?tid=16750

  • 07-10-2022, 01:42 PM
  • This post was last modified: 07-18-2022, 10:27 AM by pifou.
  • Edit Reason: correction )

  • @Peter

  • Below is what I did when after the latest updates and OS upgrades lost (completely in Mobian and partially in PostmarketOS) the PPKC functionality.
  •  The kb151 kernel module is not present anymore in either OS after all the above. 
  • It will get some top row functionality back.
  • These are the fixes for PostmarketOS. 
  • I used this wiki page for inspiration: 

https://wiki.mobian-project.org/doku.php…ccessories

Step 1

  • I changed the “kb151” to in “/sys/bus/i2c/drivers/kb151/2-0015” to “pinephone-keyboard” as below
    /sys/bus/i2c/drivers/pinephone-keyboard/2-0015
  • In my home dir I created the “bin” subdir and in it I put the “kbd-external.sh” script. 
  • Make sure it’s executable.

Code:

mkdir bin
bin/kbd-external.sh
chmod +x bin/kbd-external.sh

kbd-external.sh
Code:

!/usr/bin/env bash

a11y is “a one one y” aka a-eleven-y aka accessibility

Turns off onscreen keyboard when PPKC is present

Disable vibration

  • if [ -L “/sys/bus/i2c/drivers/pinephone-keyboard/2-0015” ];
  • then
  • gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled false

else

  • gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled true

fi

return status

  • echo “org.gnome.desktop.a11y.applications screen-keyboard-enabled is:”
  • gsettings get org.gnome.desktop.a11y.applications screen-keyboard-enabled
  • disable vibration on mouse and key presses
  • gsettings set org.sigxcpu.feedback profile silent
  • echo “org.sigxcpu.feedback profile is:”
  • gsettings get org.sigxcpu.feedback profile

Step 2

  • Then, add this to “~/.config/autostart/kbd-external.desktop”
  • kbd-external.desktop
    Code:

[Desktop Entry]
Name=Keyboard
Type=Application
Icon=object-rotate-left-symbolic
Exec=/home/user/bin/kbd-external.sh
Categories=Utility;
NoDisplay=true

Step 3

  • In my case this was already the case but if it isn’t, make sure that XKB_DEFAULT_MODEL env variable is ppkb

  echo $XKB_DEFAULT_MODEL

  • should return

    ppkb

  • If NOT, add the following to /etc/systemd/system/phosh.service.d/override.conf:
  • override.conf
    Code:

[Service]
Environment=XKB_DEFAULT_MODEL=ppkb

Step 4

  • In the Settings app in “Phosh -> Settings -> Keyboard -> Alternate Characters Key” select “Left Super”
  • to have the pinecone key act as Fn used to for the TOP ROW ONLY: Pinecone-[0-9]
  • The Fn key still worked/works for the arrow, Home, End keys.
  • Try setting some other special keys if you prefer something else as modifier.

Link to the original text in the Pine64 forum:

https://forum.pine64.org/showthread.php?tid=16750