Skip to content

Instantly share code, notes, and snippets.

View ShikiSuen's full-sized avatar

ShikiSuen ShikiSuen

View GitHub Profile
ShikiSuen /
Last active November 20, 2023 07:11
Let's talk about what InputMethodKits needs to improve.

Related sample project:

It seems that individual bug reports doesn't work at all. Besides, the entire InputMethodKit needs a renovation.

This thread will be sent to Apple by certain special approaches after gathering enough usable information.

Let's talk about what InputMethodKits needs to improve. Here's my conclusion. If Apple think there's already an API, then it might be either mulfunctioning or not exposed to Swift.

  1. An official Swift-friendly wrapper with neither "!" nor "?" in the parameters of all provided APIs.
ShikiSuen / SecureEventInputAbuseChecker.swift
Last active October 24, 2023 02:00
A Swift script to check whether there's any process abusing the SecureEventInput in the background.
View SecureEventInputAbuseChecker.swift
// (c) 2023 and onwards The vChewing Project (MIT-NTL License).
// ====================
// This code is released under the MIT license (SPDX-License-Identifier: MIT)
// ... with NTL restriction stating that:
// No trademark license is granted to use the trade names, trademarks, service
// marks, or product names of Contributor, except as required to fulfill notice
// requirements defined in MIT License.
/// A Swift script to check whether a non-system process is abusing the SecureEventInput.
ShikiSuen / IndexRevolver.swift
Last active October 23, 2023 20:22
Swift Index Revolver (requiring Swift 5.6)
View IndexRevolver.swift
// (c) 2021 and onwards Shiki Suen (MIT-NTL License).
// ====================
// This code is released under the MIT license (SPDX-License-Identifier: MIT)
import Foundation
extension Collection {
public func revolvedIndex(_ id: Int, clockwise: Bool = true, steps: Int = 1) -> Int {
if id < 0 || steps < 1 { return id }
var result = id
ShikiSuen / 1000-applefontexperience.conf
Last active March 10, 2023 19:27
Apple Font Experience for Linux. You need to put this conf file in "/etc/fonts/conf.d" and manually install "Inter" and "Sarasa Gothic" to "/etc/fonts/opentype/". You can install PingFang if you wish. Install "noto-cjk" package from your Linux package manager for Noto Serif CJK support.
View 1000-applefontexperience.conf
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- -->
<!-- Basic CJK Font Fallback Rule Redifined -->
<match target="pattern">
<test qual="any" name="lang" compare="contains">
<test qual="any" name="lang" compare="contains">
ShikiSuen / DateChecker.swift
Created February 7, 2023 02:45
Swift Date Checker.
View DateChecker.swift
// (c) 2021 and onwards The vChewing Project (MIT License).
// ====================
// This code is released under the MIT license (SPDX-License-Identifier: MIT)
import Foundation
extension Date {
/// Check whether current date is the given date.
/// - Parameter dateDigits: `yyyyMMdd`, 8-digit integer. If only `MMdd`, then the year will be the current year.
/// - Returns: The result. Will return false if the given dateDigits is invalid.
ShikiSuen / Shiki-FireFoxColorScheme-Blue
Created January 24, 2023 01:49
My FireFox Color Scheme (Blue).
View Shiki-FireFoxColorScheme-Blue
ShikiSuen / FB10978412App.swift
Created September 20, 2022 10:00
FB10978412 Demo App (SwiftUI)
View FB10978412App.swift
/// FB10978412: Since macOS 11 Big Sur, CTFontCreateUIFontForLanguage cannot
/// distinguish zh-Hans and zh-Hant with correct adoptation of proper PingFang SC/TC variants.
import SwiftUI
struct FB10978412App: App {
var body: some Scene {
WindowGroup {
ShikiSuen / kaiu-name.ttx
Created September 16, 2022 03:49
The name table of the Kaiu.font on Windows 10.
View kaiu-name.ttx
<?xml version="1.0" encoding="UTF-8"?>
<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="4.28">
<namerecord nameID="0" platformID="1" platEncID="0" langID="0x0" unicode="True">
(c) Copyright DynaLab Inc. 1992-1998
<namerecord nameID="1" platformID="1" platEncID="0" langID="0x0" unicode="True">
Last active June 17, 2022 04:56
針對小麥 2.3 內建的 OVMandarin 的倚天26與許氏鍵盤的單元測試。


在執行此測試之前,請在 Mandarin.h 的接近檔案末尾的位置新增如下圖選中區域的內容:


也就是在 BopomofoReadingBuffer 的 public 段新增:

  std::string cnvSequence(std::string givenSequence) {