osfans / trime

同文安卓輸入法平臺3.x/Android-rime/Rime Input Method Engine for Android
http://osfans.github.io/trime/
GNU General Public License v3.0
3.08k stars 372 forks source link

3.2.2版的两个bug和一条建议 #515

Closed flypyxh closed 3 years ago

flypyxh commented 3 years ago

1.bug: liquid_keyboard_switch不放在cilck,而放在long_click,会出现闪退现象。 2.bug: 在点击liquid_keyboard_switch前,键盘进行状态栏开关操作,状态栏开关正常,而当点击liquid_keyboard_switch后,再回到主键盘进行状态栏关操作时,显示效果是状态栏关正常,但主键盘会上移到状态栏的位置。

3.一条建议: keyboard_padding_landscape: 40 #横屏模式下,屏幕左右两侧与键盘的距离(避免横屏UI变形) 此条参数实现了键盘居中,左右留空的效果。能不能再完善下,把左右留空的参数分开来设置,这样就能实现左右手键盘的效果,无论是改参数或者改主题都会方便很多。

tumuyan commented 3 years ago
  1. 之前已经发现预设开关有错误 改写开关的状态为[ 更多,普通 ] 可以解决问题(也可能有更合适的写法,但是我不会)
  2. 实际上多项设置参数都不能正确即时生效,需要慢慢修…比如liquidKeyboard的配色并没很好的跟随主题配色
  3. 这个原理是不一样的, 左右padding参数分开设置并不能让键盘整体缩小. 单手键盘需要缩小整个键盘的尺寸,而padding的效果是键盘还是那么大,单纯按键区域变小了.
flypyxh commented 3 years ago

1.确实状态问题,已解决。 2.我想是不是符号的横项菜单不占用状态栏,还是在键盘区显示,应该就能解决挤占状态栏问题。 3.左右留空是缩窄了键的宽度,键高度需要另外设,但也就是一个参数设置的问题,如果左右分开设就能减轻大量的主题键盘工作。

flypyxh commented 3 years ago

2的问题描述不完整,应该是下面两种情况: ①开状态栏的情况下,启用了符号键盘,返回主键盘,此时关状态栏,主键盘会上移到原来状态栏的位置 ②关状态栏的情况下,启用了符号键盘,返回主键盘,此时开状态栏,主键盘会下移,上面留给状态栏显示 即符号键盘启用后的高度限定了最终高度,后面关状态栏就会让主键盘上移填补高度;后面开状态栏就会把主键盘往下压。 所以我想,符号键盘不去占用状态栏位置,就不会出现这种情况。

tumuyan commented 3 years ago
  1. 问题其实很复杂,并非liquidKeyboard带来的问题,而是近期整个键盘布局都调整了,所以需要慢慢修。
  2. 我觉得这不是好的解决办法。但是后边会增加参数,预计是这样的:
    keyboard_padding: 0 #竖屏模式下,屏幕左右两侧与键盘的距离(曲面屏减少误触)
    keyboard_padding_bottom: 10 #竖屏模式下,屏幕下边缘与键盘的距离(避免误触发全面屏手势)
    keyboard_padding_land_left: 40 #横屏模式下,屏幕左侧与键盘的距离(避免横屏UI变形)
    keyboard_padding_land_right: 40 #横屏模式下,屏幕右侧与键盘的距离(避免横屏UI变形)
    keyboard_padding_land_bottom: 0 #横屏模式下,屏幕下侧与键盘的距离
flypyxh commented 3 years ago

