About me

我的相片
I'm a web and software developer from Kaohsiung, Taiwan.
I design and implement user interfaces, also contribute to open source projects.
http://penkia.net/portfolio

2012年2月7日 星期二

以自由軟體實作的 Linux 中文手寫輸入法

移動裝置與觸控螢幕盛行多年, Linux 上的觸控鍵盤 (以前叫螢幕小鍵盤, on-screen keyboard 或稱 virtual keyboard) 千百種, 我自己也用 QML 寫了一個 qVKB, 可以在 Ubuntu 和 MeeGo 上使用. 但是講到 Linux 上面的 "中文手寫" 輸入法就不太常見, 大概跟開放原始碼的引擎商業化程度/辨識度不高有關係.

這兩天花了點時間蒐集資料, Nokia N9/N950 (MeeGo Harmattan 系統) 預載的中文手寫辨識引擎沒記錯的話來自於漢王, 搜尋了一下發現 OXPad 有很像 Tegaki 的展示影片, 沒看到原始碼 (大概辨識引擎也是商業授權?). 基於輸入法的實作還有 ibus-handwrite, 以及一系列用 Tegaki 改的輸入法面板 (panel), 包括 ibus-tekagi, scim-tekagi, oxim-tekagi..等等, 不過那是用 Python-Gtk 兜出來的, 兩欄式的介面也不好用.

研究了一下, 要達成初步功能似乎不會很難, 乾脆自己刻一個: qml-handwriting

  • 手寫區 (writing area) - 介面使用 QML 和 Canvas 完成 (Qt 4.7 以前要從 Qt Labs 安裝, 但 QtQuick 2.0 以後就內建了)
  • 筆劃偵測 (strokes detection) - 採用 Joshua Koo 以 JavaScript 實作的 ShortStraw 演算法
  • 辨識引擎 (handwriting recognition) - 使用 Tekagi 的 model 及 Zinnia 的 engine, 支援繁體中文、簡體中文及日文

速度及辨識度還可接受, 下一步大概會試著整合近輸入法面板, 在 xPad 裡預設安裝. 技術上可能可以把 Zinnia 的部份抽出來包成 QML plugin; 或進一步使用 WebKit Canvas, 配上 @timdream 超強的 ime.js. 總之原始碼以 LGPL 授權, 歡迎修改使用, 敬請不吝指教.

Update #1: 小帥提表示 ime.js 不再維護, 日後會整併到 B2G 專案的 Gaia 界面中.

Update #2: 來自 Nokia 的 @yinyunqiao 很迅速地將 qml-handwriting 移植到 Qt5 了, 有需要的話可以參考.

2011年12月7日 星期三

xPad 0.5 released!

Our answer to the Browser OS for tablets


xpad-0.5.iso (62MB)

After almost a year of hard working, we're proud to present xPad 0.5!
xPad is the Browser OS for touch-based devices, built on top of open source projects like xPUD, Qt/QML and WebKit.


This LiveCD/USB image works great on Virtualbox and some x86 machines, it has also been ported to several TI OMAP3/4 and nVidia Tegra2 platforms.

The Devil is in the details


We rewrote almost everything from the ground up, with Qt 4.7.2, QtQuick 1.1 and QtWebKit 2.1 software stacks, the web browser and virtual keyboard are now perfectly integrated, it also gave us the chance to make further customized UX and demonstrate all kinds of possibility about this Browser OS idea.



More Information

For more information you can refer to the source code repository on Github, and a presentation slides I made for COSCUP 2011. If you have any demo or customization request, feel free to send me a mail ;-)

We hope you enjoy this release as much as we do, and have a great Christmas holiday.

All the best,
penk

2011年1月3日 星期一

TouchWeb - browser of xPad got an upgrade


Here's a sneak preview of our next xPad release, the WebKit-based browser, TouchWeb, has been enhanced for finger browsing. Including:
  • Tap-and-hold (long press) gesture for right click
  • New Tab/Window handler
  • Safari-like URL bar and reload/stop button
