找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 17850|回复: 169

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

[复制链接]
发表于 2009-11-2 00:19 | 显示全部楼层 |阅读模式
大家好, 近日用WebOS Doctor 看了Palm WebOS 的内部构做, 发现) c! }: c: p$ @. f& Q1 |
在palm/frameworks/mojo
4 N0 y% u+ A9 ^" T/ p' Z中有两个档案是常被呼叫的, 就是mojo.js, palmInitFramework191_15.js/ P4 u& O1 D. H9 U0 D6 L, }
7 `& K. E% q: @' r( T. y8 K
我的构想是如下, 我们先写一个keyOnPress, 看看当程式执行时,当键盘被按时,
% V/ H6 o" }3 d& K keyOnPress 会不会被呼叫, 如果会的话, 便好办了, 这就可以用keyOnPress
0 w, X- b; e/ G! Y( G: Q来呼叫一个转换中, 英文的Menu, 从而再做一个输入法切换的界面. / y7 E' x% k3 b) w* @1 O
如果keyOnPress 不能被呼叫的话, 那就继续想想如何做吧... ...
1 j. Q. P% u2 g. q: a7 n) M4 s9 Y- b! u. M" j" R+ i
大家的想法如何?
  m  N  S8 a6 Z3 r. g- X6 L
# z" B8 \- x% v6 t[ Edited by tedwong on 2009-11-2 00:20 ]# L4 G. z$ s& i4 F( B# g: D

) g) F: Q, Q4 p0 V/ w
' @9 t1 v; @% J" P5 W9 k初步版本已发布 : http://www.treo8.com/bbs/thread-142783-1-1.html
回复

使用道具 举报

发表于 2009-11-2 00:35 | 显示全部楼层
现在可以写出相应的小程序了么?7 E$ Z' ^, ?9 D0 y; g
& Y7 |3 B  R, {8 ^
相信这里很多朋友愿意一起协助测试...
回复 支持 反对

使用道具 举报

发表于 2009-11-2 09:28 | 显示全部楼层
好象事件的分发是在event.js里面的,
( m6 j/ X$ p6 W/ C& G, }3 L7 Vjava我不熟悉,不知道选择字符的界面能统一在这里生成吗?/ O! |& S2 I: ]$ a; R  y
* E5 [7 R$ u* w6 ~! X/ P
好象Widget没有一个统一的base class,
! F& i& c/ J6 @+ }不过即使在每个widget上面加事件处理和输入界面也不算麻烦,! |1 d- ~6 v  k7 `' }
ted先做个demo出来?我们照板煮碗
回复 支持 反对

使用道具 举报

