Skip to content
This repository was archived by the owner on Sep 15, 2019. It is now read-only.

Random Notes

Trung Ngo edited this page Jun 11, 2014 · 10 revisions
  • setup.py được gen bằng lệnh py2applet main.py.
  • Trong file Info.plist có chứa key InputMethodServerControllerClass phải có giá trị trùng với tên class muốn sử dụng làm engine, trong trường hợp này là BogoController. IMKServer object sẽ đọc file này và sử dụng factory method để tạo các object thuộc class này mỗi khi có ứng dụng mới connect với bộ gõ.
  • IMKTextInput:insertText:replacementRange có thể xóa text trong văn bản đang gõ trước khi insertText. Tuy nhiên, method này có một số vấn đề như sau:
    • replacementRange là giá trị absolute tính từ đầu văn bản. Phải dùng IMKTextInput:length để tính giá trị tương đối với con trỏ. Tuy nhiên, tài liệu của Apple khuyến khích không nên dùng IMKTextInput:length vì nó có thể tốn tài nguyên tính toán.
    • Ứng dụng được gõ phải hỗ trợ protocol TSMDocumentAccess thì mới replace được. Phần lớn các input field trong Mac đều hỗ trợ nhưng những ứng dụng phức tạp hơn như Safari, Terminal, Chrome,... đều không hỗ trợ. Với những ứng dụng này thì nên gửi backspace. Hay nên gửi backspace toàn bộ cho đơn giản?
  • IMKTextInput:attributedSubstringFromRange có thể dùng để truy cập nội dung văn bản đang gõ. Giúp implement tính năng đặt dấu tiếp ở bất kỳ đâu như trong ibus-ringo.
  • Chạy khá tốn RAM. Monitor báo dao động từ 15 đến 40MB.
  • BoGo không được launch bởi lập trình viên mà bởi hệ thống input method nên khi muốn cập nhật code mới nhất thì phải chạy make install rồi kill process đang chạy. Hệ thống sẽ tự khởi động BoGo bản mới.
Clone this wiki locally