And we even got the Chromium OS overview function implemented:

Stay tuned! ;-)

2010年12月21日 星期二

xPad 0.1 released!

What if Chrome OS Tablet concept UI get implemented?

Don't you love the Chrome OS Tablet concept UI above? I fell in love as soon as I read about it on the wiki, but Eric Schmidt crush my dream by stating that "Chrome OS aimed at keyboard based solutions".

I don't know either the actual roadmap of Chrome OS nor what Google has in mind, but since it's an open source project and I'm a FOSS developer, I decided to build it on my own. After a weekend of hacking, let me introduce to you:

the xPad - tablet edition of xPUD



Download: xpad-0.1.iso (47MB)

Due to the limitation of hardware support in this image, it can only boot on Virtualbox. But we have already integrated this touch and virtual keyboard solution onto MeeGo Netbook UX, and ported to some selected platforms like OMAP3 and Moorestown. (Any demo or customization request please feel free to send me a mail ;-)

Main Features

  • finger scrolling browser - it's basically a simple GtkWebKit browser with a custom GtkScrolledWindow widget from the Midori project. We also wrote a QtWebKit version in case you want to demo it on MeeGo.
  • enhanced WebKit - that rendering fast and with less library dependencies, we also patched WebCore/HTMLInputElement to hint input method with different input type, including password field.
  • auto showing/hiding of input method - by patching against scim-bridge, we made the Gtk and Qt4 immodule brings up the keyboard while focus in, and hide it when focus out.
  • virtual keyboard that can actually use - we add Toggle feature into fvkbd, that can toggle input method as well as switch keyboard layout; also applied the MODE_STATUS_TEMP patch from sayamindu to support CKJ users.
  • input method panel - we fixed the ToggleVkb feature of scim-panel-vkb-gtk, also adjust the layout to integrate SCIM and different input methods well.
  • multi-lingua keyboard layout - we carefully crafted a "bopomofo" friendly keyboard layout, that shows how flexible the fvkbd can be.

Known Issues

Apparently it's still buggy and unstable, the browser doesn't have much features like Tap-and-Hold or right click, nor tab or hiding scroll bar support, sometimes you have to toggle the keyboard and change input method to English to get it right.

But we'll keep working on that, maybe replaced it with a custom build of chromium, or some Qt-based browser like IXS-Browser from Movial.

While xPUD team are busy working on the next generation of TableWare UI, this is something you can play with during the Christmas holiday! :-)

All the best,
penk

2010年11月3日 星期三

xPUD 0.9.5 - Re-implemented everything, again


Download: xpud-0.9.5.iso (65MB)

Notice

This is a technical preview release, which only suits developers. If you're looking for next stable release please follow us on twitter.

New Features

Ubuntu 10.10 base and Linux kernel 2.6.35.7, alone with an updated build system.

TableWare platform


Starting with this version we launch a new project called TableWare, a web-based window manager, which replaced the old XPCOM/MozPlugger implementation with following software components:
  • new NPAPI plugin
  • new XCB-based window manager
  • Node.js and WebSocket support
  • new daemon with inotify and D-Bus support
  • new WebKit-based runtime
So the fun starts here!

How cool will it be if you can write a window manager using CSS/HTML and JS in 297 lines of code?


Known Issues

  • only tested in virtualbox
  • still very very buggy
  • iframe-shim doesn't work in webkit

What to expect next?

  • re-designed plate UI
  • compositor of tableware platform
  • ARM port and xPad, THE tablet edition! :-)
  • If you've got any question or request, feel free to drop me a mail

2010年11月2日 星期二

xPUD 0.9.5 - 宇宙最美麗的 OS 出世了!

世上最不穩定的 xPUD 終於姍姍來遲了!


下載: xpud-0.9.5.iso (65MB)

作者的忠告

這是開發中的版本, 只適合想自己寫程式或修理錯誤的開發者使用, 若要等穩定版釋出請追蹤 xpudos 的推特帳號.

新功能

升級到 Ubuntu 10.10 系統與 Linux 核心 2.6.35.7, mkxpud 也同步更新.

TableWare 平台


自 0.9.5 開始我們正式啟動 TableWare 計畫, 它將取代 XPCOM/MozPlugger 成為下一代 xPUD 的主力平台, 新元件如下:
  • 新的 NPAPI 外掛
  • 新的 XCB 視窗管理員
  • Node.js 和 WebSocket 支援
  • 可用 D-Bus 和遙控器操作
  • 新的 WebKit 核心
用新平台寫視窗管理有多酷呢? 請見「輕滑頓幻舞 (Sliding Effect)」展示影片:



一共只用了 297 行 HTML/CSS/JS!

已知問題

  • 只在 virtualbox 測試過
  • 非常多 bug, 常常掉東西
  • 沒有中文輸入法
  • iframe-shim 壞了

下集節目預告

  • 全新打造的 plate UI
  • 圖形加速功能
  • ARM 版本以及 xPad, 平板電腦介面! :-)
  • 有任何問題或需求歡迎和我聯絡
按這裡貼到噗浪

2010年10月17日 星期日

Daily Bookmarks 10/17/2010

The Wilderness Downtown: How it was Made

http://ajaxian.com/archives/the-wilderness-downtown-how-it-was-made

Video Conferencing with the HTML5 Device Element

http://ajaxian.com/archives/video-conferencing-with-the-html5-device-element

jQuery Data Binding, Templates, and Mobile: John Resig at FOWA

http://ajaxian.com/archives/jquery-data-binding-templates-and-mobile-john-resig-at-fowa

Yo Yo, develop killer cross platform mobile Web apps with Jo

http://ajaxian.com/archives/yo-yo-developer-killer-cross-platform-mobile-web-apps-with-jo

Behind the scenes: Customer Wall

http://37signals.com/svn/posts/2616-behind-the-scenes-customer-wall

How to Create a Successful MMO

http://www.guildwars.com/events/tradeshows/gc2007/gcspeech.php

Customizing web forms with CSS3 and WebKit

http://37signals.com/svn/posts/2609-customizing-web-forms-with-css3-and-webkit

Ryan's talk at Future of Web Apps 2010, London

http://37signals.com/svn/posts/2608-ryans-talk-at-future-of-web-apps-2010-london

Here's what we've learned about doing UI for mobile web apps with WebKit

http://37signals.com/svn/posts/2603-heres-what-weve-learned-about-doing-ui-for-mobile-web-apps-with-html5

Redesigned: The new 37signals.com

http://37signals.com/svn/posts/2596-redesigned-the-new-37signalscom

Why non-profit pricing?

http://37signals.com/svn/posts/2580-why-non-profit-pricing

Weaving Design and Development

http://37signals.com/svn/posts/2579-heres-a-video-of-my-talk-on-weaving

Loading spinner animation using CSS and WebKit

http://37signals.com/svn/posts/2577-loading-spinner-animation-using-css-and-webkit

Newton Never Dies

http://www.panic.com/blog/2010/09/newton-never-dies/

jQuery Events: Stop (Mis)Using Return False

http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/

Linux 無調注音輸入法 - ibus-pinyin-bopomofo

http://yurinfore.blogspot.com/2010/10/linux-ibus-pinyin-bopomofo.html

吃了蘑菇的 gnome-shell

http://yurinfore.blogspot.com/2010/09/gnome-shell.html

Bloomberg Game Changers: Steve Jobs

http://www.bloomberg.com/video/63722844/

互動素描標記法 v0.1

http://blog.bobchao.net/2010/10/v01.html

Stuxnet:事實 vs. 理論

http://www.zdnet.com.tw/enterprise/technology/0,2000085680,20147815,00.htm

jQuery Code Style

http://blog.othree.net/log/2010/10/17/jquery-code-style/

WAI-ARIA 介紹之一

http://blog.othree.net/log/2010/10/10/introduction-to-wai-aria-1/

Arcade Fire - Funeral

http://pulp.bluecircus.net/archives/014699.html