找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 17913|回复: 169

[webOS开发] 一个有关中文输入法的构想..........

[复制链接]
发表于 2009-11-2 00:19 | 显示全部楼层 |阅读模式
大家好, 近日用WebOS Doctor 看了Palm WebOS 的内部构做, 发现+ _2 M- a) P4 ^0 z
在palm/frameworks/mojo$ D, r8 h" h" c6 V1 n
中有两个档案是常被呼叫的, 就是mojo.js, palmInitFramework191_15.js3 l2 |' S. b4 i- n
  h/ @& j% L# i- v
我的构想是如下, 我们先写一个keyOnPress, 看看当程式执行时,当键盘被按时,
- R7 z/ l/ Q4 e& O  C6 d  J keyOnPress 会不会被呼叫, 如果会的话, 便好办了, 这就可以用keyOnPress
4 S3 p; R& W) q来呼叫一个转换中, 英文的Menu, 从而再做一个输入法切换的界面.
# P6 m( {3 q$ ^2 ^如果keyOnPress 不能被呼叫的话, 那就继续想想如何做吧... ...( y  j9 F& K6 R! n' B; Q% v
; H8 Z$ m! g& U' x) Z. M" f
大家的想法如何?
( m, s. C6 w) m4 m; v* z' A* E
6 K* z6 J# C; K. v* X/ Z# h: K[ Edited by tedwong on 2009-11-2 00:20 ]
& s' `/ D2 `( z8 _" {8 N
! r, O' J$ e/ X9 \  Z* M; Q) b6 K1 g
初步版本已发布 : http://www.treo8.com/bbs/thread-142783-1-1.html
回复

使用道具 举报

发表于 2009-11-2 00:35 | 显示全部楼层
现在可以写出相应的小程序了么?4 h0 [% e7 K+ j

4 C% A- m5 w& ?9 y相信这里很多朋友愿意一起协助测试...
回复 支持 反对

使用道具 举报

发表于 2009-11-2 09:28 | 显示全部楼层
好象事件的分发是在event.js里面的,) p1 h# |& g$ `, a' Q$ o
java我不熟悉,不知道选择字符的界面能统一在这里生成吗?8 Y) }8 e) J9 c4 U; ^8 a! [% N
* h- A) _. ?) o4 [
好象Widget没有一个统一的base class,
; d$ j0 U6 J8 r  p6 S3 W* p- e不过即使在每个widget上面加事件处理和输入界面也不算麻烦,
$ Y' }3 ]* z' J# W$ Bted先做个demo出来?我们照板煮碗
回复 支持 反对

使用道具 举报

发表于 2009-11-2 16:00 | 显示全部楼层
不知道Pre的那个On Screen Keyboard大家有没有留意。。
+ s0 [5 f& ?3 s) H1 A它就是按"Sym"按键就可以调出那个keyboard。。。
7 _  N9 }4 ]$ E2 v这个是一个很重要的一点哦
7 H' S1 m1 o$ A, |$ C1 C详细可以参考这个。。。
( V9 T5 v& `& Whttp://www.webos-internals.org/wiki/On_Screen_Keyboard, N9 S) |6 y/ F; }0 C

  H: x+ z: j! QOn an unmodified Pre if you press the "sym" key a scrollable 5x5 keyboard pops up full of alternate characters./ D* l; G% {- P, X; e* K& S$ p6 D
This is controlled by code incorporated into the framework.js. The specific functions there can be seeen in /usr/palm/frameworks/mojo/submissions/191.15/javascripts/widget_charselector.js1 G7 j, ]0 B: e7 o4 _8 i
with the layout controlled by 3 files in /usr/palm/frameworks/mojo/submissions/191.15/templates/charselector/ C- P) j  |' D8 ^
the actual list of characters that appear on the screen is controlled by /usr/palm/frameworks/mojo/submissions/191.15/resources/en_us/alternatechars_table.json$ w; e6 m9 [% E1 M5 |% p# l
At the simplest level then, creating an on-screen keyboard requires editing the alternate characters table json, to add the "regular" charcters to it, and then when you want a keyboard, press SYM and poof, a keyboard. The problem with that is, the alternatechars_table.json is "fragile" the slightests mis-edit results in the pre entering a continuous book cycle.; w0 e. X" I: z1 o" b
At the next level, the framework's copy of widget_charselector.js needs to be modified to not close the keyboard after each keypress.
+ C* D  h/ l6 COn 12 August 2009 Webos-internals contributor Eric Gaudet (irc egaudet) announced success at patching the framework.js to accept a new function derived from the charselector widget. This pre-alpha proof of concept on-screen keyboard was made available as a patch. Since that time, the keyboard has been extended to work in search fields, to be installable as an IPKG, and to be themeable.# N! t7 l1 n4 B1 t
Note that this requires patching the primary framework of WebOS. This is not an application running on top of WebOS but rather a modification of the operation of the OS itself.
回复 支持 反对

使用道具 举报

发表于 2009-11-2 19:49 | 显示全部楼层
哈哈,高手们很牛呀!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-2 19:59 | 显示全部楼层
各位, 我刚试了, Mojo.js 确是每次载入程式都会被呼叫的, 我已经可以成功将Mojo.js 导出, 不过问题在于将原来的Mojo.js2 V$ {' [- G2 p5 W, {2 t
重写, 如果我没有估计错误, 这是很容易达成的(今晚会再试). 如果成功将原厂的Mojo.js 加入event handling, 那样便可以做一个系统性的输入法 ..... ...不过这个方法有一个不足之处, 就是要试试当真机reset 时会不会将Mojo.js 打回原形, 如果不会的话, 那中文输入法便不是梦了, 大家QQ 那边赐教一下吧.
回复 支持 反对

使用道具 举报

发表于 2009-11-2 20:08 | 显示全部楼层
support you~~~
回复 支持 反对

使用道具 举报

发表于 2009-11-2 20:12 | 显示全部楼层
高手们 发飙咯  期待 支持你们 加油~~~~~~~~~~
回复 支持 反对

使用道具 举报

发表于 2009-11-2 20:40 | 显示全部楼层
WebOS的JS框架就叫MOJO,那个Mojo.js在SDK里就有!
6 H$ |3 e! T' n" X' R& p  x" }
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-2 20:47 | 显示全部楼层
原帖由 cet63 于 2009-11-2 20:40 发表
6 P) @7 f+ l8 q: gWebOS的JS框架就叫MOJO,那个Mojo.js在SDK里就有!
: K8 e. {9 N4 \: X  X* m- a
7 U5 B0 H- s0 M; z' J2 `
对, 之所以他是WEBOS 的框架, 所以输入法也应该在这边入手, 不是吗?
回复 支持 反对

使用道具 举报

发表于 2009-11-2 21:08 | 显示全部楼层
是啊..如果能从最基本的框架里下手.那ui上的任何程序都可以进入 了啊..
+ G$ @/ Z( Q( b8 m$ b, A
. g" V( n* \* h; y% k! J* l! s就是不确定是否能成功
回复 支持 反对

使用道具 举报

发表于 2009-11-2 22:01 | 显示全部楼层
附上原来的mojo.js.以防万一
9 d0 M5 S6 [, ~9 ^( Q
7 [' |" f$ n- R- S% c! x位置在/usr/palm/frameworks/mojo/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入我们

×
回复 支持 反对

使用道具 举报

发表于 2009-11-2 22:30 | 显示全部楼层
模拟器mojo.js
- h$ v0 X" L& [, O9 Q5 |( d9 o" n5 ?0 h- U

2 \! L% t" v6 l我改名为: mojo_orig.js了.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入我们

×
回复 支持 反对

使用道具 举报

发表于 2009-11-2 23:16 | 显示全部楼层
期待能有重大突破!
回复 支持 反对

使用道具 举报

发表于 2009-11-3 00:54 | 显示全部楼层
我深夜来顶大大们的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-3 08:36 | 显示全部楼层
经过昨天的实验之后, 发现直接修改MOJO.JS 是会重启的, 不过我依然觉得MOJO.JS 是一个重要的档案, 所以我会找出重启的原因, 希望可以解决这个问题... ...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-3 09:03 | 显示全部楼层
刚才试了修改md5sums, 都是不行, 究竟PALM 还有什么档案去维护这个Mojo.js
回复 支持 反对

使用道具 举报

发表于 2009-11-3 10:25 | 显示全部楼层
难道有什么别的检查机制?
回复 支持 反对

使用道具 举报

发表于 2009-11-3 10:31 | 显示全部楼层
两处MD5都试了么?$ _- a9 A$ p* P& |# q) U
7 q  @2 z1 w- Z0 ]2 j; S
按说运行中是不需要检测这个的.只要更新ROM的时候才需要
) J  u9 t5 L3 @9 _( s+ y====================================================
' s* ~4 I& K+ O6 b' k: o8 b3 z- W$ w: S! n; v* d
/usr/palm/frameworks/mojo/submissions/191.15/javascripts/keycodes.js
- P. i" R5 ^1 t- }定义了键值
  1. /**) s% R- A9 {3 a/ `: R$ a6 i
  2. * @name keycodes.js
    . w. u$ q& E# O
  3. * @fileOverview This file has character code value
    - \  E, e! i: t# V5 |* L
  4. ; T: C, Y! c9 Q$ o* T4 |2 Y! l
  5. Copyright 2009 Palm, Inc.  All rights reserved.
    8 N- g/ V( u3 y/ s$ r

  6. 7 y) E9 m; T# d. ?9 |+ D
  7. */( Z: J9 j* Q6 N
  8. /**
    ( O1 j" `3 d' P% `$ O# }/ N. x
  9. @namespace Holds character code value (Refer to the actual source for values) and some useful key code checking methods.8 ?7 j: a( n( o4 n$ N; W
  10. @description
    & o/ I3 {. V( v/ E4 n! Y& x" L
  11. Holds character code value (Refer to the actual source for values) and some useful key code checking methods.1 ^" `! Z. ?$ A
  12. */6 E- O& h2 y4 \9 b
  13. ; ^$ ~  _% j: a/ O9 k# _6 n4 C# q
  14. Mojo.Char = {};1 `+ }, N1 [2 m" E/ N

  15. & F( i9 U" {% }: W" m; D% y, {
  16. Mojo.Char.backspace        =  8;
      D9 Z5 u" s/ {. S, ~3 P
  17. Mojo.Char.tab                =  9;; r# A* C  W' A; u) ]
  18. Mojo.Char.enter                = 13;3 ^( R5 [8 R2 i7 K
  19. Mojo.Char.shift                = 16;1 n3 B) n7 v. g, z9 U
  20. Mojo.Char.opt                = 17;
    ) ]- j$ \/ M, U) _
  21. Mojo.Char.ctrl                = 17;# w7 W& [. ~4 k: E4 J; M+ K
  22. Mojo.Char.sym       = 17;8 G# q7 g( t) Z+ h5 F2 m
  23. Mojo.Char.altKey        = 18;- u/ h; K! @! a4 Z- o6 f
  24. Mojo.Char.pause                = 19;  d5 k$ v, e' y0 H5 I' p) N
  25. Mojo.Char.breakKey        = 19;+ s3 S! |8 r( `3 o+ |' k/ [
  26. Mojo.Char.capsLock        = 20;, j+ a( W. X* }/ N- N. `9 D
  27. Mojo.Char.escape        = 27;6 Z4 _# R0 p9 O
  28. Mojo.Char.spaceBar        = 32;- d" H7 R- N$ d- U. ?, Z1 M
  29. Mojo.Char.pageUp        = 33;
    8 Z, T! r3 w% c8 s
  30. Mojo.Char.pageDown        = 34;
    2 @% ]) }( ~: p
  31. Mojo.Char.end                = 35;2 C4 E; S: k1 j& a, \# T
  32. Mojo.Char.home                = 36;
    6 R3 L' D+ @6 F. f
  33. Mojo.Char.leftArrow        = 37;
    1 ]& K7 [7 C4 j1 Y8 l' l2 U9 t- d1 Z
  34. Mojo.Char.upArrow        = 38;" D( A8 x( |" r9 u" c0 r
  35. Mojo.Char.rightArrow= 39;
    8 \* U$ L4 e$ g$ V& l
  36. Mojo.Char.downArrow        = 40;
    7 Q8 O0 B* |! m! N: U
  37. Mojo.Char.insert        = 45;
    . v% i# ^) _/ r4 |
  38. Mojo.Char.deleteKey = 46;0 ~) {. Z1 g( |6 a* o
  39. Mojo.Char.zero= 48;3 h- B8 D8 W  F$ N% x% u1 [
  40. Mojo.Char.one= 49;# J, y5 r) L: e
  41. Mojo.Char.two= 50;, h0 \5 Y  y6 v0 v
  42. Mojo.Char.three=51;1 s* q0 `) a. d) }( C& [9 _
  43. Mojo.Char.four=        52;4 W& S- r5 p; R% \7 Z
  44. Mojo.Char.five=        53;
    4 s$ J3 X- o+ R) A% \  _
  45. Mojo.Char.six=        54;7 _$ C, e. X& G; L1 |. p
  46. Mojo.Char.seven=        55;0 A6 J0 t+ P3 |+ ]
  47. Mojo.Char.eight=        56;* f8 C2 U4 o; {# I
  48. Mojo.Char.nine=        57;! C4 a) z! ?. m4 q
  49. Mojo.Char.a=        65;" p2 Y' [0 C: \
  50. Mojo.Char.b=        66;. {( }8 w4 I' {* P- Z
  51. Mojo.Char.c=        67;
    , m! m& [: t3 O& k( t: i+ g' j
  52. Mojo.Char.d=        68;' ?/ Z) K3 J* X; `: Y4 \. L( f$ P! T
  53. Mojo.Char.e=        69;
    * C  y: L( M' d, d! n
  54. Mojo.Char.f=        70;8 m  t: s5 t/ v3 `
  55. Mojo.Char.g=        71;
    ) A. d+ d- u8 T1 l2 L, k
  56. Mojo.Char.h=        72;
    , i( V9 y, P0 h$ |0 t( H2 @* y2 F
  57. Mojo.Char.i=        73;
    2 q; X, N* h9 a: _. W5 F
  58. Mojo.Char.j=        74;
    ! t( J9 [0 @2 Q% U
  59. Mojo.Char.k=        75;
    5 A" `! u& J# L
  60. Mojo.Char.l=        76;- y% T3 q* z& F6 [  N8 B$ b5 @
  61. Mojo.Char.m=        77;
    ; [4 F2 t- k/ G9 ~+ Y
  62. Mojo.Char.n=        78;  b0 B, g' N1 A; z- J
  63. Mojo.Char.o=        79;
    & A& K& u- R- ~( O) e  }
  64. Mojo.Char.p=        80;
    : ?" ?' {4 s5 u1 v
  65. Mojo.Char.q=        81;
    2 m# e- w6 c6 v7 p" B! N! ^
  66. Mojo.Char.r=        82;; F7 S( o- `& O7 J
  67. Mojo.Char.s=        83;
    % l1 V& D% i7 m3 v) c( X9 p
  68. Mojo.Char.t=        84;
    ( F# E( r( W0 P+ d" M4 k
  69. Mojo.Char.u=        85;
    $ r" A0 }. C+ y7 Q9 }
  70. Mojo.Char.v=        86;
    : n4 O3 F4 N3 _. Z7 V$ \# Q' _, x
  71. Mojo.Char.w=        87;
    . i) _3 F( |# {3 a% \
  72. Mojo.Char.x=        88;
    ( P3 ?8 W- e6 N5 o' |
  73. Mojo.Char.y=        89;2 }7 K, ~0 N$ T* D3 i! j6 K, C
  74. Mojo.Char.z=        90;8 Y+ |+ c' W) T0 m  u- {) m
  75. Mojo.Char.leftWindowKey=        91;
    8 I; u& r( P2 }( W- Z
  76. Mojo.Char.rightWindowKey=        92;& b6 p$ ]# r- ~% H: H
  77. Mojo.Char.selectKey=        93;
    5 v4 `' b5 n# V' D
  78. Mojo.Char.numpad0=        96;
    6 N7 L" \2 V8 n5 m2 ]! }6 M
  79. Mojo.Char.numpad1=        97;
    ( i" j/ J& @. k6 o. s/ R; w  _
  80. Mojo.Char.numpad2=        98;6 L5 B, r& h: e2 p1 m
  81. Mojo.Char.numpad3=        99;4 k% c' C% N* o+ O5 O2 I5 c5 @3 p
  82. Mojo.Char.numpad4=        100;
    1 Q. Q4 T% L+ d9 [: B
  83. Mojo.Char.numpad5=        101;7 K* `& y7 M; k  K% ]# h
  84. Mojo.Char.numpad6=        102;) o+ J/ i* T. ]
  85. Mojo.Char.numpad7=        103;7 J2 h0 ~, L) T" c/ h# t( Y
  86. Mojo.Char.numpad8=        104;! b( G+ i4 F! K/ I3 X
  87. Mojo.Char.numpad9=        105;
    , U* l/ P8 t! X" S  Z
  88. Mojo.Char.multiply=        106;
    ; F8 w' ?; o+ B1 @7 J' Q& L
  89. Mojo.Char.add=        107;
    6 ^' c+ r9 A$ H& f
  90. Mojo.Char.subtract=        109;/ g/ Z# F8 k) s5 A) z3 D
  91. Mojo.Char.decimalPoint=        110;
    2 |- |" |! p( l* }* _+ z9 ?6 {$ R
  92. Mojo.Char.divide=        111;) d' N4 t1 Y- D# _9 U
  93. Mojo.Char.f1=        112;& S+ ?0 Z& W+ B  r/ e! r, T3 H
  94. Mojo.Char.f2=        113;
    * z: L6 M; Y/ C5 A3 I5 m
  95. Mojo.Char.f3=        114;7 y# s7 D5 D/ D: t
  96. Mojo.Char.f4=        115;
    0 d4 Y, {. J& u- _9 G  |$ J
  97. Mojo.Char.f5=        116;
    3 N$ k6 F2 X3 o8 K. h
  98. Mojo.Char.f6=        117;, B9 S$ e6 {! O1 O3 ~
  99. Mojo.Char.f7=        118;
    ' \6 p! ~/ [* M5 T
  100. Mojo.Char.f8=        119;+ z9 c% q' r; H
  101. Mojo.Char.f9=        120;
    ! o# O" f# [: {
  102. Mojo.Char.f10=        121;& q7 K' p/ k2 r8 L1 H8 G
  103. Mojo.Char.f11=        122;% h( F& M3 m) W6 U1 k
  104. Mojo.Char.f12=        123;$ c9 A+ Q  h" s8 f% q- X
  105. Mojo.Char.numLock=        144;
    ( @6 y) K* S% Y! z8 {6 P" a
  106. Mojo.Char.scrollLock=        145;2 a4 u/ I) J% H" |
  107. Mojo.Char.semiColon=        186;
    6 N2 ]$ A; K$ P2 m# ]* }# y
  108. Mojo.Char.equalSign=        187;5 U9 {$ j; |+ |5 Z* w
  109. Mojo.Char.comma=        188;
    ( O# W. N. b. B8 s! h
  110. Mojo.Char.dash=        189;
    ; S5 F3 l" n$ g/ x/ }' G9 g7 H  Y
  111. Mojo.Char.period=        190;
    6 j" i; _6 E( {% |" I
  112. Mojo.Char.forwardSlash=        191;
    * L6 Y) ~0 n" D2 j
  113. Mojo.Char.graveAccent=        192;
    - h' ^* Q8 B  X/ u' F
  114. Mojo.Char.openBracket=        219;
    " I8 h2 d% ?; T$ b
  115. Mojo.Char.backSlash=        220;
    7 v7 U- S9 X# d" e
  116. Mojo.Char.closeBracket=        221;
    + u# l5 K; u% K$ G; r" w
  117. Mojo.Char.singleQuote=        222;% G5 g9 A; M4 G. C
  118. 4 `' d4 }' L' z( Q/ @
  119. Mojo.Char.metaKey = 231; //NEED THIS FOR META CUT/ COPY/ PASTE
    % ~! s5 V) \# G3 K; \
  120. $ P: s# T0 X# @7 g" ^4 ~- v: m" ^
  121. * L% m2 y# C4 i/ c8 C
  122. Mojo.Char.asciiZero = 48;
    6 B6 f' D  G" B$ y4 X5 C# O) R
  123. Mojo.Char.asciiNine = 57;. R* w4 ^* K* [& X: |
  124. : J5 U: ~" Q6 I. p% z5 y8 @3 p
  125. /* key determination */
    2 y& g- X- z) ~

  126. : n: p  H% M5 A
  127. /**
    / L: a* W8 |% i9 |% Z, }& a5 p! {
  128. This functions returns true if `key` is the enter key., E! U" y5 F8 P4 L
  129. " t* c) ?5 i% e3 s+ G4 L8 I& N
  130. @param        {int}        key                Key value to check
    ) S' Y( _# U' z: {. s+ x9 O
  131. @return        {boolean}                true if key is the enter key; false otherwise
    % l  e+ p# A+ Y" l7 u4 ?; Q
  132.   ; ?3 r) r  M* n$ f9 _
  133. */4 J9 H+ V" t8 k: f* e' a7 H
  134. Mojo.Char.isEnterKey = function(key) {
    $ Y) M2 j6 d# B0 N
  135.         if (key == Mojo.Char.enter) {+ C3 f- I, {2 p/ y$ X3 f
  136.                 return true;0 v$ W. ]- U$ j5 W2 Q1 l4 Z
  137.         }
    1 v8 o6 B- {# s/ S, y" ^
  138.         return false;8 F4 e! a3 S+ L$ x$ Y& H
  139. };
    3 c4 v# V8 \' Z. V5 z
  140. ! J& {# g; k/ M) M  A& G3 V: F+ C: o* }0 S
  141. /**
    - K" l/ @9 Z8 u. Y; _! y8 j
  142. This functions returns true if `key` is the "delete" key.
    , J; f1 U) X9 L; ~

  143. 2 b7 @* t3 j# a1 U2 L- v" f
  144. @param        {int}        key                Key value to check
    8 t3 U0 k7 |7 u, l$ O* p
  145. @return        {boolean}                true if key is the "delete" key; false otherwise! }; c0 H+ }/ p: p9 q
  146.   
    6 a1 R0 ~+ y$ L3 \' z$ r
  147. */
    . F! `9 j$ C4 }, p
  148. Mojo.Char.isDeleteKey = function(key) {
    4 f* h- d8 p2 W8 ?* A2 K
  149.         if (key == Mojo.Char.deleteKey || key == Mojo.Char.backspace) {, n$ d- E! F% m& L  r* F( w9 W
  150.                 return true;4 }; `  S- O0 j: |# J& U4 v
  151.         }
    5 |/ x2 Z# T& F3 D( |- ?
  152.         return false;( y' p( b5 N4 o; X0 t
  153. };+ a+ u: p" H0 I  s6 f

  154. ' w) @. r2 }  Z6 T+ w* m" d6 f
  155. //Special list of keys HI has deemed commit items8 T* M! I1 P4 A2 f) |" S

  156. . g0 g" M; ]8 p9 p) V: X+ l9 [
  157. Mojo.Char.isCommitKey = function(key) {* x# r) j0 Q/ Q8 x
  158.         //space, comma, semicolon
    ' [( _/ o& T8 g" G2 ^
  159.         if (key == 59 || key == Mojo.Char.semiColon || key == Mojo.Char.comma /*|| key == Mojo.Char.spaceBar */|| key == 44) {0 A2 z! A- h! K* I! E1 [
  160.                 return true;
    0 o2 z! `7 q# B) ]% E1 G$ P5 e
  161.         }
    9 v, G. u2 f2 y8 c/ X9 d3 N% I
  162.         return false;( V8 x/ P6 e; \8 v( i. w7 T- w4 k
  163. };, y  Z4 ~1 A- q1 F+ S( z+ R' i! \1 z
  164. / w; y# N' B( }5 C
  165. /**@deprecated**/" b2 _# `. W/ D# d1 `9 q% w% {- m
  166. Mojo.Char.isValidWrittenChar = function(keyCode) {; e! o" [+ J+ Z9 C
  167.         var s = String.fromCharCode(keyCode);
    6 p+ J8 O/ O4 e8 G7 z
  168.         var valid ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-+ !@#$%^&*()"'/?><.,=_";
    * m  \& A* D+ q' t- Z9 ]
  169.         if( valid.indexOf(s) >= 0 ) {6 `3 k! V$ \$ ~
  170.                 return s;
    8 s  R1 m- t  a
  171.         }
    5 T7 P6 c+ _" [; J/ A$ X
  172.         return null;
    / E7 W; I% t' D# }
  173. };- X+ f% b* L0 O: b2 t$ l
  174. 7 d# I. o) x: J7 H# z* Q1 S
  175. Mojo.Char.isDigit = function(charCode) {- S  c1 ]  M# J: I
  176.         return charCode >= Mojo.Char.zero && charCode <= Mojo.Char.nine;6 C! q9 L2 Z! C* x0 r1 M
  177. };5 h, m; I. x3 J9 s& S
  178. 1 v7 |1 K/ f6 R/ v0 y3 N
  179. //for keypress; in the browser, this sends the ascii code" F, t0 X9 |3 }$ |; R5 f
  180. Mojo.Char.isValidWrittenAsciiChar = function(keyCode) {
    3 i8 d: v, v8 N3 e$ Y; Z
  181.         return (keyCode >= 32 && keyCode < 127); //127 is delete
    + Z2 L* ~% e$ [4 V, p
  182. };
    3 E9 R% o% o- f3 o

  183. ( u+ Q8 j2 c( f' ^
  184. ) Y* @$ {& Q, p' Z* b& ]
  185. ! x: f' f& s9 ~9 [
  186. //for KEY UP OR KEY DOWN; in the browser this sends the windows key code$ e2 g$ C! ^1 c- O0 r2 E; N
  187. Mojo.Char.isValid = function(keyCode) {; B9 `7 s2 x6 w7 D$ t' R1 h
  188.         //parens keys then 0 key to Z and special chars like _ & key0 v% |7 X5 G8 ~, z# X. M
  189.         if ((keyCode === 0x20) || (keyCode >= 0x26 && keyCode <= 0x5F) ||
    5 A: N; S$ n' X7 Q3 a2 @
  190.         //Multiply key to Divide key
    / H$ E% l0 k  Z6 P
  191.         (keyCode >= 0x6A && keyCode <= 0x6F) ||
    & a( y* A1 {  L# h3 A1 P
  192.         //';:' key to '`~' key
    % v* a, G" M, I( K
  193.         (keyCode >= 0xBA && keyCode <= 0xC0) || ! j: ^3 r  @, n' p  S% }4 X  s* N
  194.         //'[{' key to miscellaneous characters
    * j2 I& e7 ^4 h" ~4 N% w
  195.         (keyCode >= 0xDB && keyCode <= 0xDF) ||
    ( Q. X; u. ^. U7 p4 P: b
  196.         // angle bracket key or the backslash key
    ; w) O$ d- Y" \: U
  197.         //and euro sign for QWERTZ2 J+ c! S# U8 s; D4 l" @9 d0 ?2 |1 p( A
  198.         (keyCode === 0xE2) || (keyCode === 0x20AC)) {9 w  Z/ s2 t0 R- q4 t: T3 f$ j7 B
  199.                 return true;- G- Z$ R; g8 z
  200.         }% N; u2 e+ [3 S* k0 f
  201.         return  false;
    5 Q2 n& H& B8 D+ {; V: v
  202. };
    4 `4 g/ @( t8 U* `" k6 n2 L

  203. / n/ I  D" C- O$ b; W# n+ _
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入我们

×
回复 支持 反对

使用道具 举报

发表于 2009-11-3 11:40 | 显示全部楼层

太奇怪了,基本上没做什么处理,竟然替换成功了

在模拟器上替换成功也达到ted想要的效果了,' H6 V  ]- Q" R4 \# p& Y$ S
看来ted的这个方法是可以行的通的,
- Y8 h+ R6 `! F" y7 L就差时间和工作量了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入我们

×
回复 支持 反对

使用道具 举报

发表于 2009-11-3 12:15 | 显示全部楼层
也看到效果了, 期待更进一步的消息.
. D) q" k/ W- ^6 O6 p6 L+ K$ D使用Alt健来切换, 仅在模拟器中测试.
  [( w, N8 U; {7 v+ W4 g+ ^; ?' j$ k1 ~0 i1 @4 J' [
中文模式:' l6 C1 b* Y  X* ~
5 o; ~' O  z4 [6 }, @- c

7 x; v) l# V# J# h英文模式:
3 e- E" ]  g$ H+ Z3 G6 h7 n; k7 Y/ G

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入我们

×
回复 支持 反对

使用道具 举报

发表于 2009-11-3 12:36 | 显示全部楼层
一会儿我在实机上试一下..目前数据同步备份中.
回复 支持 反对

使用道具 举报

发表于 2009-11-3 13:59 | 显示全部楼层
期待能有重大突破!
回复 支持 反对

使用道具 举报

发表于 2009-11-3 14:41 | 显示全部楼层
真是激动人心的消息啊,个位高手加油啊
回复 支持 反对

使用道具 举报

发表于 2009-11-3 14:47 | 显示全部楼层
来支持下。 各位加油  加油。
回复 支持 反对

使用道具 举报

发表于 2009-11-3 14:54 | 显示全部楼层
加油加油!!!!顶你个肺!!!!
回复 支持 反对

使用道具 举报

发表于 2009-11-3 15:08 | 显示全部楼层
这个是个好消息啊!各位哥哥好样的
回复 支持 反对

使用道具 举报

发表于 2009-11-3 15:08 | 显示全部楼层
强帖留名
回复 支持 反对

使用道具 举报

发表于 2009-11-3 15:11 | 显示全部楼层
好消息,高手高手,gogogo
回复 支持 反对

使用道具 举报

发表于 2009-11-3 15:11 | 显示全部楼层
高手们辛苦了,唉,俺当初要学软件就好了,也可以参与了。可惜俺搞硬件的,对java一窍不通。
回复 支持 反对

使用道具 举报

发表于 2009-11-3 15:14 | 显示全部楼层
加油! 不簡單的任務.6 ]' Z% K9 G* q! {
回复 支持 反对

使用道具 举报

发表于 2009-11-3 15:27 | 显示全部楼层
有一个风险就是, mojo.js 是框架的内核, 如果对这个文件进行修改, 当前版本应该不会有问题,但是一旦palm更新版本, 这包括对内核的升级(应该会有结构性的变化), 这些工作就要重做..当然量并不是想像中的那么大9 ]. X1 j, e" }1 ]( Q

1 g' q6 o5 G9 @; v! U4 a3 ~$ w我还是期待palm会有相应的API来达到对原生输入法的支持
回复 支持 反对

使用道具 举报

发表于 2009-11-3 15:32 | 显示全部楼层
啊,刚才忘了一句话
, B+ x! c: r% Y; C
. U3 \) u; a6 T+ G目前期待的是:. w, i: Q  `2 M; U' [2 i4 e7 b$ P
1. PALM再强悍点, 开放所有API
: j6 b$ r, `/ k8 d. C9 p2. PLAM直接倒闭吧
! q! v* _  p- P# H$ F% [; G. Z
2 d; V$ H/ I( e* u
回复 支持 反对

使用道具 举报

发表于 2009-11-3 15:45 | 显示全部楼层

新思路

可以仿照mojo 下的charselector,这个文件是用来输入特殊字母的。应该是alt(或meta,ctrl)+char,本人没试过,但看了代码。仿照charselector的机制,在control和widget里加入调用。
回复 支持 反对

使用道具 举报

发表于 2009-11-3 16:04 | 显示全部楼层
什么都做不了,只能给各位高手来加加油啦!
回复 支持 反对

使用道具 举报

发表于 2009-11-3 16:46 | 显示全部楼层
各位辛苦了
回复 支持 反对

使用道具 举报

发表于 2009-11-3 16:51 | 显示全部楼层
不懂技术的小白来摇旗呐喊!
! M  H' w- P' C( k# Z+ x! _* i$ T大家辛苦了,歇歇喝口水吧~
回复 支持 反对

使用道具 举报

发表于 2009-11-3 17:26 | 显示全部楼层
电脑崩溃了。一下午都没恢复
- K" z  U) B  X; a% b0 m  D0 c晚上要对付电脑罗,暂时没办法实机测试了
4 K% L$ |0 {; H3 z' {# `* l3 T4 r  c; t0 o
[3G坛,手机登陆吹友吧发帖]
回复 支持 反对

使用道具 举报

发表于 2009-11-3 17:28 | 显示全部楼层
晚上试一下真机. 测试.
回复 支持 反对

使用道具 举报

发表于 2009-11-3 17:39 | 显示全部楼层
不会技术的纯爷们支持!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

QQ|Archiver|手机版|小黑屋|吹友吧 ( 京ICP备05078561号 )

GMT+8, 2025-2-19 07:08 , Processed in 0.395612 second(s), 16 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表