Ask / Submit

Sailfish X: Bluetooth thinks speaker is keyboard and disables touch screen keyboard

asked 2017-11-10 14:47:30 +0300

TomC gravatar image

Sailfish X,

I know Bluetooth is not officially supported, but I thought I'd report this separately, in case it could help developers.

Tested with Divoom Bluetune-Bean Bluetooth speaker:

After several minutes of searching for BT devices, the Xperia found the speaker and it worked for playing music from Media player and native browser. After pairing, the device can be connected in a few seconds. Only the first search for the device took several minutes.

However, the touch screen keyboard stops working when the speaker is connected. In the settings for the type of device (mouse, keyboard, gaming control, toy, other), keyboard is selected by default for this device. I can select anything else but "Other". If I try to select Other, Keyboard is selected instead. If I select anything else, the touch screen keyboard still does not work as long as the speaker is connected. When it is disconnected, the touch screen keyboard works normally again.

edit retag flag offensive close delete

1 Answer

Sort by » oldest newest most voted

answered 2017-11-10 20:58:38 +0300

spiiroin gravatar image

If the device ends up registering input device that claims to emit keyevents -> it is taken as keyboard -> virtual kbd gets disabled.

The heuristics for this "I have a physical keyboard" logic is in mce, so making mce ignore the input device related to the bluetooth speaker -> pairing should no longer cause disabling of virtual keyboard.

Try something like (needs to be run as root):

First install evdev_trace utility:

pkcon install mce-tools

Identify input device nodes using it:

evdev_trace -i

Locate the bt device - something emitting at least Q and P keys, say:

----====( /dev/input/event12 )====----
Name: "some-name"
ID: bus 0x0, vendor, 0x0, product 0x0, version 0x0
Type 0x00 (EV_SYN)
Type 0x01 (EV_KEY)
         KEY_Q KEY_P ...

Add the device name to mce evdev input blacklist:

printf "[evdev]\nblack=some-name\n" > /etc/mce/99-blacklist-some-name.ini

Restart mce

systemctl restart mce
edit flag offensive delete publish link more
Login/Signup to Answer

Question tools



Asked: 2017-11-10 14:47:30 +0300

Seen: 329 times

Last updated: Nov 10 '17