261 HandleVirtualKeyLatchedEvent(aEventType, aCtrl, aEventData); |
261 HandleVirtualKeyLatchedEvent(aEventType, aCtrl, aEventData); |
262 } |
262 } |
263 break; |
263 break; |
264 case EEventVirtualKeyUnLatched: |
264 case EEventVirtualKeyUnLatched: |
265 { |
265 { |
266 UiLayout()->SignalOwner(ESignalKeyEvent, iNewDeadKeyBuf); |
266 HBufC* newCharBuf = HBufC::New( 2*iNewDeadKeyBuf.Length() ); |
|
267 if( newCharBuf ) |
|
268 { |
|
269 CPeninputGenericVkbLayout* layout |
|
270 = static_cast<CPeninputGenericVkbLayout*>( UiLayout() ); |
|
271 if( layout->IsEnableITIOnFSQ() ) |
|
272 { |
|
273 // If ITI is open, double same keys should be send for one dead key, |
|
274 // core will handle them as one key. |
|
275 newCharBuf->Des().Append( iNewDeadKeyBuf ); |
|
276 } |
|
277 newCharBuf->Des().Append( iNewDeadKeyBuf ); |
|
278 } |
|
279 |
|
280 // Submit DeadKey |
|
281 UiLayout()->SignalOwner(ESignalKeyEvent, *newCharBuf); |
|
282 delete newCharBuf; |
|
283 |
267 TBool deadKeyChange = EFalse; |
284 TBool deadKeyChange = EFalse; |
268 iLayoutContext->SetData(EAkninputDataTypeLatchedSet, &deadKeyChange); |
285 iLayoutContext->SetData(EAkninputDataTypeLatchedSet, &deadKeyChange); |
269 iNewDeadKeyBuf = KNullDesC; |
286 iNewDeadKeyBuf = KNullDesC; |
270 } |
287 } |
271 break; |
288 break; |
290 { |
307 { |
291 TInt latchedFlag = CPeninputDataConverter::AnyToInt |
308 TInt latchedFlag = CPeninputDataConverter::AnyToInt |
292 (iLayoutContext->RequestData(EAkninputDataTypeLatchedSet)); |
309 (iLayoutContext->RequestData(EAkninputDataTypeLatchedSet)); |
293 if(latchedFlag) |
310 if(latchedFlag) |
294 { |
311 { |
295 HBufC* newCharBuf = HBufC::New( aEventData.Length() + iNewDeadKeyBuf.Length() ); |
312 HBufC* newCharBuf = HBufC::New( aEventData.Length() + 2*iNewDeadKeyBuf.Length() ); |
296 if( newCharBuf ) |
313 if( newCharBuf ) |
297 { |
314 { |
|
315 CPeninputGenericVkbLayout* layout |
|
316 = static_cast<CPeninputGenericVkbLayout*>( UiLayout() ); |
|
317 if( layout->IsEnableITIOnFSQ() ) |
|
318 { |
|
319 // If ITI is open, double same keys should be send for one dead key, |
|
320 // core will handle them as one key. |
|
321 newCharBuf->Des().Append( iNewDeadKeyBuf ); |
|
322 } |
298 newCharBuf->Des().Append( iNewDeadKeyBuf ); |
323 newCharBuf->Des().Append( iNewDeadKeyBuf ); |
299 newCharBuf->Des().Append( aEventData ); |
324 newCharBuf->Des().Append( aEventData ); |
300 } |
325 } |
301 |
326 |
302 UnLatchDeadKey(iNewDeadKeyBuf); |
327 UnLatchDeadKey(iNewDeadKeyBuf); |
303 |
328 |
304 TBool deadKeyChange = EFalse; |
329 TBool deadKeyChange = EFalse; |
305 iLayoutContext->SetData(EAkninputDataTypeLatchedSet, &deadKeyChange); |
330 iLayoutContext->SetData(EAkninputDataTypeLatchedSet, &deadKeyChange); |
306 |
331 |
307 // Submit DeadKey + Space or Enter at the same time |
332 // Submit DeadKey + Space or Enter at the same time |
308 UiLayout()->SignalOwner(ESignalKeyEvent,*newCharBuf); |
333 |
|
334 if( newCharBuf != NULL ) |
|
335 { |
|
336 UiLayout()->SignalOwner(ESignalKeyEvent,*newCharBuf); |
|
337 } |
309 iNewDeadKeyBuf = KNullDesC; |
338 iNewDeadKeyBuf = KNullDesC; |
310 delete newCharBuf; |
339 delete newCharBuf; |
311 } |
340 } |
312 } |
341 } |
313 break; |
342 break; |
1828 { |
1857 { |
1829 TBuf<16> deadKey(KNullDesC); |
1858 TBuf<16> deadKey(KNullDesC); |
1830 TKeyEvent* event = (TKeyEvent*) aEventData.Ptr(); |
1859 TKeyEvent* event = (TKeyEvent*) aEventData.Ptr(); |
1831 deadKey.Append(event->iCode); |
1860 deadKey.Append(event->iCode); |
1832 |
1861 |
1833 CPeninputGenericVkbLayout* layout |
|
1834 = static_cast<CPeninputGenericVkbLayout*>( UiLayout() ); |
|
1835 TInt latchedFlag = CPeninputDataConverter::AnyToInt( |
1862 TInt latchedFlag = CPeninputDataConverter::AnyToInt( |
1836 iLayoutContext->RequestData(EAkninputDataTypeLatchedSet)); |
1863 iLayoutContext->RequestData(EAkninputDataTypeLatchedSet)); |
1837 if(latchedFlag) |
1864 if(latchedFlag) |
1838 { |
1865 { |
1839 // Update the new and old DeadKey buffer |
1866 // Update the new and old DeadKey buffer |
1840 iOldDeadKeyBuf = iNewDeadKeyBuf; |
1867 iOldDeadKeyBuf = iNewDeadKeyBuf; |
1841 iNewDeadKeyBuf = deadKey; |
1868 iNewDeadKeyBuf = deadKey; |
1842 |
1869 |
1843 // When type another DeadKey, submit the previous one. |
1870 HBufC* newCharBuf = HBufC::New( 2*iOldDeadKeyBuf.Length() ); |
1844 if ( layout->IsEnableITIOnFSQ() ) |
1871 if( newCharBuf ) |
1845 { |
1872 { |
1846 UiLayout()->SignalOwner( ESignalKeyEvent, iNewDeadKeyBuf ); |
1873 CPeninputGenericVkbLayout* layout |
1847 } |
1874 = static_cast<CPeninputGenericVkbLayout*>( UiLayout() ); |
1848 else |
1875 if( layout->IsEnableITIOnFSQ() ) |
1849 { |
1876 { |
1850 UiLayout()->SignalOwner( ESignalKeyEvent, iOldDeadKeyBuf ); |
1877 // If ITI is open, double same keys should be send for one dead key, |
1851 } |
1878 // core will handle them as one key. |
|
1879 newCharBuf->Des().Append( iOldDeadKeyBuf ); |
|
1880 } |
|
1881 newCharBuf->Des().Append( iOldDeadKeyBuf ); |
|
1882 } |
|
1883 |
|
1884 // Submit old DeadKey |
|
1885 UiLayout()->SignalOwner(ESignalKeyEvent, *newCharBuf); |
|
1886 delete newCharBuf; |
|
1887 |
1852 // Unlatch the previous DeadKey |
1888 // Unlatch the previous DeadKey |
1853 UnLatchDeadKey(iOldDeadKeyBuf); |
1889 UnLatchDeadKey(iOldDeadKeyBuf); |
1854 |
1890 |
1855 |
1891 |
1856 } |
1892 } |
1859 iNewDeadKeyBuf = deadKey; |
1895 iNewDeadKeyBuf = deadKey; |
1860 |
1896 |
1861 // Set DeadKey state to latched |
1897 // Set DeadKey state to latched |
1862 TBool deadKeyChange = ETrue; |
1898 TBool deadKeyChange = ETrue; |
1863 iLayoutContext->SetData(EAkninputDataTypeLatchedSet, &deadKeyChange); |
1899 iLayoutContext->SetData(EAkninputDataTypeLatchedSet, &deadKeyChange); |
1864 |
1900 } |
1865 if ( layout->IsEnableITIOnFSQ() ) |
|
1866 { |
|
1867 UiLayout()->SignalOwner( ESignalKeyEvent, iNewDeadKeyBuf ); |
|
1868 } |
|
1869 } |
|
1870 |
|
1871 // Send the char to FEP |
|
1872 // Not submit the DeadKey when latch it. |
|
1873 // UiLayout()->SignalOwner( ESignalKeyEvent, iNewDeadKeyBuf ); |
|
1874 } |
1901 } |
1875 |
1902 |
1876 // --------------------------------------------------------------------------- |
1903 // --------------------------------------------------------------------------- |
1877 // CPeninputCommonLayout::HandleVirtualKeyUpEvent |
1904 // CPeninputCommonLayout::HandleVirtualKeyUpEvent |
1878 // (Handle virtual key up event). |
1905 // (Handle virtual key up event). |
1919 = static_cast<CPeninputGenericVkbLayout*>( UiLayout() ); |
1946 = static_cast<CPeninputGenericVkbLayout*>( UiLayout() ); |
1920 if ( layout->IsEnableITIOnFSQ() ) |
1947 if ( layout->IsEnableITIOnFSQ() ) |
1921 { |
1948 { |
1922 TBuf<KKeyCodeSize> buf; |
1949 TBuf<KKeyCodeSize> buf; |
1923 TKeyEvent* event = (TKeyEvent*) aEventData.Ptr(); |
1950 TKeyEvent* event = (TKeyEvent*) aEventData.Ptr(); |
1924 buf.Append(event->iCode); |
1951 buf.Append(event->iCode); |
1925 UiLayout()->SignalOwner( ESignalKeyEvent, buf ); |
1952 |
|
1953 HBufC* newCharBuf = HBufC::New( iNewDeadKeyBuf.Length() + buf.Length() ); |
|
1954 if( newCharBuf ) |
|
1955 { |
|
1956 newCharBuf->Des().Append( iNewDeadKeyBuf ); |
|
1957 newCharBuf->Des().Append( buf ); |
|
1958 } |
|
1959 |
|
1960 // Submit DeadKey + Key at the same time |
|
1961 UiLayout()->SignalOwner(ESignalKeyEvent,*newCharBuf); |
|
1962 |
|
1963 delete newCharBuf; |
|
1964 |
1926 return ETrue; |
1965 return ETrue; |
1927 } |
1966 } |
1928 |
1967 |
1929 // Get the accent char |
1968 // Get the accent char |
1930 HBufC* newCharBuf = HBufC::NewL(1); |
1969 HBufC* newCharBuf = HBufC::NewL(1); |