Code Monkey home page Code Monkey logo

ibus-bogo's Introduction

Bộ gõ tiếng Việt cho iBus

Build Status Coverage Status

English below...

CHÚ Ý: Hiện nay dự án đang tạm ngừng phát triển bởi lý do kỹ thuật và vì maintainer chính là @lewtds không thể dành được đủ thời gian cho dự án. Dự kiến maintainer @cmpitg sẽ khôi phục lại dự án và tiếp tục phát triển bắt đầu từ 15/04/2015.

ibus-bogo là một chương trình xử lý gõ tiếng Việt sử dụng engine BoGo và được thiết kế để chạy cùng iBus, một phần mềm quản lý các bộ gõ trong GNU/Linux.

Hướng dẫn nhanh

  1. Cài đặt và sử dụng

  2. Chia sẻ cho người thân

  3. Trò chuyện với chúng tôi ở mailing list của nhóm hay chat qua kênh #bogo trên mạng IRC Freenode.

  4. Thông báo lỗi và đóng góp ý tưởng

  5. Fork, vọc code và tham gia phát triển cùng chúng tôi!

Giấy phép sử dụng

ibus-bogophần mềm tự do nguồn mở.

Toàn bộ mã nguồn của ibus-bogoBoGoEngine cùng tất cả các tài nguyên đi kèm đều được phát hành dưới các quy định ghi trong Giấy phép Công cộng GNU, phiên bản 3.0 (GNU General Public License v3.0). Xem tệp COPYING để biết thêm chi tiết.


Introduction

ibus-bogo is a Vietnamese input engine targeting IBus, an input method manager in GNU/Linux environments.

Getting started

  1. Install and use just like any other IBus engine

  2. Share

  3. Talk to us on our mailing list and IRC channel at #bogo on Freenode.

  4. Report bugs and share suggestions

  5. Fork and contribute

License

ibus-bogo is free and open source software and is released under the GNU General Public License v3.0.

ibus-bogo's People

Contributors

bitdeli-chef avatar cmpitg avatar hainp2604 avatar hami9x avatar lewtds avatar ngohuy avatar ntcong avatar sokomo avatar tuanta avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ibus-bogo's Issues

Port sang Python 3

Rất nhiều lý do để làm càng nhanh càng tốt:

  • Thế giới đang chuyển sang python 3
  • Một số distro như ArchLinux dùng Python 3 làm default
  • Python 3 hỗ trợ Unicode tốt hơn rất nhiều so với Python 2

Cần có một cách xử lý phím backspace với rawstring hiệu quả hơn

Trong chế độ gõ spellcheck, thuật toán hiện tại là với mỗi một phím backspace thì sẽ xóa một ký tự trong __rawstring và gửi một phím backspace thật đi. Nhưng vấn đề là rawstring thì chứa ascii còn string trong buffer thì chứa string tiếng Việt đã qua xử lý. Một ký tự ascii không tương đương với một ký tự đã qua xử lý.
VD: 'nees' = 'nế'
nếu nhận được một backspace thì
__rawstring = 'nee'
real string = 'n'

Nếu sau đó người dùng gõ một phím illegal như 'h' chẳng hạn thì chương trình sẽ detect chuỗi không phải tiếng Việt hợp lệ và gửi toàn bộ rawstring tới client, thành ra đang 'n' lại thành 'nnee'.

Gặp lỗi khi gõ trên Google Doc

Mấy hôm đầu tiên gõ văn bản trên Google Doc khá tốt, hôm nay gõ thì tự nhiên gặp lỗi khi gõ từ, đó là khi gõ chữ "trình" thì nó lại ra chữ "triìh", gõ chữ "vậy" thì lại ra chữ "vaậ".

Em tưởng em gõ sai nhưng sau khi thử lại nhiều lần thì không phải do mình gõ sai mà là do BoGo.

Tình trạng máy:

BoGo được em build từ source sau khi clone từ branch master.

Ubuntu 12.04.1, Gnome Shell 3.4.2

P/s: khi gõ văn bản trên github để tạo report này em cũng thỉnh thoảng găặ lôỗ như trên google doc

(chữ 'gặp' và 'lỗi' ở trên là gõ bị lỗi và em giữ nguyên để minh họa )

Lỗi gõ chữ "thuở"

Nếu gõ chữ "thuở" bằng tổ hợp phím "thuow" thì kết quả lại là "thưở" (sai chính tả).

dấu ]

