Sean McCreary 313 Posted February 7 Share Posted February 7 (edited) 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 🙂 Edited February 7 by Sean McCreary Fix typo 4 1 Quote Link to post Share on other sites
Rasva 24 Posted February 7 Share Posted February 7 @Sean McCreary I will give it a try. BTW: any chance to have (in future) also media controls? Increase/decrease volume at least, or brightness.... 1 Quote Link to post Share on other sites
Sean McCreary 313 Posted February 7 Share Posted February 7 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 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: 2 1 Quote Link to post Share on other sites
Sean McCreary 313 Posted February 8 Share Posted February 8 (edited) 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 February 8 by Sean McCreary Caps Lock + Backspace -> Forward Delete was a bad idea 1 Quote Link to post Share on other sites
Sean McCreary 313 Posted February 8 Share Posted February 8 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 🙁 1 6 Quote Link to post Share on other sites
Sean McCreary 313 Posted February 8 Share Posted February 8 lineage-20.0-20230208-UNOFFICIAL-pro1x.zip includes the February ASB patches (with date 'February 5, 2023'), and removes the mapping rule for 'Caps Lock + Backspace -> Forward Delete'. After a only few minutes of testing I realized this was a terrible idea, as it made correcting my typos with Caps Lock on much less natural 😉 Quote Link to post Share on other sites
Sean McCreary 313 Posted February 10 Share Posted February 10 (edited) 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 February 10 by Sean McCreary Alt and AltGr are sticky after all 2 Quote Link to post Share on other sites
EskeRahn 4,971 Posted February 10 Share Posted February 10 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). 2 Quote Link to post Share on other sites
Sean McCreary 313 Posted February 12 Share Posted February 12 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. 3 Quote Link to post Share on other sites
VaZso 1,940 Posted February 13 Share Posted February 13 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. Quote Link to post Share on other sites
EskeRahn 4,971 Posted February 13 Share Posted February 13 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. Quote Link to post Share on other sites
VaZso 1,940 Posted February 13 Share Posted February 13 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... Quote Link to post Share on other sites
EskeRahn 4,971 Posted February 13 Share Posted February 13 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/ Quote Link to post Share on other sites
claude0001 1,055 Posted February 13 Share Posted February 13 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 ... 😳 2 Quote Link to post Share on other sites
Sean McCreary 313 Posted February 13 Share Posted February 13 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 1 2 Quote Link to post Share on other sites
claude0001 1,055 Posted February 13 Share Posted February 13 (edited) 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 February 13 by claude0001 4 Quote Link to post Share on other sites
EL Duderachi 12 Posted February 14 Share Posted February 14 Thanks for all the Lineage work that is being done. Is this work, in the end, going towards the indiegogo 'pro1x with lineage' phone? I am still patiently waiting for one since my pledge there, quite a few moons ago. Thanks again for all the work. 2 1 Quote Link to post Share on other sites
claude0001 1,055 Posted February 15 Share Posted February 15 (edited) 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 February 15 by claude0001 5 Quote Link to post Share on other sites
Sean McCreary 313 Posted February 15 Share Posted February 15 4 hours ago, claude0001 said: All credit goes to @Sean McCreary 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. 6 4 Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.