Jump to content

Pro1x + LineageOS Readiness


Recommended Posts

I am looking for a few beta testers for an unofficial-UNOFFICIAL variant build of LineageOS 20 for the Pro1-X. While it is compatible with the official beta published on XDA, it includes additional keyboard features, some of which may not be present in the final official-OFFICIAL release of LineageOS. The additional features include:

  • Support for Pro1-X models with QWERTZ, AZERTY, and Scandic keyboards
  • The custom key map feature from the pro1
  • Reassign the right-hand yellow arrow key to AltGr, from "Settings -> System -> Languages & input -> Physical keyboard -> Advanced settings -> Right FN key sends AltGr"
            (We weren't trying to hide that, honest!)
  • Hide the Android navigation bar, from "Settings -> System -> Buttons -> Enable on-screen nav bar". You may also want to enable gesture navigation for use when the keyboard slider is closed, in "Settings -> System -> Gestures -> System navigation". Personally I prefer to use keyboard shortcuts instead of the navigation bar, and bask in the increased screen area usable for other things 🙂 For reference, the keyboard shortcuts for the three buttons in the Android navigation bar are:
    • BACK is F-logo key (Meta) + Backspace
    • HOME is F-logo key + Enter
    • RECENTS is "yellow arrow key" (Fn) + Tab, or Alt + Tab. Each has a different UI behavior.

Some things still don't work as well as we'd like. The problem with native Android language overlays remains, but has been minimized as much as possible. If you select a language overlay in "Settings -> System -> Languages & input -> Physical keyboard -> Builtin Keyboard -> Set up keyboard layouts" other than one of the "F(x)tec defaults", the yellow arrow key (Fn) mappings won't work any more. On the QWERTY keyboard, this means you won't be able to type '\' or ';' 😞 To better support languages other than English we have remapped the Sym key to AltGr, and many of the yellow characters printed on the QWERTZ, AZERTY, and Scandic keyboards may still be available via combinations with AltGr, just not always where F(x)tec intended 😕 We have also defined parallel mappings using Shift and Caps Lock in addition to Fn whenever possible. Rather than juggling your delicate and rare Pro1-X, always try using Caps Lock instead of pressing three keys at once 😉 And let me know if you find a three-key combination with Shift that I have missed!

As we are still not using the final keyboard driver, the two presets for "FN + SPACE sends POWER" and "FN + top row sends F1-F12" don't work in the current build (lineage-20.0-20230206-UNOFFICIAL-pro1x.zip). These features require further changes that are not yet ready for beta testing.

You can download the test build from https://drive.google.com/drive/folders/1Vs2gpUFJx9WRYMc2a2m7IHM0wWuP4_VU, and it can be installed using the same instructions as the normal beta builds. You don't need to factory reset when upgrading from an official beta to an unofficial one, and you shouldn't need to when switching back either. However, since this variant may have different bugs from the beta test on XDA, please use this thread to report bugs and I will try to fix them ASAP 🙂

UPDATE, 17Apr2023: Most of the features from the keyboard beta builds have been merged into official LineageOS builds, which will be available later this week (after April 20th). I won't be publishing any updated beta builds, and I recommend you switch to official LineageOS builds. Unfortunately this will require a factory reset, as we have no simple method for swapping the signing keys in Android 13 due to changes made by Google 😞

Edited by Sean McCreary
End beta test
  • Like 3
  • Thanks 1
Link to post
Share on other sites
  • Replies 98
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

LineageOS is a group project, and support for the Pro1-X wouldn't have been possible without Georg Veichtlbauer and@npjohnson's efforts. And of course we built upon @tdm's work on the Pro1 as well.

There's finally a build of LOS that works and I got myself a test build with it. It's still too early and barely works enough for the hardware but it's a great light at the end of the tunnel for Linea

FYI:  https://forum.xda-developers.com/t/lineageos-20-for-pro1-x.4543997/  

Posted Images

3 hours ago, Rasva said:

BTW: any chance to have (in future) also media controls? Increase/decrease volume at least, or brightness....

There are already dedicated buttons for volume on the side of the phone, and there is a slider for screen brightness in the notification shade (swipe down twice). But to answer the generic question, the key remapping feature allows you to reassign any key on the keyboard to whatever Linux key event code you prefer. For example, you could reassign the Del key to generate KEY_MUTE using this custom keymap rule:

21:0071:0071

Remember that the third value in the keymap rules is ignored by the current driver, and it does not support keycode modifier flags either. Right now, the only way to configure key combinations is with key character map (.kcm) rules. While it is possible for an app to inject custom .kcm files (like FinQwerty does), there is no simpler interface to use :classic_sad:

From a UI perspective, I think the best place to implement media controls is with keyboard shortcuts defined by the application. But again, there's no simple interface for users to add or modify the shortcuts defined by the app. However, as an example of what is possible, these are the keyboard shortcuts defined by the "Files" app (com.android.documentsui) included in the beta OS images:

Screenshot_20230207-083642_Files.png

  • Like 1
  • Thanks 1
Link to post
Share on other sites

I have uploaded lineage-20.0-20230207-UNOFFICIAL-pro1x.zip, adding the option to remap the 'Del' key to '\' to improve compatibility with native Android language overlays. While this won't improve agreement between the labels printed on the keys and the characters they generate, it does eliminate the 'missing keys' problem. For example, with the 'English (US)' language overlay enabled, the key labeled '?' will produce ';' and ':' (with Shift) like an ordinary QWERTY keyboard, and the key labeled '/' will produce '/' and '?'. Remapping 'Del' will make that key produce the two missing characters, '\' and '|'.

The bigger win comes with languages like Hungarian, as this change gives them back the missing 'Ű' key 😀. But we haven't really lost anything in exchange, as the old functionality has moved from 'Del' to 'Shift/Fn + Backspace'. So turn on your native language overlay, and kiss Fn goodbye!

To remap the 'Del' key use the toggle at "Settings -> System -> Languages & input -> Physical keyboard -> Advanced settings -> Del key sends backslash". I am open to suggestions for what to do with the left-hand yellow arrow key, assuming people will choose AltGr for the right-hand one. If you want to try remapping this key yourself, the key number is 68. For example, this rule will remap it to AltGr as well:

68:0064:0064

 

Edited by Sean McCreary
Caps Lock + Backspace -> Forward Delete was a bad idea
  • Thanks 1
Link to post
Share on other sites

To help you create your own custom keymaps, I updated @Slion's excellent keyboard map for the Pro1-X QWERTY layout and added the key numbers for each of the six modifier keys ('F logo' Fx, Shift, Ctrl, Alt, and right and left "yellow arrow" Fn). Remember that the two Shift keys are actually the same, as are the two Ctrl keys. Unfortunately, you can't map right and left Shift to different key codes, or right and left Ctrl either 🙁

keyboard-layout-pro1x-qwerty.png

  • Like 1
  • Thanks 5
Link to post
Share on other sites

By popular demand, lineage-20.0-20230209-UNOFFICIAL-pro1x.zip changes the built-in keyboard type to 'ALPHA'. This makes the Shift, Alt, and AltGr keys 'sticky' in some contexts, where Caps Lock is active for the next keypress. It does not make Ctrl, or Fn sticky, and has some other UI side effects.

I also added a change log at the end of README.md in the same folder as the OS images. To cut down on forum spam, I will stop announcing minor changes and only post notices for major bug fixes or similar large changes.

EDIT: It's Android's "press twice to lock" feature of ALPHA keyboards that bugs me. This change makes it very easy to get Caps Lock stuck with no clear indication of how to turn it off (press the 'Caps Lock' key, press Alt and Meta, press the Shift key again, etc.). Alt and AltGr will also lock when pressed twice, which leads to bug reports about "the keyboard stops working", as with Alt locked most of the keys don't generate any characters at all. This feature is a matter of personal taste, and unfortunately there's no easy way to turn it on and off from Settings. For now, run the previous build if you hate sticky keys, and I will try to find a better solution.

Edited by Sean McCreary
Alt and AltGr are sticky after all
  • Like 1
Link to post
Share on other sites
20 minutes ago, Sean McCreary said:

 changes the built-in keyboard type to 'ALPHA'.

If possisble it would be great if it was an option. I think it would be totally acceptable if changing this option would require a (deep) reboot.

Some love sticky shifts, other hates it, so would be great if we could choose. Thanks for all your work on this (also), unfortunately i have not found the time to install and test it (yet).

  • Like 2
Link to post
Share on other sites
On 2/9/2023 at 5:36 PM, Sean McCreary said:

It's Android's "press twice to lock" feature of ALPHA keyboards that bugs me.

lineage-20.0-20230212-UNOFFICIAL-pro1x.zip disables the "press twice to lock" feature. You can still press just one key at a time, but you'll need to press Shift/Alt/AltGr before every key you want to modify. Note that Caps Lock is available if you want more than one capital letter in a row. I hope this small change is a compromise everyone can accept.

On 2/9/2023 at 6:02 PM, EskeRahn said:

If possible it would be great if it was an option.

Early feedback on my patch to make the keyboard type configurable from Settings has been negative, suggesting it would be unlikely to appear in official builds of LineageOS. If you are building your own OS images and are interested in the patch, I can push it to my personal GitHub repository.

  • Thanks 3
Link to post
Share on other sites
7 hours ago, Sean McCreary said:

disables the "press twice to lock" feature. You can still press just one key at a time, but you'll need to press Shift/Alt/AltGr before every key you want to modify. Note that Caps Lock is available if you want more than one capital letter in a row. I hope this small change is a compromise everyone can accept.

If I understand well, that is a really good solution as sticky shift caused troubles for me but not when it was sticky for only one character. Thanks.

7 hours ago, Sean McCreary said:

Early feedback on my patch to make the keyboard type configurable from Settings has been negative, suggesting it would be unlikely to appear in official builds of LineageOS.

I wonder why.

Link to post
Share on other sites
7 hours ago, Sean McCreary said:

Early feedback on my patch to make the keyboard type configurable from Settings has been negative, suggesting it would be unlikely to appear in official builds of LineageOS. If you are building your own OS images and are interested in the patch, I can push it to my personal GitHub repository.

Thanks, I'm too lazy for doing that.

34 minutes ago, VaZso said:

I wonder why.

I guess it is a matter of keeping the options down, perhaps the idea is more along the line with what AICP would include.

Link to post
Share on other sites
1 hour ago, EskeRahn said:

I guess it is a matter of keeping the options down, perhaps the idea is more along the line with what AICP would include.

Right and I understand there are only a few phones exist with keyboard support, but that is not a negligible request...

Link to post
Share on other sites
1 hour ago, VaZso said:

Right and I understand there are only a few phones exist with keyboard support, but that is not a negligible request...

AICP for Pro1 is stuck in a strange limbo, as the downgraded the major Android without saying so, but kept the overall version number as 17.1 - see https://community.fxtec.com/topic/3618-pro1-aicp-171-android-s-official-build/

 

Link to post
Share on other sites
11 hours ago, Sean McCreary said:

If you are building your own OS images and are interested in the patch, I can push it to my personal GitHub repository.

Not sure if I will include it in the end, but as the option of switching between "full" and "alpha" has been requested several times, I would be quite interested in how you would have implemented that.

Otherwise, disabling the "double shift = caps" function seems like a very good idea and a good compromise between both worlds. First time I accidentally triggered that mode, it drove me nuts, and I was pretty harsh toward that poor, innocent caps key ... 😳

  • Like 2
Link to post
Share on other sites
3 hours ago, claude0001 said:

[T]he option of switching between "full" and "alpha" has been requested several times, I would be quite interested in how you would have implemented that.

The general idea is for Settings to set a global value, and and a modified KeyCharacterMap.java to check that value instead of depending on the .kcm files. The negative reviews are about the various possible ways to do this: a setting, a system property, etc. An instance variable isn't usable for this as each app gets a different instance of the KeyCharacterMap object, so there's no way to use a method in the class itself and have the change take effect in all instances. The normal way to do this is to add a new setting in LineageOS' SDK, but unfortunately the SDK can't be linked against the core classes due to a circular dependency :-(

My functional patch uses a system property to communicate from Settings to the KeyCharacterMap instances. However, (as far as I know) there is no ContentProvider for system properties, so a ContentObserver can't be used to 'watch' for changes. The functional patch calls SystemProperty.get() *each* time it needs to know the keyboard type, which is very ugly :-( To control whether modifier keys are 'sticky', this call happens on each keystroke.

It should be possible to add a setting to Android itself (rather than in the LineageOS SDK) avoiding the circular dependency. But keeping those changes inside the SDK is the norm for LineageOS development, so this strategy is also likely to receive negative reviews. I have not thought of another way to implement this patch that might be more acceptable, and so I am pushing the compromise patch instead as it is much, much simpler: https://review.lineageos.org/c/LineageOS/android_frameworks_base/+/348988

  • Thanks 2
Link to post
Share on other sites
5 hours ago, Sean McCreary said:

so I am pushing the compromise patch instead as it is much, much simpler: https://review.lineageos.org/c/LineageOS/android_frameworks_base/+/348988

Yeah, I had seen that one. And I've already picked it up in my lineage-16.0 ROM for Pro1. 🙂

Thanks for coming up with this simple but effective solution! Those two lines of code may have their place with a HW keyboard that has no caps-lock. But with the Pro1/Pro1X, omitting them certainly improves intuitive use! For me this "compromise" is perfect as, apart from the "double-shift = caps lock"-behaviour, I actually like the features of an ALPHA keyboard.

Edited by claude0001
  • Like 4
Link to post
Share on other sites
11 hours ago, EL Duderachi said:

Is this work, in the end, going towards the indiegogo 'pro1x with lineage' phone?

Yes it is exactly that. The difference being that, unlike originally planned, the Pro1-X does not ship with Lineage preinstalled. It comes with Android and you have to flash Lineage yourself.

While several Pro1-X owners (including myself) have installed the Lineage port and use it successfully (as far as the phones binary blobs allow), note that it is still unofficial and that bugs are to be expected. Sooner or later, it should appear in the list of officially supported ports at lineageos.org -- hopefully then also based on more mature closed-source drivers.

11 hours ago, EL Duderachi said:

Thanks again for all the work.

I can only second that. All credit goes to @Sean McCreary.

Edited by claude0001
  • Like 5
Link to post
Share on other sites
  • 2 months later...

I just shot some pictures of my Pro1x to put it up for sale. Some may remember that the first day I used the phone was also the last because I was unavailable and my mom ended up in the hospital. So much for the background noise... It's been laying in the box ever since.
Now I'm reading about LoS and hoping maybe someone will be able to fix the bad/ lacking reception. Should have checked here before. Perhaps I should at least give a shot when it's released.

Forgive me for crossposting, but anyone having any positive effect with the beta's and reception?

Link to post
Share on other sites
1 hour ago, DieBruine said:

Now I'm reading about LoS and hoping maybe someone will be able to fix the bad/ lacking reception. Should have checked here before. Perhaps I should at least give a shot when it's released.

The unofficial builds of LOS have been available for some time. While it is great that they are now to become official, for me, they unfortunately never made any difference with regard to mobile connectivity.

Note that does not necessarily mean its hardware issues. LOS has to use the closed-source driver blobs from stock firmware as-is. If the bugs are in there, they couldn't fix them even if they wanted.

  • Like 1
Link to post
Share on other sites
  • Hook locked this topic
Guest
This topic is now closed to further replies.

×
×
  • Create New...

Important Information

Terms