librime
librime copied to clipboard
中文输入模式下输入数字或英文字母后,紧接着的标点会自动变成英文标点,怎么禁用这个功能?
有时候一句中文最后出现一个英文单词或者数字,这时候其实是想要中文标点的,但是出来的却是英文标点。想把这个功能禁用掉,但是搜了半天没搜到相关的网页,过来请教下。
又搜了下,发现是0.9.12添加的第三条新功能,看了下源码,好像没有提供关闭的选项?
小狼毫 0.9.12 <2012-05-05>
用 Shift+Del 刪除已記入用戶詞典的詞條,詳見 Issue 117
可選用Shift或Control爲中西文切換鍵,詳見 Issue 133
數字後的句號鍵識別爲小數點、冒號鍵識別爲時分秒分隔符
解決在QQ等應用程序中的定位問題
支持設置爲系統默認輸入法
支持多個Windows用戶(新用戶執行一次佈署後方可使用)
另外问一下,既然数字后面能自动换成英文的句号和冒号,那么英文后面是不是也应该自动换一下。 或者让这个功能可以配置就好啦。
这个现在是可以配置的了吗
另外问一下,既然数字后面能自动换成英文的句号和冒号,那么英文后面是不是也应该自动换一下。 或者让这个功能可以配置就好啦。
大佬这个可配置了吗?
我也想知道
还没有禁用选项吗?这个属实很影响使用
用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
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