Skip to content

Commit

Permalink
feat: 在数字后输入句号时,自动转为小数点
Browse files Browse the repository at this point in the history
  • Loading branch information
qwertyyb committed Apr 14, 2023
1 parent 2fb545b commit 12a9b2f
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 10 deletions.
35 changes: 25 additions & 10 deletions Fire/FireInputController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ typealias NotificationObserver = (name: Notification.Name, callback: (_ notifica
class FireInputController: IMKInputController {
private var _candidates: [Candidate] = []
private var _hasNext: Bool = false
private var _lastInputIsNumber = false
internal var inputMode: InputMode {
get { Fire.shared.inputMode }
set(value) { Fire.shared.inputMode = value }
Expand Down Expand Up @@ -152,6 +153,16 @@ class FireInputController: IMKInputController {
return nil
}

private func predictorHandler(event: NSEvent) -> Bool? {
if Defaults[.enableDotAfterNumber] && event.keyCode == kVK_ANSI_Period && _lastInputIsNumber {
insertText(".")
_lastInputIsNumber = false
return true
}
_lastInputIsNumber = false
return nil
}

private func pageKeyHandler(event: NSEvent) -> Bool? {
// +/-/arrowdown/arrowup翻页
let keyCode = event.keyCode
Expand All @@ -176,9 +187,8 @@ class FireInputController: IMKInputController {
}

private func deleteKeyHandler(event: NSEvent) -> Bool? {
let keyCode = event.keyCode
// 删除键删除字符
if keyCode == kVK_Delete {
if event.keyCode == kVK_Delete {
if _originalString.count > 0 {
_originalString = String(_originalString.dropLast())
return true
Expand Down Expand Up @@ -231,14 +241,17 @@ class FireInputController: IMKInputController {
// 获取输入的字符
let string = event.characters!
// 当前输入的是数字,选择当前候选列表中的第N个字符 v
if let pos = Int(string), _originalString.count > 0 {
let index = pos - 1
if index < _candidates.count {
insertCandidate(_candidates[index])
} else {
_originalString += string
if let pos = Int(string) {
if _originalString.count > 0 {
let index = pos - 1
if index < _candidates.count {
insertCandidate(_candidates[index])
} else {
_originalString += string
}
return true
}
return true
_lastInputIsNumber = true
}
return nil
}
Expand Down Expand Up @@ -292,6 +305,7 @@ class FireInputController: IMKInputController {
hotkeyHandler,
flagChangedHandler,
enModeHandler,
predictorHandler,
pageKeyHandler,
deleteKeyHandler,
charKeyHandler,
Expand Down Expand Up @@ -356,9 +370,10 @@ class FireInputController: IMKInputController {
NSLog("insertText: %@", text)
let value = NSAttributedString(string: text)
try client()?.insertText(value, replacementRange: replacementRange())
_lastInputIsNumber = text.last != nil && Int(String(text.last!)) != nil
clean()
}

// 往输入框中插入原始字符
func insertOriginText() {
if self._originalString.count > 0 {
Expand Down
4 changes: 4 additions & 0 deletions Fire/Preferences/PunctuationPane.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import Defaults
struct PunctuationPane: View {
@Default(.punctuationMode) private var punctuationMode
@Default(.customPunctuationSettings) private var customPunctuationSettings
@Default(.enableDotAfterNumber) private var enableDotAfterNumber
var body: some View {
Preferences.Container(contentWidth: 450) {
Preferences.Section(title: "") {
Expand All @@ -24,6 +25,9 @@ struct PunctuationPane: View {
}
Spacer(minLength: 150)
}
HStack {
Toggle("数字后输入 “。”自动转为 “.”", isOn: $enableDotAfterNumber)
}
VStack(alignment: .leading) {
Text("自定义符号")
Spacer(minLength: 4)
Expand Down
2 changes: 2 additions & 0 deletions Fire/types.swift
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,8 @@ extension Defaults.Keys {
// 标点符号配置
static let punctuationMode = Key<PunctuationMode>("punctuationMode", default: PunctuationMode.zhhans)
static let customPunctuationSettings = Key<[String: String]>("customPunctuationSettings", default: punctuation)
// 数字后输入"。"自动转为"."
static let enableDotAfterNumber = Key<Bool>("enableDotAfterNumber", default: true)

static let wbTablePath = Key<String>(
"wbTableURL",
Expand Down

0 comments on commit 12a9b2f

Please sign in to comment.