Không thể gõ hai dấu ] liên tiếp ]ưưưưư =>> ]]

Một vài ý kiến của icy về BoGo

Cuộc trò chuyện diễn ra trên issue tracker của dự án KenLinux (archlinuxvn/kenlinux#1) TheSLinux (TheSLinux/g1#1).

Vào 10:25 Ngày 03 tháng 3 năm 2013, @icy [email protected] đã viết:

Tất nhiên mình sẽ chọn bộ gõ nào cũng được đứng từ phía người dùng. Các
bộ gõ chỉ nên đề xuất và cho phép người dùng lựa chọn. Ví dụ kiểu gõ
Telex trên nhiều bộ gõ rất bất tiện khi định nghĩa lại [ và ] hoặc w
(thành ư). Điều này KHÔNG NÊN làm từ bộ gõ, mà nên làm từ phía người
dùng.

Các bộ gõ đều có các chế độ TELEX khác nhau. VD trong Unikey thì Simple Telex
là TELEX gốc, Simple Telex 2 là TELEX có thêm chữ w -> ư, Telex thì có thêm ][.

Nhưng em cũng thấy ý kiến này của bác rất hay. Chỉ nên có một Telex và
các tính năng kia ở dạng optional. Tuy nhiên, do quá trình sử dụng Telex có tính
năng phụ trợ của phần lớn người dùng đã quá lâu nên người ta sẽ cho rằng đó là một phần không thể
thiếu của Telex nên nếu làm theo phương án này, BoGo cũng sẽ để tính
năng optional này bật sẵn.

Cũng cần chỉ ra cách định nghĩa bảng gõ mới , kiểu gõ tốc ký,
telex++, .... ở phía người dùng (Unikey chằng hạn có danh sách các từ
gõ tắt do người dùng tự định nghĩa).

Có thể định nghĩa kiểu gõ mới trong file config, chưa có GUI thôi. Gõ
tắt đang thực hiện.

Mình ủng hộ Bongo, tuy nhiên cần chú ý các yêu cầu cơ bản sau

  • hỗ trợ Anh, Việt (và có thể Pháp)

Bộ gõ tiếng Việt thì gõ tiếng Việt là ưu tiên hàng đầu. BoGo cũng có
thể gõ tiếng Anh chen lẫn tiếng Việt. Còn tiếng Pháp thì em e là người dùng sẽ phải tắt BoGo
đi, sử dụng Compose Key hoặc French layout.

  • chỉ cung cấp phương pháp và có thể phương pháp mặc định, để người
    dùng nhiều lựa chọn hơn (ví dụ về cửa sổ preedit hòan tòan vô tích sự
    với mình)

Không hiểu ý này của bác.

  • cho phép người dùng nhiều khả năng tự điều chỉnh bộ gõ

BoGo cố gắng cho người dùng nhiều khả năng tùy chỉnh nhất có thể. Tuy
nhiên, nhu cầu của người sử dụng có thể sẽ khác nhiều so với nhu cầu của tác giả. Vậy nên người
dùng muốn tùy chỉnh đến đâu phải trao đổi thì tác giả mới biết.

Rất cảm ơn các ý kiến của bác.

Hỗ trợ kiểu gõ tốc ký người dùng tùy chỉnh được

Thông thường khi viết tay ta có sử dụng một số lối viết tắt với các phụ âm ghép đứng sau như nh, ng liệu cách này có nên bổ xung thành một tính năng cho người dùng (hỗ trợ tự chỉnh thì càng tốt) trong Bogo được không, chẳng hạn khi viết hình = `h+i+h+f,hương``=``h+u+o+g+w``
Trên cơ sở này mình đề nghị cho phép người dùng tự định nghĩa cách gõ phím

Cần một script tách tự động các nguyên âm và phụ âm trong từ điển chính tả

Hiện tại hàm is_valid_combination đang kiểm tra tính đúng đắn tiếng Việt của một string thông qua các luật blacklist và whitelist. Các luật này được xây dựng dựa trên danh sách các phụ âm, nguyên âm kết thúc từ và nguyên âm không kết thúc từ được lựa chọn bằng tay. Việc này không hoàn toàn chính xác và bao hàm tất cả các trường hợp có thể. Vậy nên thỉnh thoảng vẫn có lỗi từ người sử dụng rằng không thể gõ được từ này, từ kia.

Nếu có một script tách tự động các nguyên âm, phụ âm trong từ điển chính tả thì danh sách này sẽ đầy đủ hơn rất nhiều.

Logo cho BoGo

Thiết kế logo "thật" cho BoGo, cái logo tạm thời xấu quá.

Không nên gõ tiếng Việt trong command mode của Vim

(vấn đề này áp dụng cho cả GVim)

  1. Mở Vim, vào edit mode (ấn i), bật bogo, gõ một đoạn bằng tiếng Việt.
  2. Ấn Escape (thoát edit mode, vào command mode), ấn dd (xóa cả dòng) thì input context không thông báo là ngừng input nên bộ gõ vẫn nhận dd và tưởng là gõ đ -> gửi một phím d một phím backspace và một ký tự đ.

Cài sẵn các setting trong thư mục home

Trong file ~/.profile có một số biến môi trường quan trọng ảnh hưởng đến việc sử dụng bộ gõ như GTK_IM_MODULE, XMODIFIERS, QT_IM_MODULE. Nếu bộ cài đặt có thể cài sẵn luôn thì người dùng không cần phải quan tâm nữa. Ngoài ra, có thể hiện một message ngắn hướng dẫn một số điều cơ bản cho người dùng trong khi cài đặt.

Có thể thực hiện bằng hệ thống debconf.

(spellcheck) không thể gõ từ 'reset'

Bật chế độ spellcheck. Nếu không escape: 'reset' -> 'rết' là string tiếng Việt đúng -> k được chuyển về tiếng Anh.

Nếu escape: 'resset' -> bị thừa một chữ s

Thêm cơ chế dịch giao diện

Sử dụng gettext đặt giao diện thành tiếng Anh và tiếng Việt tương ứng với locale hiện tại. Có thể thêm một nút chỉnh để force ngôn ngữ.

gõ tắt ph -> f

fair --> fải
zowfi -> zời

....

gõ "gioi <r" (< là backspace) thì ra "gioir" (nên là "giỏi"). Đây là trường hợp khi người dùng gõ nhanh quá, chưa kịp gõ dấu thì đã ấn cách. Muốn gõ dấu thì phải xóa hết vần đi rồi gõ lại.

Hỗ trợ tính năng gõ tắt do người dùng tùy chỉnh được

Đây là một tính năng được rất nhiều người dùng quan tâm trong thời gian qua. (#47, #27)

Phương pháp đơn giản nhất để thực hiện tính năng này là tạo một hook ngay khi nhận được phím từ người dùng, so sánh raw input với danh sách các chuỗi phím tắt đã ghi sẵn và commit từ được gõ tắt. Vấn đề với phương pháp này là chuỗi phím tắt chỉ có thể là chuỗi ASCII.

Phương pháp thứ hai là đặt hook sau khi tính toán chuỗi tiếng Việt tạo ra. Cách này có lợi thế là phím tắt có thể là chuỗi tiếng Việt. Tuy nhiên có thể sẽ chậm hơn cách đầu tiên nhưng không đáng kể.

Dù theo cách nào thì cũng có một số vấn đề phải quan tâm:

  • Các chuỗi phím tắt phải không trùng nhau.
  • Cần có cách nào để người dùng nhận biết được khi nào BoGo sẽ commit chuỗi phím gốc, khi nào commit chuỗi được gõ tắt.
  • Cần có cách để người dùng escape gõ tắt.

Hai vấn đề dưới có thể giải quyết bằng phương pháp hiện thanh candidate (dropdown menu ngay chỗ đang gõ). VD người dùng đặt:

  • kg -> không
  • kgcđ -> Không Gian Cộng Đồng

khi người dùng gõ chữ kg thì bộ gõ sẽ commit chữ không, đồng thời hiện ra dropdown với những entry như sau:

  • kg (nguyên gốc)
  • kgcđ -> Không Gian Cộng Đồng

Nếu người dùng không làm gì thì mặc định chọn phương án không (đã commit), ngoài ra người dùng có thể chọn 1 trong 2 phương án được đề ra bên dưới. Phương án này rất giống cách auto complete trong các IDE hiện đại.

Một điều cần quan tâm nữa là tính hoa thường của từ được viết tắt. Phần mềm GoTiengViet của tác giả Kỳ Nam sẽ tự động nhận diện hoa/thường của 2 chữ cái đầu tiên trong chuỗi viết tắt đang được gõ. VD: KG -> KHÔNG, kg -> không, Kg -> Không. Nếu implement tính năng này thì phải chú ý đến các chuỗi tên riêng như: chxhcnvn -> Cộng hòa Xã hội Chủ nghĩa Việt Nam. BoGo không có cách nào để đoán được phương pháp viết hoa thường của cụm từ phức tạp như thế này (hay chỉ implement với những từ không viết hoa?).

Chuyển các extension của Telex thành flag trong file config

Hiện tại, trong BoGo có 2 kiểu Telex. Một là Telex với đủ các tính năng phụ trợ (w -> ư, ][ -> ươ) và Simple Telex tức Telex kiểu ban đầu.

Đề xuất:
Theo như gợi ý trong #47 thì chỉ nên có một kiểu gõ Telex là kiểu gõ ban đầu. Các tính năng phụ trợ sẽ được định nghĩa dưới dạng flag/checkbox trong config.

Worklist:

  1. Bỏ kiểu gõ Simple Telex và xóa các luật extension của Telex trong default_config.json.
  2. Thêm hook trong class BaseConfig để thêm các luật này vào kiểu gõ Telex nếu flag có bật.

Lỗi không gõ được "ê"

Đối với các từ chẳng hạn như "điều" mà gõ "d-d-i-e-u-e' thì sẽ không gõ được dẫu chữ ê, xảy ra hầu hết các từ có vần e mà gõ dấu cách một kí tự

Hàm is_valid_combination

Hàm này bị sai ở chữ oach dẫn đến việc không thêm được dấu ở các chữ có vần này, như hoachj

(chrome) Không ghi đè lên từ bị bôi đen

Bình thường trong GDocs và tất cả các trình soạn thảo văn bản khác thì khi bôi đen một từ và gõ thêm một ký tự thì sẽ thay thế cả từ bôi đen bằng ký tự đó. Nhưng khi bật bogo lên thì không được.

AttributeError: 'PropList' object has no attribute 'append'

Sau khi build từ source để chạy trên opensuse, em add BoGo vào ibus nhưng nó không chịu chạy. Gõ lệnh "python3.2 /usr/share/ibus-bogo/main.py" thì dính lỗi

Traceback (most recent call last):
File "main.py", line 32, in
from ibus_engine import Engine
File "/usr/share/ibus-bogo/ibus_engine.py", line 37, in
config = Config()
File "/usr/share/ibus-bogo/config.py", line 47, in init
self.__init_props()
File "/usr/share/ibus-bogo/config.py", line 103, in __init_props
self.__charset_prop_menu = self.__init_charset_prop_menu()
File "/usr/share/ibus-bogo/config.py", line 53, in __init_charset_prop_menu
charset_prop_list.append(
AttributeError: 'PropList' object has no attribute 'append'

Gõ trong Sublime Text 2

Đây là môt editor tuyệt vời, khả năng tùy biến cực kỳ cao và có số lượng addon đáng kể phục vụ nhiều nhu cầu khác nhau. Tuy nhiên IBus không thể gõ được. Sử dụng API của nó có thể viết một cái bridge đến IBus hoặc nếu không đủ thời gian thì chỉ viết để giao tiếp với BoGo thôi.

http://www.sublimetext.com/docs/2/api_reference.html

Lỗi truy cập phần Tham gia phát triển trên Webiste BoGoEngine

Tại Phần tham gia phát triển trên trang Web chính thức của nhóm BoGoEngine, khi mình click link https://github.com/BoGoEngine thì bị dẫn đến link dưới không hợp lệ:

http://bogoengine.github.com/%5Bhttps://github.com/BoGoEngine

HIện tại, mình đang dùng Firefox để truy cập Website BoGoEngine.

Mình để trỏ chuột vào link https://github.com/BoGoEngine, đồng thời xem link ở dưới nó trỏ vào link

http://bogoengine.github.com/%5Bhttps://github.com/BoGoEngine

Lỗi này chỉ xuất hiện khi dùng Firefox, còn Chromium thì không bị lỗi này và vẫn truy cập được bình thường.

Mong những lỗi nhỏ thế này, nhóm BoGoEngine có thể khắc phục luôn.

Chúc bộ gõ BoGoEngine của nhóm BogoEngine ngày càng hoàn thiện, đáp ứng được nhu cầu sử dụng của người dùng.

Giao diện config đồ họa

Có các nút chuyển kiểu gõ, output charset.
Có thể bật chế độ spellcheck, khi nhấn vào thì sẽ cảnh báo sự khác biệt.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.