发表于 2009-11-2 16:00 | 显示全部楼层
不知道Pre的那个On Screen Keyboard大家有没有留意。。
- H8 R# C5 p- F7 F5 x, U1 ^它就是按"Sym"按键就可以调出那个keyboard。。。
7 d% x! t9 L: b' W9 f) _这个是一个很重要的一点哦
1 a0 b8 f; v9 U详细可以参考这个。。。" i2 t4 ?( ^+ @6 l
http://www.webos-internals.org/wiki/On_Screen_Keyboard8 o4 m! A# Z- y% \1 S' ?! u
% C9 q% ~' ^& [
On an unmodified Pre if you press the "sym" key a scrollable 5x5 keyboard pops up full of alternate characters.
% @' N$ e* x: c+ v3 J/ `& G. zThis 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.js8 X+ t! n- |: g: N# q+ o
with the layout controlled by 3 files in /usr/palm/frameworks/mojo/submissions/191.15/templates/charselector
. k; X) S! n7 z8 ?) m1 y4 D0 Zthe 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
9 e+ {5 V( ^  `0 \$ X5 E5 OAt 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.( s2 q. ~9 x  F. N4 w" V3 B: O& H
At the next level, the framework's copy of widget_charselector.js needs to be modified to not close the keyboard after each keypress.
$ [8 C( k/ J9 e- yOn 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.% \: _; o3 f. n- W2 Q
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
6 w! e7 Z' y7 p; W重写, 如果我没有估计错误, 这是很容易达成的(今晚会再试). 如果成功将原厂的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里就有!  o8 r0 `+ `2 k/ s
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-2 20:47 | 显示全部楼层
原帖由 cet63 于 2009-11-2 20:40 发表
4 [# X0 \; H; G/ V! Z6 VWebOS的JS框架就叫MOJO,那个Mojo.js在SDK里就有!
2 f0 T/ _( }$ z. J  Q

9 g9 U+ b3 V$ y/ G对, 之所以他是WEBOS 的框架, 所以输入法也应该在这边入手, 不是吗?
回复 支持 反对

使用道具 举报

发表于 2009-11-2 21:08 | 显示全部楼层
是啊..如果能从最基本的框架里下手.那ui上的任何程序都可以进入 了啊..
  r% E, l. k  M  T' z/ e9 l; I3 O; X( _0 {  s
就是不确定是否能成功
回复 支持 反对

使用道具 举报

发表于 2009-11-2 22:01 | 显示全部楼层
附上原来的mojo.js.以防万一
6 o6 k, i$ v) \/ B( a" [3 H) w5 {2 A' I* P2 {1 H4 ^
位置在/usr/palm/frameworks/mojo/

本帖子中包含更多资源

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

×
回复 支持 反对

使用道具 举报

发表于 2009-11-2 22:30 | 显示全部楼层
模拟器mojo.js
9 G+ V2 T. D( d4 Q# n. h* b
! O# d' q+ T  B1 _+ G. r
3 v8 y2 }, z4 p; s$ s  J我改名为: 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都试了么?2 E' z% z$ r) R+ m9 `' T% x2 y5 [

" Z: `: ~. @' ~7 u. Z( J, G按说运行中是不需要检测这个的.只要更新ROM的时候才需要
  S8 \: c" x. B& ]' x5 K====================================================) U7 q" W- w/ G+ [$ K" z

8 }4 T7 L, Y1 U  B; O+ h0 o/usr/palm/frameworks/mojo/submissions/191.15/javascripts/keycodes.js
8 p6 S/ \! M8 t  w! y定义了键值
  1. /**3 K) |4 _- _" k" D  u( f
  2. * @name keycodes.js+ q7 Y1 [% w. g& M; ^. R
  3. * @fileOverview This file has character code value5 S4 Z) W& }: N2 Q- i6 S
  4. 4 i  |" C- U, o5 [: t3 U
  5. Copyright 2009 Palm, Inc.  All rights reserved.
    % f  Y& h1 E3 W6 [* J  x  G

  6. - b1 s1 z, I  N7 J1 K! F4 @
  7. */, l  P+ _0 d' }7 G* D9 `  ]0 `
  8. /**
    2 u( d! [2 m6 [& B; v# a  e
  9. @namespace Holds character code value (Refer to the actual source for values) and some useful key code checking methods.
    : ]* E4 s2 l3 ?* ^
  10. @description
    6 I) _& h6 j6 @$ v  [4 ]
  11. Holds character code value (Refer to the actual source for values) and some useful key code checking methods.
    " ]: l6 ~; c* G1 N8 g' E
  12. */
    $ _9 Y+ J; @! M( p3 C" O
  13. 7 i6 q1 |$ p, n- V
  14. Mojo.Char = {};4 Y% w  B; O% s8 D' q" c

  15. ; z% b& w, B- g7 Q
  16. Mojo.Char.backspace        =  8;$ e& Y  g6 T) \8 ^3 B% X9 T. X7 I
  17. Mojo.Char.tab                =  9;3 g; d1 j! y: z+ m- R& M* M( s7 s
  18. Mojo.Char.enter                = 13;
    6 w6 h. |: l) d2 w+ p6 R
  19. Mojo.Char.shift                = 16;
    $ _) Z8 S/ K2 x3 I% {) u' u: l3 Y
  20. Mojo.Char.opt                = 17;: J" D3 o5 j& {+ s
  21. Mojo.Char.ctrl                = 17;0 w0 p9 r0 F( \, M; Q1 O
  22. Mojo.Char.sym       = 17;0 J0 z- m( z1 R
  23. Mojo.Char.altKey        = 18;# {' ^: V) r! G  ]! x
  24. Mojo.Char.pause                = 19;, _" y- h# a0 e9 w
  25. Mojo.Char.breakKey        = 19;
    8 f. T, t  G6 o! L
  26. Mojo.Char.capsLock        = 20;3 p4 @0 C! i  C. P  O% V
  27. Mojo.Char.escape        = 27;
    ' x" e. A6 n( j" l# a- \
  28. Mojo.Char.spaceBar        = 32;
    7 N1 G3 e! v. j( T
  29. Mojo.Char.pageUp        = 33;
    - T" j$ L  ?% i3 d
  30. Mojo.Char.pageDown        = 34;
    4 ~! B/ j* Q7 T+ O* i
  31. Mojo.Char.end                = 35;
    ; v$ h  X" u/ q/ v# G+ r6 `
  32. Mojo.Char.home                = 36;$ W2 P  a9 Y6 S4 d' G/ v
  33. Mojo.Char.leftArrow        = 37;
    2 \- Q( Z: Y  ?$ m( x
  34. Mojo.Char.upArrow        = 38;% Q! K2 [  f; U# X, n& z! O' i* s
  35. Mojo.Char.rightArrow= 39;
    ( F+ f' f" n+ o! t' Y+ f
  36. Mojo.Char.downArrow        = 40;
    ) v! d. u. A: N; H: g# c) q
  37. Mojo.Char.insert        = 45;
    " T) u2 E/ T  r4 P# g
  38. Mojo.Char.deleteKey = 46;
    % F+ ^: P9 E6 s2 H
  39. Mojo.Char.zero= 48;5 d4 _- R8 Z  F
  40. Mojo.Char.one= 49;" O: O1 ~. P; o, L
  41. Mojo.Char.two= 50;
    : x2 _% T( w+ i/ D) p: U+ \
  42. Mojo.Char.three=51;
    ' y; S( o( X2 x  W
  43. Mojo.Char.four=        52;
    ! x* D! Y) O3 A$ N7 d0 t, p1 ]' O
  44. Mojo.Char.five=        53;' x! P7 D% t2 v, H) o2 z1 t
  45. Mojo.Char.six=        54;
    4 m, k0 k2 s1 x- Q
  46. Mojo.Char.seven=        55;- i- t# C9 q1 A
  47. Mojo.Char.eight=        56;
    " q0 R1 w! N9 {+ K# |: a0 b
  48. Mojo.Char.nine=        57;
    8 q( v7 X0 c* z; J( n2 j
  49. Mojo.Char.a=        65;% n, r, W2 D+ v4 G0 q
  50. Mojo.Char.b=        66;
    , K1 m( E9 ]5 N+ Z" T" T3 f7 |
  51. Mojo.Char.c=        67;% O  R! ]/ y, c5 e
  52. Mojo.Char.d=        68;
    / X, i3 R- \; K0 I
  53. Mojo.Char.e=        69;( l5 V) r" W- ]* ~1 S0 Y
  54. Mojo.Char.f=        70;
    : `( c' O4 z  j, ^
  55. Mojo.Char.g=        71;+ Z  |; \' a# U& d" V) X
  56. Mojo.Char.h=        72;
    8 t6 X9 Z9 `: |$ O6 z
  57. Mojo.Char.i=        73;, ^$ F$ }' e' o" |
  58. Mojo.Char.j=        74;7 S+ ^8 m6 T0 `& C
  59. Mojo.Char.k=        75;
    ( w" n6 ~" d. h1 b6 j4 g. o
  60. Mojo.Char.l=        76;: s5 t# @8 q' m! i! D
  61. Mojo.Char.m=        77;+ R5 B; l; h9 \3 K
  62. Mojo.Char.n=        78;5 p5 U6 k; ^. h
  63. Mojo.Char.o=        79;
      a$ f3 t3 n+ p! K/ X) ~9 ?
  64. Mojo.Char.p=        80;
    3 V: Y8 m4 C4 c' \: i1 d
  65. Mojo.Char.q=        81;1 }; W; m/ a1 ~% L8 {
  66. Mojo.Char.r=        82;
    % u; F2 O: C5 `: T1 L  S" m
  67. Mojo.Char.s=        83;
    7 t( X! R6 ^3 {4 M3 }0 Q1 H
  68. Mojo.Char.t=        84;
    3 n4 \: B3 E6 J& [7 D
  69. Mojo.Char.u=        85;: o8 w# E" ]4 \6 _/ @: ?- W
  70. Mojo.Char.v=        86;7 _9 j7 \( w! ], z9 M
  71. Mojo.Char.w=        87;
    ! y4 d- q4 P5 F1 I8 _0 W! ]
  72. Mojo.Char.x=        88;
    $ s0 T( \! n$ }
  73. Mojo.Char.y=        89;
    3 _' ?4 D) u# N2 P7 Y( H
  74. Mojo.Char.z=        90;& A0 o" T3 q) h. c8 r
  75. Mojo.Char.leftWindowKey=        91;9 C' j2 R( e- ~* R1 ~) Z; |" ]8 T
  76. Mojo.Char.rightWindowKey=        92;1 \% D5 N; E3 p7 L0 B( ~
  77. Mojo.Char.selectKey=        93;( E  j  R* s1 |3 {' g5 B" i- u
  78. Mojo.Char.numpad0=        96;
    : L3 W6 R& x7 J8 [4 A  R5 }
  79. Mojo.Char.numpad1=        97;
    / w1 d# ]: h! A; i7 ]6 }% |6 l# U
  80. Mojo.Char.numpad2=        98;" A; s# y  h( t& R8 `
  81. Mojo.Char.numpad3=        99;5 H8 {* }  y8 Y& ]( C
  82. Mojo.Char.numpad4=        100;
    ) g0 E( L- m! b  }& q! |
  83. Mojo.Char.numpad5=        101;! R5 T& O3 F4 {% }1 `) B; C, {
  84. Mojo.Char.numpad6=        102;
    1 P0 O9 s3 \3 z. S1 f# I
  85. Mojo.Char.numpad7=        103;
    ( a, M3 D) R1 a( r! p# H
  86. Mojo.Char.numpad8=        104;
    ; M: D7 c7 N* B, \, v
  87. Mojo.Char.numpad9=        105;
    / l% j" u0 z+ ]/ x" y' T
  88. Mojo.Char.multiply=        106;/ L5 H4 l: I( a; J) D
  89. Mojo.Char.add=        107;
    : N8 y0 ?* ~, i* t0 I9 B/ \, I
  90. Mojo.Char.subtract=        109;% e  l: Z* x) z% _5 A  R
  91. Mojo.Char.decimalPoint=        110;
    & T4 S# J% t0 K; E6 _4 S
  92. Mojo.Char.divide=        111;6 v# M* I: ~7 ^* t9 d; A
  93. Mojo.Char.f1=        112;" ?& m9 U+ S4 v1 \9 G
  94. Mojo.Char.f2=        113;" V- S: N- m' u" Z/ w
  95. Mojo.Char.f3=        114;4 F' o  k2 Z* d8 r$ d7 E# W+ M
  96. Mojo.Char.f4=        115;& `. z, B5 ?8 a- }/ V0 ~  }2 |
  97. Mojo.Char.f5=        116;
    2 r0 a3 R1 b2 ^* f  `9 s4 E0 ?' B# e
  98. Mojo.Char.f6=        117;
    / E; p0 D/ o/ t9 D
  99. Mojo.Char.f7=        118;3 p" H6 U' n3 C& @; \3 v; [
  100. Mojo.Char.f8=        119;- i4 s; M: L+ B. u3 @
  101. Mojo.Char.f9=        120;
    ; h) ]" c- E" T
  102. Mojo.Char.f10=        121;) W( p8 K5 h& m; s
  103. Mojo.Char.f11=        122;
    " m6 p  o% l* W! Z7 \6 I  \* F
  104. Mojo.Char.f12=        123;
    $ N4 D+ M" p$ h# L% F. ?' q: G# [
  105. Mojo.Char.numLock=        144;' k' j0 ^6 [& q, G* F8 [
  106. Mojo.Char.scrollLock=        145;
    4 ^2 ]: m9 l& O- d- S
  107. Mojo.Char.semiColon=        186;0 C: i& I' s6 `. U
  108. Mojo.Char.equalSign=        187;, j% Z8 b0 |7 P- E$ M" [- W" F
  109. Mojo.Char.comma=        188;9 @3 g& e& f" C% T) ~% P" ~
  110. Mojo.Char.dash=        189;! A( S9 U) t5 H- O0 _, b* h6 ^
  111. Mojo.Char.period=        190;0 }5 Q. F& C7 a) ^* o0 T/ c" Z9 `/ d- A
  112. Mojo.Char.forwardSlash=        191;
      ?  c% v1 P8 o( m3 {3 Z& V. x% z* p* \
  113. Mojo.Char.graveAccent=        192;
      i8 g6 W" t3 V5 i- ~' M" G
  114. Mojo.Char.openBracket=        219;
      T: l) W3 f7 A. c) I/ w
  115. Mojo.Char.backSlash=        220;1 W# }2 G, A& \. u9 d0 ?& n- G# P
  116. Mojo.Char.closeBracket=        221;
    , A5 W2 e: V! K6 G$ ?, _
  117. Mojo.Char.singleQuote=        222;$ v& }" U5 g$ Z- D
  118. 5 l4 b  U% i- V; H" H/ B
  119. Mojo.Char.metaKey = 231; //NEED THIS FOR META CUT/ COPY/ PASTE
    9 g( D, `% k- T
  120. ! s2 q9 `: {! r% i; R3 M

  121. 1 I; C/ j* N" D. \- {7 |5 f
  122. Mojo.Char.asciiZero = 48;
    : m+ u, r' f3 j, D* `, |( E% R
  123. Mojo.Char.asciiNine = 57;* n: t, F: G! x$ V: d" J
  124. : C' i  R! c9 D/ w6 \
  125. /* key determination */
    ( C  u: [' D5 d/ n" e, B2 }
  126. 9 m: B( B( [1 S3 K7 A& ^
  127. /**
    ! a5 G$ A$ e& k
  128. This functions returns true if `key` is the enter key.
    5 o) b  I; ^( [  C7 c

  129. % p: I1 Q( Y. A) {8 ]& w9 L
  130. @param        {int}        key                Key value to check+ c7 C, Y8 s/ F
  131. @return        {boolean}                true if key is the enter key; false otherwise$ I$ e9 n4 j, F
  132.   
    1 x0 g0 F5 b" s
  133. */7 _. Q; x% Y+ q2 C7 e7 L$ v
  134. Mojo.Char.isEnterKey = function(key) {) M! N" |; r% c: ^* z
  135.         if (key == Mojo.Char.enter) {+ A4 x4 E$ {  a! G; n
  136.                 return true;
    7 D; j: N. u+ K& a# h: y; g
  137.         }' g+ l. m2 B$ }. M3 B5 [
  138.         return false;
    # b6 y! u- ^, Z- ^
  139. };
    7 f: ~# H# {; |5 o) V7 C7 Q1 I
  140. $ r, [: D9 @2 V- W, r
  141. /**; P* H% Q9 ^1 g
  142. This functions returns true if `key` is the "delete" key.
    / |9 p* w9 i8 m, @# |& H% O  R

  143. 1 C; z, k* h' n7 L
  144. @param        {int}        key                Key value to check
    9 w4 U. A* q3 k  y$ _
  145. @return        {boolean}                true if key is the "delete" key; false otherwise8 b; c( c; H" u0 ~$ s
  146.   * m8 r3 u- `; y
  147. */2 W2 v9 y9 ?. r- v6 E6 \5 W
  148. Mojo.Char.isDeleteKey = function(key) {) i- l7 M9 P. m. k: ^
  149.         if (key == Mojo.Char.deleteKey || key == Mojo.Char.backspace) {% e5 P; O: C$ c
  150.                 return true;
    . a7 o* i" _' Z( I& H- A
  151.         }
    3 M. q! p; t! X: \! C- L
  152.         return false;6 V9 g! b3 G5 ?0 A+ b
  153. };
    0 t% m. V% C( b6 f4 z3 X

  154. 6 K- e! l0 v6 i' G/ q; a
  155. //Special list of keys HI has deemed commit items  J3 J' R5 u! ^2 n

  156. 3 P/ d/ G: y; h" d8 A
  157. Mojo.Char.isCommitKey = function(key) {. R6 T7 s4 K  X# E
  158.         //space, comma, semicolon7 B' j- J' e6 F4 q; U( ~$ t
  159.         if (key == 59 || key == Mojo.Char.semiColon || key == Mojo.Char.comma /*|| key == Mojo.Char.spaceBar */|| key == 44) {
    $ I; F" v9 o1 a
  160.                 return true;% j7 I, w2 o! y, {& S' R
  161.         }
    ; }- N/ P# a9 ]
  162.         return false;6 ?: {- O5 o( d* A6 L
  163. };5 n+ B4 Q9 L2 g

  164. 9 c# }& G. h& D1 [& |+ \
  165. /**@deprecated**/
    6 g7 U% T8 n7 x  U% O
  166. Mojo.Char.isValidWrittenChar = function(keyCode) {6 a) [3 d1 ~6 H( e5 Z9 j
  167.         var s = String.fromCharCode(keyCode);4 H4 F: d2 `& s% K  w. \' C  V3 @
  168.         var valid ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-+ !@#$%^&*()"'/?><.,=_";
    , L& e9 m4 T- I9 k
  169.         if( valid.indexOf(s) >= 0 ) {; {6 d* t7 [$ d- H# V8 g
  170.                 return s;
    % A+ m/ H& Y( U4 R
  171.         }- ~2 A/ z: P) W9 z9 _3 l1 A  Q
  172.         return null;, V4 e2 d3 l3 }
  173. };
    ! \' b9 h  F1 E3 w0 M  H

  174. , y7 ^/ P' q# Y4 \) X  B+ V) k
  175. Mojo.Char.isDigit = function(charCode) {; k+ u8 j6 S, F9 t# x3 S! q$ ]6 d
  176.         return charCode >= Mojo.Char.zero && charCode <= Mojo.Char.nine;+ K) z  E, b4 E
  177. };# }  H7 g; P; b& {' p) K$ c
  178. + v, A" E7 m3 R+ @: @5 t4 y
  179. //for keypress; in the browser, this sends the ascii code# P5 R5 z- q1 Y. `( X
  180. Mojo.Char.isValidWrittenAsciiChar = function(keyCode) {% M% ]8 @+ g+ ~$ M9 A
  181.         return (keyCode >= 32 && keyCode < 127); //127 is delete
    3 e% l4 W9 R5 w! Y
  182. };2 i# g" @% P( R# X% b4 j! ?* ?- ?
  183. # U7 @. \3 O2 D

  184. 8 B$ t+ V+ b) S& C4 g
  185. * r) B! k/ k4 O7 `/ y; C
  186. //for KEY UP OR KEY DOWN; in the browser this sends the windows key code
    1 D  S) g6 L5 @
  187. Mojo.Char.isValid = function(keyCode) {8 ~1 @7 D0 O) X( F- M7 ~
  188.         //parens keys then 0 key to Z and special chars like _ & key2 X9 l+ A4 Y, p7 K1 S
  189.         if ((keyCode === 0x20) || (keyCode >= 0x26 && keyCode <= 0x5F) ||
    ; Y- c% H1 K# R. e/ c5 M
  190.         //Multiply key to Divide key( P% {3 u3 K4 Y9 w2 C/ v6 m
  191.         (keyCode >= 0x6A && keyCode <= 0x6F) || ! w5 h) s/ b3 v# G/ }3 F
  192.         //';:' key to '`~' key
    ! [1 d: B8 F, _; E" A
  193.         (keyCode >= 0xBA && keyCode <= 0xC0) || ! d8 p' {6 J( X: f7 r
  194.         //'[{' key to miscellaneous characters9 A- l4 c. n, A) Z" j
  195.         (keyCode >= 0xDB && keyCode <= 0xDF) || + g6 c; I; }1 }" X( I: o% f, G6 [
  196.         // angle bracket key or the backslash key
    5 g2 S  T. i2 N) v
  197.         //and euro sign for QWERTZ
    4 w( e. b: ?. A! y, K
  198.         (keyCode === 0xE2) || (keyCode === 0x20AC)) {6 l" G: D" A0 Z# m, Q
  199.                 return true;
    4 i0 F/ U, ~. W' ]4 D4 i+ ?
  200.         }
    ) C9 [* ]4 B9 i) G3 n
  201.         return  false;
    ( H: S9 |- p2 @; A
  202. };
    5 ]4 g& n: F  M, ?2 }
  203. 3 H% Q8 R1 o1 ?$ d" {9 N, X  |' d1 t
复制代码

本帖子中包含更多资源

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

×
回复 支持 反对

使用道具 举报

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

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

在模拟器上替换成功也达到ted想要的效果了,: \5 {) R: ]. m4 n0 q  X% \
看来ted的这个方法是可以行的通的,
/ N! d/ j# X& d/ C; j就差时间和工作量了

本帖子中包含更多资源

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

×
回复 支持 反对

使用道具 举报

发表于 2009-11-3 12:15 | 显示全部楼层
也看到效果了, 期待更进一步的消息.
7 |8 X: t# R+ L8 d% ~$ d, b/ M使用Alt健来切换, 仅在模拟器中测试.
% A+ e; M: a/ m! G8 m
! w. F! E9 [+ X7 D5 E中文模式:
) z% _3 n+ A9 Q) n+ d  B: n2 s' w% \5 U, w

7 X; |  J: F% v, @2 k! v英文模式:8 D& ~4 n4 s7 W; |1 j" N2 o

本帖子中包含更多资源

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

×
回复 支持 反对

使用道具 举报

发表于 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 m4 ^' J. X1 |$ S
回复 支持 反对

使用道具 举报

发表于 2009-11-3 15:27 | 显示全部楼层
有一个风险就是, mojo.js 是框架的内核, 如果对这个文件进行修改, 当前版本应该不会有问题,但是一旦palm更新版本, 这包括对内核的升级(应该会有结构性的变化), 这些工作就要重做..当然量并不是想像中的那么大
& x# g& \: I% A% ?
. X/ k* {& R6 W我还是期待palm会有相应的API来达到对原生输入法的支持
回复 支持 反对

使用道具 举报

发表于 2009-11-3 15:32 | 显示全部楼层
啊,刚才忘了一句话! M) P# M4 {- C6 |- [

: F. |# f/ O9 g. b4 W$ O% g目前期待的是:( S  I( [4 ?. S2 R5 {
1. PALM再强悍点, 开放所有API
7 {- f9 r1 [: }, k1 O$ Q) p/ I8 M2. PLAM直接倒闭吧1 N; }0 p( ~! U% o

- T3 r- P3 ]" v7 d( L$ M
回复 支持 反对

使用道具 举报

发表于 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 | 显示全部楼层
不懂技术的小白来摇旗呐喊!3 O6 g6 ~  L. U! ?2 y0 @3 D
大家辛苦了,歇歇喝口水吧~
回复 支持 反对

使用道具 举报

发表于 2009-11-3 17:26 | 显示全部楼层
电脑崩溃了。一下午都没恢复* \( z( T( ?1 V5 f( R
晚上要对付电脑罗,暂时没办法实机测试了
! u: Q; w( q7 [6 j$ b4 |
; f% o) c* s; M- J& Y; y# x' x[3G坛,手机登陆吹友吧发帖]
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 00:17 , Processed in 0.389199 second(s), 16 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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