Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

中文输入模式下输入数字或英文字母后,紧接着的标点会自动变成英文标点,怎么禁用这个功能? #376

Closed
cy18 opened this issue Jun 12, 2020 · 9 comments
Labels

Comments

@cy18
Copy link

cy18 commented Jun 12, 2020

有时候一句中文最后出现一个英文单词或者数字,这时候其实是想要中文标点的,但是出来的却是英文标点。想把这个功能禁用掉,但是搜了半天没搜到相关的网页,过来请教下。

@cy18
Copy link
Author

cy18 commented Jul 22, 2020

又搜了下,发现是0.9.12添加的第三条新功能,看了下源码,好像没有提供关闭的选项?

小狼毫 0.9.12 <2012-05-05>

    用 Shift+Del 刪除已記入用戶詞典的詞條,詳見 Issue 117
    可選用Shift或Control爲中西文切換鍵,詳見 Issue 133
    數字後的句號鍵識別爲小數點、冒號鍵識別爲時分秒分隔符
    解決在QQ等應用程序中的定位問題
    支持設置爲系統默認輸入法
    支持多個Windows用戶(新用戶執行一次佈署後方可使用)

@iDvel
Copy link

iDvel commented May 14, 2022

另外问一下,既然数字后面能自动换成英文的句号和冒号,那么英文后面是不是也应该自动换一下。
或者让这个功能可以配置就好啦。

@sweepingmonk123
Copy link

这个现在是可以配置的了吗

@dnxxymcj
Copy link

dnxxymcj commented Jul 1, 2023

另外问一下,既然数字后面能自动换成英文的句号和冒号,那么英文后面是不是也应该自动换一下。 或者让这个功能可以配置就好啦。

大佬这个可配置了吗?

@gxh1996
Copy link

gxh1996 commented Sep 15, 2023

我也想知道

@fyang93
Copy link

fyang93 commented Nov 15, 2023

还没有禁用选项吗?这个属实很影响使用

@eagleoflqj eagleoflqj added the bug label Nov 17, 2023
@mokapsing
Copy link
Contributor

mokapsing commented Jan 10, 2024

用lua可以实现

local P = {}

function P.init(env) end

function P.fini(env) end

function P.func(key_event, env)
    env.engine.context.commit_history:clear()
    return 2
end

return P

@s92671
Copy link

s92671 commented Jan 11, 2024

lua实现代码,供参考
原理:中文模式下,监测到输入数字后的按键代码是46(.)或58(:)时,输入对应的中文标点

local P = {}

function P.init(env)
end

function P.fini(env)
end

function P.func(key, env)
    -- return 0,1,2
    -- 0拒绝,librime不做处理
    -- 1接受,仅本processor处理
    -- 2跳过,本processor不做处理

    if key:release() then -- 不处理按键释放事件
        return 2
    end

    if key:ctrl() or key:alt() or key:super() then -- 不处理的按键事件
        return 2
    end
    local context = env.engine.context
    if context:is_composing() or context:get_option("ascii_mode") then -- 有未上屏的编码,英文模式
        return 2
    end

    local keycode = key.keycode
    local char = {
        [46] = "",
        [58] = "",
        [44] = ""
    }
    if char[keycode] then
        local last_ch = context.commit_history:back()
        if last_ch and last_ch.text:match("%d$") then
            env.engine:commit_text(char[keycode])
            context:clear()
            return 1
        end
    end

    return 2
end

return P

@oTnTh
Copy link

oTnTh commented Sep 14, 2024

这个功能目前流行的输入法似乎都有,但是默认开启并且无法关闭就不太合理了。

以下是我从个人笔记里翻出来的一些句子:

  • 2022-06-18,到手价102.95,斤价429。
  • 画面还可以,但是卡顿很多,帧率会从60直接掉到0。
  • 家里虽然有延长线,应该都不支持USB 3.0。
  • XX市XX路,姓名,189XXXX。
  • 先升级到越狱比较简单点的版本,5.10.3。
  • 最后还是买了个K60。
  • 第一个4G的fat32,剩下的则格式化为ext3。

由此可见,“中文输入时,半角数字后面不可能出现句号”这个前提条件是不成立的。

我明白每个人的使用习惯不同,有的人还希望数字后面的逗号也变成半角的。

所以最好的法子,还是给个开关,让用户自己决定要不要开启。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests