找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 18165|回复: 169

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

[复制链接]
发表于 2009-11-2 00:19 | 显示全部楼层 |阅读模式
大家好, 近日用WebOS Doctor 看了Palm WebOS 的内部构做, 发现. W6 ~8 q: g+ @3 k% M
在palm/frameworks/mojo
) J" I$ C, k- v. S5 H$ k$ K中有两个档案是常被呼叫的, 就是mojo.js, palmInitFramework191_15.js5 n! }0 f* r2 Q0 T
5 m- R4 G& P( ~  e8 ]
我的构想是如下, 我们先写一个keyOnPress, 看看当程式执行时,当键盘被按时, / j- Q0 c5 h: [3 I6 U+ @
keyOnPress 会不会被呼叫, 如果会的话, 便好办了, 这就可以用keyOnPress 2 v4 `7 {0 E$ ^
来呼叫一个转换中, 英文的Menu, 从而再做一个输入法切换的界面. 8 b9 o7 P) E. X2 b& X. m
如果keyOnPress 不能被呼叫的话, 那就继续想想如何做吧... ...4 j# U0 U: u% I, D

) X. {( M! Z, M( b; g大家的想法如何?
# u( s8 Q5 N) |0 |7 ]& a" ^" q- c% z. x+ m$ {, R7 F' k, [; ^! \' Q+ |
[ Edited by tedwong on 2009-11-2 00:20 ]
( z, b0 p8 z1 }6 {8 J" I: H. G# p0 B5 d8 N

+ H, u/ m$ @3 b' _初步版本已发布 : http://www.treo8.com/bbs/thread-142783-1-1.html
回复

使用道具 举报

发表于 2009-11-2 00:35 | 显示全部楼层
现在可以写出相应的小程序了么?0 q- Q7 k% V9 R4 r; w

6 |& I7 W0 O3 D相信这里很多朋友愿意一起协助测试...
回复 支持 反对

使用道具 举报

发表于 2009-11-2 09:28 | 显示全部楼层
好象事件的分发是在event.js里面的,
" t( x) i; Y, x4 Pjava我不熟悉,不知道选择字符的界面能统一在这里生成吗?
6 G  }% a; m' d5 u/ A* V- A/ I% Q
& z, J3 Z5 ~: C6 T3 i9 g) {好象Widget没有一个统一的base class,
/ F4 `: W3 G: ~3 c, b不过即使在每个widget上面加事件处理和输入界面也不算麻烦,6 o7 ~1 w! [4 [& |, ~
ted先做个demo出来?我们照板煮碗
回复 支持 反对

使用道具 举报

发表于 2009-11-2 16:00 | 显示全部楼层
不知道Pre的那个On Screen Keyboard大家有没有留意。。$ v5 ?5 a; i& f" _# j1 ~! @# z
它就是按"Sym"按键就可以调出那个keyboard。。。' e0 h, B  O5 F! U; _. C
这个是一个很重要的一点哦  v9 H- K) Y4 Q& u/ V3 f
详细可以参考这个。。。) w* Z0 J: [/ n
http://www.webos-internals.org/wiki/On_Screen_Keyboard) j9 R9 {1 T& }
8 o6 q5 g4 h9 Z/ L. V2 e8 p% S
On an unmodified Pre if you press the "sym" key a scrollable 5x5 keyboard pops up full of alternate characters.
. o; M1 Q: s1 s% h, W# eThis 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.js. ?6 J5 _0 b/ [) ^+ h1 e4 ^
with the layout controlled by 3 files in /usr/palm/frameworks/mojo/submissions/191.15/templates/charselector
% N* ~& Y* N* P/ `, Q) Nthe 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- _& q, O9 L) B5 ~  ]! ^
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.
5 n% i  [: V# ^" J3 yAt the next level, the framework's copy of widget_charselector.js needs to be modified to not close the keyboard after each keypress.- K; a7 a" y+ q9 i( @
On 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.
* X' B! A; y1 _5 F/ |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.js
" Y% F% ?7 m) s) O4 b  g. _重写, 如果我没有估计错误, 这是很容易达成的(今晚会再试). 如果成功将原厂的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里就有!& i7 ^% S! {" B3 c3 {; F/ ?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-2 20:47 | 显示全部楼层
原帖由 cet63 于 2009-11-2 20:40 发表 3 N+ ^6 E0 r6 i5 f: ^
WebOS的JS框架就叫MOJO,那个Mojo.js在SDK里就有!' A( D7 x6 v3 R8 J, R& j( F9 k" D

3 g) |- k7 F1 w* ~8 {6 d对, 之所以他是WEBOS 的框架, 所以输入法也应该在这边入手, 不是吗?
回复 支持 反对

使用道具 举报

发表于 2009-11-2 21:08 | 显示全部楼层
是啊..如果能从最基本的框架里下手.那ui上的任何程序都可以进入 了啊..: s% S3 I+ Z; H4 ]! Z
. v8 R0 n0 g% O: T0 J+ o
就是不确定是否能成功
回复 支持 反对

使用道具 举报

发表于 2009-11-2 22:01 | 显示全部楼层
附上原来的mojo.js.以防万一! _! s" p9 [5 c7 f- ]; }2 \/ B' N

! t; P$ Z5 h+ z( W) f  l& L位置在/usr/palm/frameworks/mojo/

本帖子中包含更多资源

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

×
回复 支持 反对

使用道具 举报

发表于 2009-11-2 22:30 | 显示全部楼层
模拟器mojo.js8 u* n6 H: ?* @8 a! O9 _

9 G2 e' v+ E8 w7 b7 Q
4 l! r0 b: r5 n' {) ?1 g0 b我改名为: 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都试了么?
9 k( \- Q, R1 m* v7 Q% {' E" F$ p  S
0 I7 w- ]; n+ f; D1 b$ A; E按说运行中是不需要检测这个的.只要更新ROM的时候才需要
3 i& K0 T- V0 `9 }, c3 m====================================================
, s4 y4 g$ B4 s7 U7 I# [2 b: f% q4 X# ]5 W6 `3 Z% R
/usr/palm/frameworks/mojo/submissions/191.15/javascripts/keycodes.js
" E& g/ i; B3 x, P0 b8 o" M定义了键值
  1. /**
    * h  ]8 S" k  M) v8 l, h+ j* z5 J& N
  2. * @name keycodes.js. c3 [8 P. |! W* n: b8 T! P
  3. * @fileOverview This file has character code value
    6 a9 i$ a3 j/ S( n0 N$ a, h& H6 {
  4. 8 H8 A$ o0 G' a% F; ~: r
  5. Copyright 2009 Palm, Inc.  All rights reserved." x; y  c9 H  H: I
  6. - ]4 v" U( f$ w0 `
  7. */
    : e4 Q3 r6 w- S3 y6 _" r
  8. /**
    9 e6 X8 M, B& B: m2 J- E+ Z
  9. @namespace Holds character code value (Refer to the actual source for values) and some useful key code checking methods.. R- J5 d- _) L2 G; h; V3 {
  10. @description & a6 d* o3 R* b6 `) A% h6 Y5 w
  11. Holds character code value (Refer to the actual source for values) and some useful key code checking methods.
    ! Z; v+ C. f; H& |& ?2 u
  12. */
    % h+ u0 {2 z2 Y5 |. }

  13. 6 K8 j3 i* N" d7 f1 |) q
  14. Mojo.Char = {};2 k% p" W% C2 a
  15. 2 n9 e* I! S6 p2 x+ A* |1 W
  16. Mojo.Char.backspace        =  8;5 P, Y: D+ _5 n! L" d
  17. Mojo.Char.tab                =  9;
    7 _$ n- U( F4 c7 s5 s- D
  18. Mojo.Char.enter                = 13;
    0 j! Y0 O0 d! {8 J* s5 ]
  19. Mojo.Char.shift                = 16;* \& ?* c" Q2 \9 M" k* M
  20. Mojo.Char.opt                = 17;; k7 m8 n) G4 x# {& B; S
  21. Mojo.Char.ctrl                = 17;" b+ S  [8 Y7 m" V2 S1 E
  22. Mojo.Char.sym       = 17;2 d; W. e6 N  \8 I! ]9 u4 p
  23. Mojo.Char.altKey        = 18;2 ^% k& S( m( `4 Y
  24. Mojo.Char.pause                = 19;
      Y+ k9 l! m: j
  25. Mojo.Char.breakKey        = 19;
    $ H  ~+ v" q; R; y1 y
  26. Mojo.Char.capsLock        = 20;
    ) f0 `8 L% f( z+ j, z* \& x
  27. Mojo.Char.escape        = 27;* ^+ L& [+ M( V5 y- m" |' m
  28. Mojo.Char.spaceBar        = 32;7 V/ C& R' G. b0 }# M/ z, s
  29. Mojo.Char.pageUp        = 33;/ l8 A. x9 W9 j# D( }) Y7 l
  30. Mojo.Char.pageDown        = 34;: b. D3 ?' ~0 v  c- ~8 A& Y" \
  31. Mojo.Char.end                = 35;1 p; L; n, _; L! P7 R
  32. Mojo.Char.home                = 36;7 O! z( L& z% O  w' X
  33. Mojo.Char.leftArrow        = 37;
    & ~% S3 b) o1 s5 q0 @( r) K
  34. Mojo.Char.upArrow        = 38;
    : N' c1 V, P) r& M  h  D6 T* x
  35. Mojo.Char.rightArrow= 39;  P+ K# x" D$ R' Q3 l/ C# @! V
  36. Mojo.Char.downArrow        = 40;
    * u* B7 e8 r" u: k+ b8 S# r  n
  37. Mojo.Char.insert        = 45;' S6 `5 L/ Q# [- `1 o7 J4 Y
  38. Mojo.Char.deleteKey = 46;5 e# B+ s* c6 B& w6 G
  39. Mojo.Char.zero= 48;
    / i9 D  c* t& p# I5 N
  40. Mojo.Char.one= 49;5 K& r4 z8 H  a% r% A1 ?6 p
  41. Mojo.Char.two= 50;
    1 c8 q& Q+ `8 v) _4 o
  42. Mojo.Char.three=51;
    5 v4 [( e$ x" ]8 v. l
  43. Mojo.Char.four=        52;& [3 r$ @9 V% S% {& L2 p
  44. Mojo.Char.five=        53;  K5 h' D1 [+ d( n* i
  45. Mojo.Char.six=        54;$ D' H. n+ F0 G, I# E# y; b, u2 r6 n1 A
  46. Mojo.Char.seven=        55;; g: U+ F! U# u/ F$ H
  47. Mojo.Char.eight=        56;# U0 E8 C/ Q2 ]' B' T2 r
  48. Mojo.Char.nine=        57;0 V7 M1 z7 y( D  X
  49. Mojo.Char.a=        65;
    - V$ s: w6 @4 ^5 E2 T
  50. Mojo.Char.b=        66;) ?5 `# a: W- U# ?- W
  51. Mojo.Char.c=        67;: q- S* N: d4 R7 R2 Y) x& \, e
  52. Mojo.Char.d=        68;
    / N- m# t; X( J% _! F
  53. Mojo.Char.e=        69;
    9 H& e% O4 F! `$ [, ]
  54. Mojo.Char.f=        70;/ E9 `1 r3 M$ {) l6 K
  55. Mojo.Char.g=        71;
    5 ]# R  W! B# K! _. U$ I4 v
  56. Mojo.Char.h=        72;
    $ W  V6 c! d0 Y, m5 o) S
  57. Mojo.Char.i=        73;
    2 x3 S& v" W( G% E, Y" |
  58. Mojo.Char.j=        74;& h% F3 K, p" E! T8 J
  59. Mojo.Char.k=        75;
    ( O3 d$ G( l3 y9 i+ s1 B
  60. Mojo.Char.l=        76;
    # _6 S& g! @& f! }* s6 R& @
  61. Mojo.Char.m=        77;
    6 N+ M; Z  z: |4 t
  62. Mojo.Char.n=        78;5 ]% h% A! ]+ b' S+ i
  63. Mojo.Char.o=        79;! |. h& R* y! v: y- C* v
  64. Mojo.Char.p=        80;
    / r2 [4 r& D6 p' Z2 ]
  65. Mojo.Char.q=        81;, T7 R  k  a4 R& r) \+ I
  66. Mojo.Char.r=        82;" P$ [7 t2 w) T) w7 ~5 s
  67. Mojo.Char.s=        83;
    8 m+ D  x0 ~$ h
  68. Mojo.Char.t=        84;
    2 c, v4 ?. `+ S  {$ @3 B
  69. Mojo.Char.u=        85;
    * y, m7 h% S" L9 o! U* R
  70. Mojo.Char.v=        86;+ ^5 X8 Q% \" O
  71. Mojo.Char.w=        87;- y. ]6 A' F! m8 i4 ?
  72. Mojo.Char.x=        88;5 ]3 X, c: l7 G6 _+ s: N) ]' Z5 }
  73. Mojo.Char.y=        89;& A$ I0 m# p3 `
  74. Mojo.Char.z=        90;
    + P  W# x2 a1 m: c( I
  75. Mojo.Char.leftWindowKey=        91;
    , q* r7 V  O9 e$ ?
  76. Mojo.Char.rightWindowKey=        92;
    1 {* t0 L8 g4 N  [# E
  77. Mojo.Char.selectKey=        93;) c5 p6 E; @4 k3 ~) D$ a$ B. V
  78. Mojo.Char.numpad0=        96;7 K( T1 ~; l; y
  79. Mojo.Char.numpad1=        97;3 ^, x9 ~5 h% {  O) E, n
  80. Mojo.Char.numpad2=        98;1 L& F, z' h8 y3 l9 ]
  81. Mojo.Char.numpad3=        99;
    8 D! W& D+ X0 o/ z, Z( z
  82. Mojo.Char.numpad4=        100;. ?1 D3 U/ }3 l  h" B! ~4 _5 g
  83. Mojo.Char.numpad5=        101;2 r9 _' H% q! n# y' w4 T
  84. Mojo.Char.numpad6=        102;# p* N" t# q9 _; R) w9 a1 a2 N
  85. Mojo.Char.numpad7=        103;
    0 M) ?8 n% g6 w% U$ e3 z3 t  b8 w% Z8 b% p
  86. Mojo.Char.numpad8=        104;
    ) q  v% @0 j& B0 m( f1 `* y
  87. Mojo.Char.numpad9=        105;
    0 D& O% i/ n# _: W
  88. Mojo.Char.multiply=        106;
    ) M1 R9 t( h8 r
  89. Mojo.Char.add=        107;# P9 q: f. {8 K/ R2 m7 P
  90. Mojo.Char.subtract=        109;
    : ], O2 L/ g; S$ E  E/ f
  91. Mojo.Char.decimalPoint=        110;6 U% S5 z; l( h& W
  92. Mojo.Char.divide=        111;: N% Q/ O8 h1 M
  93. Mojo.Char.f1=        112;! w( Y# U6 B( i) j! p0 k+ t% L
  94. Mojo.Char.f2=        113;) Q' G+ r/ ?6 O) n& A' E& ^
  95. Mojo.Char.f3=        114;- S* Z& U2 B' ]- Q. v6 z0 S
  96. Mojo.Char.f4=        115;4 T2 M" u# J& q; A' O3 P1 k+ q6 w
  97. Mojo.Char.f5=        116;
    : b8 v, Y3 S4 G' c) j% k
  98. Mojo.Char.f6=        117;+ ]$ {; h  F6 _, B* E# S' V
  99. Mojo.Char.f7=        118;2 a. \- l1 A$ u  P. r3 U
  100. Mojo.Char.f8=        119;' f" d: s$ L! O9 x' ~' x, \* N* ^
  101. Mojo.Char.f9=        120;
    1 D1 W* Z* C" Q+ C5 V. e
  102. Mojo.Char.f10=        121;
    & J# p1 k/ J" [9 a' t1 J# l; c
  103. Mojo.Char.f11=        122;0 `6 {8 ^8 t3 `
  104. Mojo.Char.f12=        123;: A5 C$ p4 `  [) d& j: I
  105. Mojo.Char.numLock=        144;
    - H+ q6 `% L! i6 @! p5 u6 ]
  106. Mojo.Char.scrollLock=        145;1 v/ F" |/ C; y' n# P; s: }3 }% F" |
  107. Mojo.Char.semiColon=        186;: v' ^: y# q, f! h# a( k$ h; V
  108. Mojo.Char.equalSign=        187;
    7 V  p' I8 o% _  T8 F0 y
  109. Mojo.Char.comma=        188;
    ! z9 p$ {* Y0 J% c
  110. Mojo.Char.dash=        189;8 h. ]' o1 w. p* }
  111. Mojo.Char.period=        190;& ]/ x% ?9 O$ y( z& z7 Q2 k
  112. Mojo.Char.forwardSlash=        191;
    2 q3 D- i/ x5 B2 Y+ R4 u
  113. Mojo.Char.graveAccent=        192;& G' j9 C- \+ i% ^; [4 L9 Z6 u
  114. Mojo.Char.openBracket=        219;
    4 a' Q. o2 T9 i
  115. Mojo.Char.backSlash=        220;
    . Q3 }7 H5 [! S6 t, B' C
  116. Mojo.Char.closeBracket=        221;" q% l" c1 g; I7 K5 z( g" A, \! C
  117. Mojo.Char.singleQuote=        222;
    ; ^' s$ Q4 I6 T/ ?# b. m3 O

  118. / b6 o6 j2 d6 B  S
  119. Mojo.Char.metaKey = 231; //NEED THIS FOR META CUT/ COPY/ PASTE
    % H  S6 h! X8 s/ Y' \' d' g; C8 U
  120. ) X% C: i; u& D, l# }: B2 @7 Z
  121. * g( F, S1 i; t* p% ?- E
  122. Mojo.Char.asciiZero = 48;) `4 F) l/ O# A. F- L( D# Y4 Q; W% E
  123. Mojo.Char.asciiNine = 57;1 X7 j+ A  A* @& J
  124. 2 L1 A) W7 m8 T9 L- _
  125. /* key determination */
    : T& E+ V* C& S

  126. ( X1 M) E3 n* o. h5 A
  127. /**# K4 @4 e, s# N4 Q, U! J0 k6 t+ j
  128. This functions returns true if `key` is the enter key.( M5 }( n( B, r$ I
  129. & F, C8 k( S0 t: k1 H. o# ?
  130. @param        {int}        key                Key value to check
    ( G2 l* s5 d0 g" r/ y1 T
  131. @return        {boolean}                true if key is the enter key; false otherwise
    ' ]3 M# ^$ n: Q' r
  132.   : u* L- ?" D: r: P6 f, W; U
  133. */
    # o1 J5 W0 y! @! \4 }  d6 f9 i
  134. Mojo.Char.isEnterKey = function(key) {
    " [! E: J4 z5 X; f! G+ T: z! q
  135.         if (key == Mojo.Char.enter) {
    2 @8 b! a* F1 [$ b
  136.                 return true;1 |* ^2 m& r* M+ U5 w
  137.         }
    / \+ [  A& [! y& S7 g8 y
  138.         return false;
    4 d/ e; V  H8 y" E/ x
  139. };. `2 \' E7 K1 Z2 A

  140. 5 ~7 z! Q2 {( \: L( z
  141. /**3 \4 \$ P, K! B+ E6 O
  142. This functions returns true if `key` is the "delete" key.
    8 j2 N/ ?' N( i$ r# y

  143. 3 I7 v9 W9 \2 P; b+ ?) G
  144. @param        {int}        key                Key value to check
    $ [2 `; r. T2 X* Y  G. j
  145. @return        {boolean}                true if key is the "delete" key; false otherwise( ^# w& W2 F/ z; k0 W  \
  146.   ' B! W  Z4 U8 b2 H* u* j9 D
  147. */
    ' b# Y' j+ g& \4 b% V3 A
  148. Mojo.Char.isDeleteKey = function(key) {
    * ^, |# l8 h! p8 Q- l9 m4 H  T
  149.         if (key == Mojo.Char.deleteKey || key == Mojo.Char.backspace) {
    7 S* b1 ]% I: i( T% e# a
  150.                 return true;
    ( |& P- d8 D2 \! C, d) s
  151.         }
    ) ~+ D( i* z6 _: D
  152.         return false;
    ( c5 _, }2 [, F& r
  153. };" [! n& _2 y& |! u% s
  154. , s+ Q& u9 v( Q* N1 ]3 c) i0 e
  155. //Special list of keys HI has deemed commit items
    9 h. l  ~; k9 y# f5 X
  156. . ?% O# r6 p* P6 z  N% A
  157. Mojo.Char.isCommitKey = function(key) {
    " X* ~! \- X1 b# U% q3 J( M- h
  158.         //space, comma, semicolon
    8 p, J7 Z  T& T! t
  159.         if (key == 59 || key == Mojo.Char.semiColon || key == Mojo.Char.comma /*|| key == Mojo.Char.spaceBar */|| key == 44) {9 M2 X( ?4 U8 b' F
  160.                 return true;
    2 H/ J4 @( v3 D' _5 h8 b
  161.         }& O( [" D% y  E; p4 [3 Q
  162.         return false;: O8 i9 d5 {+ i$ M
  163. };
    9 X: h0 O, i4 U5 ^) y; i3 I) l7 B
  164. 8 @4 {* d4 r# |- m' A. r0 }' s' i( ?
  165. /**@deprecated**/
    ( [$ k3 R! c8 m6 W
  166. Mojo.Char.isValidWrittenChar = function(keyCode) {, ^4 p' _; ?" o1 ]  l$ \. M' E
  167.         var s = String.fromCharCode(keyCode);
    ; w, u' e4 j, I3 U- n
  168.         var valid ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-+ !@#$%^&*()"'/?><.,=_";' x; b$ h+ V: J6 P6 x: K
  169.         if( valid.indexOf(s) >= 0 ) {5 ]( H, N+ n. g3 |3 `% l: L, S
  170.                 return s;4 a8 G' I) r8 j8 \4 B) H- f
  171.         }
    7 F, |4 k+ ?7 V
  172.         return null;
    2 k3 i6 F7 Z* n5 ?8 H) `
  173. };/ ]0 y6 ^8 [+ B) W, v
  174. ' S+ C- h% Z7 ^+ y# I8 u0 x
  175. Mojo.Char.isDigit = function(charCode) {
    0 Z3 D3 d! {! ?  O  M
  176.         return charCode >= Mojo.Char.zero && charCode <= Mojo.Char.nine;
    0 i/ H0 k7 [; |" n4 d" l3 f
  177. };8 s, S  i  N3 T7 J3 D$ f% M) T

  178. ! x5 Q1 u/ l  L- Q3 J5 k& o% u* g
  179. //for keypress; in the browser, this sends the ascii code
    $ E% V. y* U2 G! C
  180. Mojo.Char.isValidWrittenAsciiChar = function(keyCode) {# s2 z  ~" o4 v* }  W
  181.         return (keyCode >= 32 && keyCode < 127); //127 is delete* p- V" T1 B1 L, j' \
  182. };+ u/ H3 _- Z% G: i  Z1 }+ G

  183. " @9 F$ {: p7 _7 w1 s* ~5 m
  184. 1 v$ u: z) U, r# f$ E
  185. 9 |  f( Z7 @0 C- s$ w+ @
  186. //for KEY UP OR KEY DOWN; in the browser this sends the windows key code
    9 R# ?& J* d! b' o) R
  187. Mojo.Char.isValid = function(keyCode) {" x/ s8 B( G# D
  188.         //parens keys then 0 key to Z and special chars like _ & key& m% _$ Z/ R! ]% s5 y3 s. h
  189.         if ((keyCode === 0x20) || (keyCode >= 0x26 && keyCode <= 0x5F) || " o0 \! A% c4 G: D) J$ G
  190.         //Multiply key to Divide key8 e9 E' H7 B% w1 C2 `! a; Z
  191.         (keyCode >= 0x6A && keyCode <= 0x6F) ||
    5 |4 K1 _  m" L9 D& `9 m$ F
  192.         //';:' key to '`~' key
    ; l4 Q( s- L( O# U" A# B
  193.         (keyCode >= 0xBA && keyCode <= 0xC0) ||
    / F# X! N2 t- k4 r8 n7 K8 p
  194.         //'[{' key to miscellaneous characters5 i: S) b/ E. o, J! I
  195.         (keyCode >= 0xDB && keyCode <= 0xDF) ||
    ( H% A1 _% s* f4 B, Z: x
  196.         // angle bracket key or the backslash key
    6 Q% v- P$ `6 s) I: f/ J
  197.         //and euro sign for QWERTZ3 |8 t" U2 C/ W  V
  198.         (keyCode === 0xE2) || (keyCode === 0x20AC)) {
    , w/ z& [2 T% D- E8 y$ Z! }
  199.                 return true;
    6 D; K# |. S+ k  A
  200.         }6 B! r5 U; A* f' [( ~) l
  201.         return  false;
    - G2 i# }" @9 R0 A$ V9 @& n5 P
  202. };
    ( g" L" s) ~" @1 ]* M

  203. $ U# t% @6 u2 z5 M) J
复制代码

本帖子中包含更多资源

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

×
回复 支持 反对

使用道具 举报

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

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

在模拟器上替换成功也达到ted想要的效果了,
% g1 t/ X1 k/ \6 M看来ted的这个方法是可以行的通的,: J; C; J, [; H) g" C% S2 Q) ]' ~
就差时间和工作量了

本帖子中包含更多资源

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

×
回复 支持 反对

使用道具 举报

发表于 2009-11-3 12:15 | 显示全部楼层
也看到效果了, 期待更进一步的消息.7 j3 O8 v4 Y' \" l
使用Alt健来切换, 仅在模拟器中测试.$ C1 c" \: ^. @
0 v/ l- u' e) K
中文模式:' Y! o5 u1 z% f; K. h- w" x2 {
% J+ @+ q6 b9 E$ p! \
8 O  ~4 n* c8 b  e6 Y8 h5 _
英文模式:
8 F3 e$ t, k2 C4 R: R1 Z

本帖子中包含更多资源

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

×
回复 支持 反对

使用道具 举报

发表于 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 | 显示全部楼层
加油! 不簡單的任務.
* Y) w4 [8 }2 H% B9 {" i5 d
回复 支持 反对

使用道具 举报

发表于 2009-11-3 15:27 | 显示全部楼层
有一个风险就是, mojo.js 是框架的内核, 如果对这个文件进行修改, 当前版本应该不会有问题,但是一旦palm更新版本, 这包括对内核的升级(应该会有结构性的变化), 这些工作就要重做..当然量并不是想像中的那么大
) f! F2 M4 K& y, R% a. n+ a# L0 y$ |1 D
我还是期待palm会有相应的API来达到对原生输入法的支持
回复 支持 反对

使用道具 举报

发表于 2009-11-3 15:32 | 显示全部楼层
啊,刚才忘了一句话( ]5 L! A9 Y& b

: z& K+ ]. D2 [, {8 x0 q7 G8 x  Z/ K目前期待的是:
# v$ S/ ]% g6 j9 o; C% \8 T9 y1. PALM再强悍点, 开放所有API  G: n8 F5 O5 q  H4 {1 u7 B. V$ X
2. PLAM直接倒闭吧" d# N' s- ~/ A' b" A) E$ y2 c
7 U) K+ P( C6 O) |1 D) C: W
回复 支持 反对

使用道具 举报

发表于 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 | 显示全部楼层
不懂技术的小白来摇旗呐喊!; J+ \( s3 |) U" [# Z# ~& V! k  e/ J
大家辛苦了,歇歇喝口水吧~
回复 支持 反对

使用道具 举报

发表于 2009-11-3 17:26 | 显示全部楼层
电脑崩溃了。一下午都没恢复5 ^% X2 q" v. j- H2 e" }* @( X' q# ]. M
晚上要对付电脑罗,暂时没办法实机测试了
3 w& j% o/ L0 p
5 K' n2 b7 O/ L* [# f[3G坛,手机登陆吹友吧发帖]
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-2 15:15 , Processed in 0.418423 second(s), 17 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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