NSEvent // Make .text() safer.

This commit is contained in:
ShikiSuen 2023-06-09 21:52:31 +08:00
parent d92c5d3669
commit af715ad8d8
2 changed files with 7 additions and 7 deletions

View File

@ -23,10 +23,7 @@ public extension NSEvent {
isARepeat: Bool? = nil, isARepeat: Bool? = nil,
keyCode: UInt16? = nil keyCode: UInt16? = nil
) -> NSEvent? { ) -> NSEvent? {
let oldChars: String = { let oldChars: String = text
if self.type == .flagsChanged { return "" }
return self.characters ?? ""
}()
return NSEvent.keyEvent( return NSEvent.keyEvent(
with: type ?? self.type, with: type ?? self.type,
location: location ?? locationInWindow, location: location ?? locationInWindow,
@ -78,7 +75,10 @@ public extension NSEvent {
public extension NSEvent { public extension NSEvent {
var isTypingVertical: Bool { charactersIgnoringModifiers == "Vertical" } var isTypingVertical: Bool { charactersIgnoringModifiers == "Vertical" }
var text: String { characters ?? "" } /// NSEvent.characters
/// - Remark: event.type == .flagsChanged
/// event.characters? NSInternalInconsistencyException
var text: String { isFlagChanged ? "" : characters ?? "" }
var inputTextIgnoringModifiers: String? { var inputTextIgnoringModifiers: String? {
guard charactersIgnoringModifiers != nil else { return nil } guard charactersIgnoringModifiers != nil else { return nil }
return charactersIgnoringModifiers ?? characters ?? "" return charactersIgnoringModifiers ?? characters ?? ""
@ -313,7 +313,7 @@ public enum EmacsKey {
public extension NSEvent { public extension NSEvent {
func layoutTranslated(to layout: LatinKeyboardMappings = .qwerty) -> NSEvent { func layoutTranslated(to layout: LatinKeyboardMappings = .qwerty) -> NSEvent {
let mapTable = layout.mapTable let mapTable = layout.mapTable
if type == .flagsChanged { return self } if isFlagChanged { return self }
guard modifierFlags == .shift || modifierFlags.isEmpty else { return self } guard modifierFlags == .shift || modifierFlags.isEmpty else { return self }
if !mapTable.keys.contains(keyCode) { return self } if !mapTable.keys.contains(keyCode) { return self }
guard let dataTuplet = mapTable[keyCode] else { return self } guard let dataTuplet = mapTable[keyCode] else { return self }

View File

@ -89,7 +89,7 @@ public extension SessionCtl {
/// flags /// flags
/// event.type == .flagsChanged /// event.type == .flagsChanged
/// event.characters? NSInternalInconsistencyException /// event.characters? NSInternalInconsistencyException
if event.type == .flagsChanged { return true } if event.isFlagChanged { return true }
/// ///
guard let inputHandler = inputHandler, client() != nil else { return false } guard let inputHandler = inputHandler, client() != nil else { return false }