3.我主要关心竖屏左右分设留空边距,这样便于建立左右单手键盘。   横屏基本没用过,想象中横屏的参数设置,我倒觉得左右边距不用分设,横屏单手握机并打字不知道能不能拿稳手机;横屏的话如果增加参数是不是可考虑在建立左右手两个键盘的情况下,在中间加宽度设置参数,便于控制左右两个键盘放在更合适的位置:

  keyboard_padding_left: 10 #竖屏模式下,屏幕左侧与键盘的距离(避免横屏UI变形)   keyboard_padding_right: 40 #竖屏模式下,屏幕右侧与键盘的距离(避免横屏UI变形)   keyboard_padding_bottom: 10 #竖屏模式下,屏幕下边缘与键盘的距离(避免误触发全面屏手势)

  keyboard_padding_land: 10 #横屏模式下,屏幕左右两侧与键盘的距离(曲面屏减少误触)   keyboard_padding_land_bottom: 10 #横屏模式下,屏幕下侧与键盘的距离   keyboard_padding_land_middle: 80  #横屏模式下,左右键盘之间的距离

------------------ 原始邮件 ------------------ 发件人: "osfans/trime" @.>; 发送时间: 2021年9月4日(星期六) 凌晨0:09 @.>; @.**@.>; 主题: Re: [osfans/trime] 3.2.2版的两个bug和一条建议 (#515)

问题其实很复杂,并非liquidKeyboard带来的问题,而是近期整个键盘布局都调整了,所以需要慢慢修。

我觉得这不是好的解决办法。但是后边会增加参数,预计是这样的: keyboard_padding: 0 #竖屏模式下,屏幕左右两侧与键盘的距离(曲面屏减少误触) keyboard_padding_bottom: 10 #竖屏模式下,屏幕下边缘与键盘的距离(避免误触发全面屏手势) keyboard_padding_land_left: 40 #横屏模式下,屏幕左侧与键盘的距离(避免横屏UI变形) keyboard_padding_land_right: 40 #横屏模式下,屏幕右侧与键盘的距离(避免横屏UI变形) keyboard_padding_land_bottom: 0 #横屏模式下,屏幕下侧与键盘的距离
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

tumuyan commented 3 years ago

横屏的话如果增加参数是不是可考虑在建立左右手两个键盘的情况下,在中间加宽度设置参数,便于控制左右两个键盘放在更合适的位置:

分成左右两个键盘还是要靠皮肤增加空按键来实现, 直接设参数要对现在的键盘大改,而且容易出bug. 左右两侧拟定除left right外, 我打算增加一个交换左右padding的开关,你觉得有必要嘛?

flypyxh commented 3 years ago

横屏只是我的一种想象,如果实现容易可考虑,实现不容易也影响不大,我觉得主要还是要看竖屏。

交换左右padding开关,这个很好,从建主题的角度来说,只要建一个左手键盘,就能切换到右手键盘,不需要用两个主题来实现了。 不知道有没可能从默认键盘直接切换成左右手键盘,如果能实现,就不用新建主题了。

------------------ 原始邮件 ------------------ 发件人: "osfans/trime" @.>; 发送时间: 2021年9月4日(星期六) 下午4:10 @.>; @.**@.>; 主题: Re: [osfans/trime] 3.2.2版的两个bug和一条建议 (#515)

横屏的话如果增加参数是不是可考虑在建立左右手两个键盘的情况下,在中间加宽度设置参数,便于控制左右两个键盘放在更合适的位置:

分成左右两个键盘还是要靠皮肤增加空按键来实现, 直接设参数要对现在的键盘大改,而且容易出bug. 左右两侧拟定除left right外, 我打算增加一个交换左右padding的开关,你觉得有必要嘛?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

tumuyan commented 3 years ago

我不太确定,目前的键盘按键(不是状态栏)能写3个状态的开关嘛?如果可以能不能给我一个例子?用2个开关似乎又很奇怪

flypyxh commented 3 years ago

状态开关其实不用写在状态栏上也不用写在主键盘上,可以单独写在一个做菜单的键盘上,只要各自能和主键盘做成切换状态就好。比如我现在的主题就有个菜单界面,如下图:

https://github.com/flypyxh/images/blob/main/zvy.png

不知道怎么在回复中加图片。

ivysrono commented 3 years ago

3.2.2 fdroid 编译失败

https://f-droid.org/repo/com.osfans.trime_20210813.log.gz

可以推送修复了这些Bug的新版了

flypyxh commented 3 years ago

现在在这反馈问题不知道能收到吗?

因为使用了DND编译的0918版,所以体验了一下padding参数:

keyboard_padding: 5 #竖屏模式下,屏幕左右两侧与键盘的距离(曲面屏减少误触) keyboard_padding_left: 0 #竖屏屏模式下,左手键盘布局,屏幕左侧与键盘的距离 keyboard_padding_right: 40 #竖屏屏模式下,左手键盘布局,屏幕右侧与键盘的距离 上面是参数设置 one_hand_switch_1: {toggle: _one_hand_mode_1, send: Mode_switch, states: [ 左手, 普通 ]} one_hand_switch_2: {toggle: _one_hand_mode_2, send: Mode_switch, states: [ 右手, 普通 ]} one_hand_switch_3: {toggle: _one_hand_mode_3, send: Mode_switch, states: [ 左手, 右手 ]} 这三种状态我猜是想达到:1.左手模式和普通;2.右手模式和普通;3.左手和右手模式

我在状态栏中设置了两种状态,如下:

前一种达到了切换左手和右手键盘的目的: 第一次点击1,左边取0,右边取40,达到左手键盘;再次点击2,左边取40,右边取0,达到右手键盘。即左右手键盘的切换

后一种本想达到和前一种相同目的: 第一次点击3,左边取0,右边取40,达成左手键盘;再次点击3,左边取40,右边取0,达成右手键盘(但实际无效,结果只能达成左手键盘)

因此3没有在切换时分左右取值40,而使得键盘只偏向一方,这应该是bug,但这不是我想讨论的内容。

我想的是既然一个参数能分左右取,那么是不是这样设置参数比较好:

keyboard_padding: 5 #竖屏模式下,屏幕左右两侧与键盘的距离(曲面屏减少误触) keyboard_padding_leftORright: 40 #竖屏屏模式下,键盘左边或右边离屏幕边缘+padding的距离 keyboard_padding_middle: 20 #竖屏屏模式下,键盘左右两边离屏幕边缘+padding的距离

padding项为全局左右边缘距离,调整此项来匹配曲面屏的边缘问题,这样就不用再用left、right两个值来调整曲面屏左右手键盘左右窄边和宽边 后两项值做为增量处理,leftORright项的值,1状态40取为右边,达成左手键盘和普通,2状态40取为左边达成右手键盘和普通,3状态40分设左或右达成左手和右手键盘 middle项的值20为左右两边取值,达成居中键盘

即leftORright参数的设置就已经达到了123个状态取值的目的,还多了一个居中键盘。而现在这种方式如果用padding值来达到居中键盘目的,那么普通键盘和居中键盘无法切换

上面状态栏的设置方式,还缺一个恢复普通键盘的键4。 我知道状态栏还有另一种状态开关方法,但那种方法在状态栏的样子是: “ 1/普通 2/普通 4/普通”这样的状态显得复杂, 我想在状态栏上显示的效果是:“1 4 普通”,其中1达到12左右手键盘的目的,4达到居中键盘的目的,普通恢复。

tumuyan commented 3 years ago

现在在这反馈问题不知道能收到吗?

后边可能把暴露的开关改为command,但是暂时不打算再做参数和实现方式的调整了。

目前开关相关代码是这样的,可以帮助你理解是怎么工作的(包括你的第二个开关为什么没有工作):

 if (option.startsWith("_one_hand_mode")) {
          char c = option.charAt(option.length() - 1);
          if (c == '1' && value) one_hand_mode = 1;
          else if (c == '2' && value) one_hand_mode = 2;
          else if (c == '3') one_hand_mode = value ? 1 : 2;
}
...

  switch (one_hand_mode) {
        case 0:
          // 普通键盘
          keyboardPadding[0] = getPixel("keyboard_padding");
          keyboardPadding[1] = keyboardPadding[0];
          keyboardPadding[2] = getPixel("keyboard_padding_bottom");
          break;
        case 1:
          // 左手键盘
          keyboardPadding[0] = getPixel("keyboard_padding_left");
          keyboardPadding[1] = getPixel("keyboard_padding_right");
          keyboardPadding[2] = getPixel("keyboard_padding_bottom");
          break;
        case 2:
          // 右手键盘
          keyboardPadding[1] = getPixel("keyboard_padding_left");
          keyboardPadding[0] = getPixel("keyboard_padding_right");
          keyboardPadding[2] = getPixel("keyboard_padding_bottom");
          break;
      }
flypyxh commented 3 years ago

看不太懂,据群里解释是less和more,即left定义窄边,right定义宽边,这个我是知道的,所以我说一个参数就能完成123三个状态。算了,不纠结这个了,以后慢慢了解吧。

------------------ 原始邮件 ------------------ 发件人: "osfans/trime" @.>; 发送时间: 2021年9月20日(星期一) 晚上6:50 @.>; @.**@.>; 主题: Re: [osfans/trime] 3.2.2版的两个bug和一条建议 (#515)

现在在这反馈问题不知道能收到吗?

后边可能把暴露的开关改为command,但是暂时不打算再做参数和实现方式的调整了。

目前开关相关代码是这样的,可以帮助你理解是怎么工作的(包括你的第二个开关为什么没有工作): `` if (option.startsWith("_one_hand_mode")) { char c = option.charAt(option.length() - 1); if (c == '1' && value) one_hand_mode = 1; else if (c == '2' && value) one_hand_mode = 2; else if (c == '3') one_hand_mode = value ? 1 : 2; } ...

switch (one_hand_mode) { case 0: // 普通键盘 keyboardPadding[0] = getPixel("keyboard_padding"); keyboardPadding[1] = keyboardPadding[0]; keyboardPadding[2] = getPixel("keyboard_padding_bottom"); break; case 1: // 左手键盘 keyboardPadding[0] = getPixel("keyboard_padding_left"); keyboardPadding[1] = getPixel("keyboard_padding_right"); keyboardPadding[2] = getPixel("keyboard_padding_bottom"); break; case 2: // 右手键盘 keyboardPadding[1] = getPixel("keyboard_padding_left"); keyboardPadding[0] = getPixel("keyboard_padding_right"); keyboardPadding[2] = getPixel("keyboard_padding_bottom"); break; }

``

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

tumuyan commented 3 years ago

看不太懂,据群里解释是less和more,即left定义窄边,right定义宽边,这个我是知道的,所以我说一个参数就能完成123三个状态。算了,不纠结这个了,以后慢慢了解吧。 ------------------ 原始邮件 ------------------ 发件人: "osfans/trime" @.>; 发送时间: 2021年9月20日(星期一) 晚上6:50 @.>; @.**@.>; 主题: Re: [osfans/trime] 3.2.2版的两个bug和一条建议 (#515) 现在在这反馈问题不知道能收到吗? 后边可能把暴露的开关改为command,但是暂时不打算再做参数和实现方式的调整了。 目前开关相关代码是这样的,可以帮助你理解是怎么工作的(包括你的第二个开关为什么没有工作): if (option.startsWith("_one_hand_mode")) { char c = option.charAt(option.length() - 1); if (c == '1' && value) one_hand_mode = 1; else if (c == '2' && value) one_hand_mode = 2; else if (c == '3') one_hand_mode = value ? 1 : 2; } ... switch (one_hand_mode) { case 0: // 普通键盘 keyboardPadding[0] = getPixel("keyboard_padding"); keyboardPadding[1] = keyboardPadding[0]; keyboardPadding[2] = getPixel("keyboard_padding_bottom"); break; case 1: // 左手键盘 keyboardPadding[0] = getPixel("keyboard_padding_left"); keyboardPadding[1] = getPixel("keyboard_padding_right"); keyboardPadding[2] = getPixel("keyboard_padding_bottom"); break; case 2: // 右手键盘 keyboardPadding[1] = getPixel("keyboard_padding_left"); keyboardPadding[0] = getPixel("keyboard_padding_right"); keyboardPadding[2] = getPixel("keyboard_padding_bottom"); break; } — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

_one_hand_mode_1 打开,左手 _one_hand_mode_2 打开,右手 _one_hand_mode_3 打开,左手 _one_hand_mode_3 关闭,右手 其他开关事件回复普通模式

flypyxh commented 3 years ago

我再把问题简化下,我先点击左手键盘,然后换到右手键盘,然后我想再换到左手键盘,怎么办?此时原来两个状态“左/常”“右/常”已经变成“常/左”“常/右”,就是说无论点哪个,都是恢复常规键盘。

---原始邮件--- 发件人: @.> 发送时间: 2021年9月20日(周一) 晚上10:12 收件人: @.>; 抄送: @.**@.>; 主题: Re: [osfans/trime] 3.2.2版的两个bug和一条建议 (#515)

看不太懂,据群里解释是less和more,即left定义窄边,right定义宽边,这个我是知道的,所以我说一个参数就能完成123三个状态。算了,不纠结这个了,以后慢慢了解吧。 … ------------------ 原始邮件 ------------------ 发件人: "osfans/trime" @.>; 发送时间: 2021年9月20日(星期一) 晚上6:50 @.>; @.@.>; 主题: Re: [osfans/trime] 3.2.2版的两个bug和一条建议 (#515) 现在在这反馈问题不知道能收到吗? 后边可能把暴露的开关改为command,但是暂时不打算再做参数和实现方式的调整了。 目前开关相关代码是这样的,可以帮助你理解是怎么工作的(包括你的第二个开关为什么没有工作): if (option.startsWith("_one_hand_mode")) { char c = option.charAt(option.length() - 1); if (c == '1' && value) one_hand_mode = 1; else if (c == '2' && value) one_hand_mode = 2; else if (c == '3') one_hand_mode = value ? 1 : 2; } ... switch (one_hand_mode) { case 0: // 普通键盘 keyboardPadding[0] = getPixel("keyboard_padding"); keyboardPadding[1] = keyboardPadding[0]; keyboardPadding[2] = getPixel("keyboard_padding_bottom"); break; case 1: // 左手键盘 keyboardPadding[0] = getPixel("keyboard_padding_left"); keyboardPadding[1] = getPixel("keyboard_padding_right"); keyboardPadding[2] = getPixel("keyboard_padding_bottom"); break; case 2: // 右手键盘 keyboardPadding[1] = getPixel("keyboard_padding_left"); keyboardPadding[0] = getPixel("keyboard_padding_right"); keyboardPadding[2] = getPixel("keyboard_padding_bottom"); break; } — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

_one_hand_mode_1 打开,左手 _one_hand_mode_2 打开,右手 _one_hand_mode_3 打开,左手 _one_hand_mode_3 关闭,右手 其他开关事件回复普通模式

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

tumuyan commented 3 years ago

打开关闭_one_hand_mode_3 开关即可打开左手和右手。恢复可以随便新建一个不存在参数的开关,比如开关_one_hand_mode_0,点击按钮始终恢复普通键盘

flypyxh commented 3 years ago

原来这样就能恢复常态,要的就是这个。

---原始邮件--- 发件人: @.> 发送时间: 2021年9月22日(周三) 上午8:46 收件人: @.>; 抄送: @.**@.>; 主题: Re: [osfans/trime] 3.2.2版的两个bug和一条建议 (#515)

打开关闭_one_hand_mode_3 开关即可打开左手和右手。恢复可以随便新建一个不存在参数的开关,比如开关_one_hand_mode_0,点击按钮始终恢复普通键盘

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.