Compare commits
	
		
			7 Commits
		
	
	
		
			v1.3.1
			...
			add-more-p
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 2c355ec966 | |||
| a19bbdc870 | |||
| 8e0b4f05f8 | |||
| 1010b916ef | |||
| c475ed6619 | |||
| 687b260e29 | |||
| ecc46733da | 
							
								
								
									
										98
									
								
								data/keyboards/geometry/digits.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								data/keyboards/geometry/digits.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,98 @@
 | 
			
		||||
<?xml version="1.0"?>
 | 
			
		||||
<geometry version="0.90">
 | 
			
		||||
  <bounds x="0" y="10.000000" width="426.0000" height="296.5853"/>
 | 
			
		||||
  <section angle="0">
 | 
			
		||||
    <row orientation="1">
 | 
			
		||||
      <key name="AD01" oref="outline4" />
 | 
			
		||||
      <key name="AD02" oref="outline4" />
 | 
			
		||||
      <key name="AD03" oref="outline4" />
 | 
			
		||||
    </row>
 | 
			
		||||
  </section>
 | 
			
		||||
  <section angle="0">
 | 
			
		||||
    <row orientation="1">
 | 
			
		||||
      <key name="AC01" oref="outline4" />
 | 
			
		||||
      <key name="AC02" oref="outline4" />
 | 
			
		||||
      <key name="AC03" oref="outline4" />
 | 
			
		||||
    </row>
 | 
			
		||||
  </section>
 | 
			
		||||
  <section angle="0">
 | 
			
		||||
    <row orientation="1">
 | 
			
		||||
      <key name="AB01" oref="outline4" />
 | 
			
		||||
      <key name="AB02" oref="outline4" />
 | 
			
		||||
      <key name="AB03" oref="outline4" />
 | 
			
		||||
    </row>
 | 
			
		||||
  </section>
 | 
			
		||||
  <section angle="0">
 | 
			
		||||
    <row orientation="1">
 | 
			
		||||
      <key name="BKSP" oref="altline" />
 | 
			
		||||
      <key name="AB04" oref="outline4" />
 | 
			
		||||
      <key name="RTRN" oref="altline" />
 | 
			
		||||
    </row>
 | 
			
		||||
  </section>
 | 
			
		||||
  <outline id="outline2" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="37.46341" y="0.000000"/>
 | 
			
		||||
    <point x="37.46341" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="altline" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="48.39024" y="0.000000"/>
 | 
			
		||||
    <point x="48.39024" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline4" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="59.31707" y="0.000000"/>
 | 
			
		||||
    <point x="59.31707" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline5" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="59.31707" y="0.000000"/>
 | 
			
		||||
    <point x="59.31707" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline6" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="68.68292" y="0.000000"/>
 | 
			
		||||
    <point x="68.68292" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline7" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="88.97561" y="0.000000"/>
 | 
			
		||||
    <point x="88.97561" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline8" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="88.97561" y="0.000000"/>
 | 
			
		||||
    <point x="88.97561" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline9" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="109.2682" y="0.000000"/>
 | 
			
		||||
    <point x="109.2682" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline10" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="37.46341" y="0.000000"/>
 | 
			
		||||
    <point x="37.46341" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline13" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="79.60975" y="0.000000"/>
 | 
			
		||||
    <point x="79.60975" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="spaceline" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="120.5853" y="0.000000"/>
 | 
			
		||||
    <point x="120.5853" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
</geometry>
 | 
			
		||||
							
								
								
									
										105
									
								
								data/keyboards/geometry/phone-keypad.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								data/keyboards/geometry/phone-keypad.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,105 @@
 | 
			
		||||
<?xml version="1.0"?>
 | 
			
		||||
<geometry version="0.90">
 | 
			
		||||
  <bounds x="0" y="10.000000" width="426.0000" height="296.5853"/>
 | 
			
		||||
  <section angle="0">
 | 
			
		||||
    <row orientation="1">
 | 
			
		||||
      <key name="AD01" oref="outline2" />
 | 
			
		||||
      <key name="AD02" oref="outline2" />
 | 
			
		||||
      <key name="AD03" oref="outline2" />
 | 
			
		||||
      <key name="AD04" oref="outline2" />
 | 
			
		||||
      <key name="AD05" oref="outline2" />
 | 
			
		||||
    </row>
 | 
			
		||||
  </section>
 | 
			
		||||
  <section angle="0">
 | 
			
		||||
    <row orientation="1">
 | 
			
		||||
      <key name="AC01" oref="outline2" />
 | 
			
		||||
      <key name="AC02" oref="outline2" />
 | 
			
		||||
      <key name="AC03" oref="outline2" />
 | 
			
		||||
      <key name="AC04" oref="outline2" />
 | 
			
		||||
      <key name="AC05" oref="outline2" />
 | 
			
		||||
    </row>
 | 
			
		||||
  </section>
 | 
			
		||||
  <section angle="0">
 | 
			
		||||
    <row orientation="1">
 | 
			
		||||
      <key name="AB01" oref="outline2" />
 | 
			
		||||
      <key name="AB02" oref="outline2" />
 | 
			
		||||
      <key name="AB03" oref="outline2" />
 | 
			
		||||
      <key name="AB04" oref="outline2" />
 | 
			
		||||
      <key name="AB05" oref="outline2" />
 | 
			
		||||
    </row>
 | 
			
		||||
  </section>
 | 
			
		||||
  <section angle="0">
 | 
			
		||||
    <row orientation="1">
 | 
			
		||||
      <key name="BKSP" oref="altline" />
 | 
			
		||||
      <key name="AB06" oref="outline2" />
 | 
			
		||||
      <key name="SPCE" oref="spaceline" />
 | 
			
		||||
      <key name="RTRN" oref="outline7" />
 | 
			
		||||
    </row>
 | 
			
		||||
  </section>
 | 
			
		||||
  <outline id="outline2" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="37.46341" y="0.000000"/>
 | 
			
		||||
    <point x="37.46341" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="altline" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="48.39024" y="0.000000"/>
 | 
			
		||||
    <point x="48.39024" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline4" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="59.31707" y="0.000000"/>
 | 
			
		||||
    <point x="59.31707" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline5" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="59.31707" y="0.000000"/>
 | 
			
		||||
    <point x="59.31707" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline6" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="68.68292" y="0.000000"/>
 | 
			
		||||
    <point x="68.68292" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline7" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="88.97561" y="0.000000"/>
 | 
			
		||||
    <point x="88.97561" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline8" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="88.97561" y="0.000000"/>
 | 
			
		||||
    <point x="88.97561" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline9" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="109.2682" y="0.000000"/>
 | 
			
		||||
    <point x="109.2682" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline10" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="37.46341" y="0.000000"/>
 | 
			
		||||
    <point x="37.46341" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline13" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="79.60975" y="0.000000"/>
 | 
			
		||||
    <point x="79.60975" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="spaceline" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="120.5853" y="0.000000"/>
 | 
			
		||||
    <point x="120.5853" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
</geometry>
 | 
			
		||||
							
								
								
									
										126
									
								
								data/keyboards/geometry/url.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								data/keyboards/geometry/url.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,126 @@
 | 
			
		||||
<?xml version="1.0"?>
 | 
			
		||||
<geometry version="0.90">
 | 
			
		||||
  <bounds x="0" y="10.000000" width="426.0000" height="296.5853"/>
 | 
			
		||||
  <section angle="0">
 | 
			
		||||
    <row orientation="1">
 | 
			
		||||
      <key name="AD01" oref="outline2" />
 | 
			
		||||
      <key name="AD02" oref="outline2" />
 | 
			
		||||
      <key name="AD03" oref="outline2" />
 | 
			
		||||
      <key name="AD04" oref="outline2" />
 | 
			
		||||
      <key name="AD05" oref="outline2" />
 | 
			
		||||
      <key name="AD06" oref="outline2" />
 | 
			
		||||
      <key name="AD07" oref="outline2" />
 | 
			
		||||
      <key name="AD08" oref="outline2" />
 | 
			
		||||
      <key name="AD09" oref="outline2" />
 | 
			
		||||
      <key name="AD10" oref="outline2" />
 | 
			
		||||
      <key name="AE01" oref="outline6" />
 | 
			
		||||
      <key name="AE02" oref="outline2" />
 | 
			
		||||
      <key name="AE03" oref="outline6" />
 | 
			
		||||
      <key name="AE04" oref="outline6" />
 | 
			
		||||
      <key name="AE05" oref="outline6" />
 | 
			
		||||
      <key name="AE06" oref="outline6" />
 | 
			
		||||
    </row>
 | 
			
		||||
  </section>
 | 
			
		||||
  <section angle="0">
 | 
			
		||||
    <row orientation="1">
 | 
			
		||||
      <key name="AC01" oref="outline2" />
 | 
			
		||||
      <key name="AC02" oref="outline2" />
 | 
			
		||||
      <key name="AC03" oref="outline2" />
 | 
			
		||||
      <key name="AC04" oref="outline2" />
 | 
			
		||||
      <key name="AC05" oref="outline2" />
 | 
			
		||||
      <key name="AC06" oref="outline2" />
 | 
			
		||||
      <key name="AC07" oref="outline2" />
 | 
			
		||||
      <key name="AC08" oref="outline2" />
 | 
			
		||||
      <key name="AC09" oref="outline2" />
 | 
			
		||||
      <key name="AC10" oref="outline2" />
 | 
			
		||||
    </row>
 | 
			
		||||
  </section>
 | 
			
		||||
  <section angle="0">
 | 
			
		||||
    <row orientation="1">
 | 
			
		||||
      <key name="LFSH" oref="altline" />
 | 
			
		||||
      <key name="AB01" oref="outline2" />
 | 
			
		||||
      <key name="AB02" oref="outline2" />
 | 
			
		||||
      <key name="AB03" oref="outline2" />
 | 
			
		||||
      <key name="AB04" oref="outline2" />
 | 
			
		||||
      <key name="AB05" oref="outline2" />
 | 
			
		||||
      <key name="AB06" oref="outline2" />
 | 
			
		||||
      <key name="AB07" oref="outline2" />
 | 
			
		||||
      <key name="BKSP" oref="altline" />
 | 
			
		||||
    </row>
 | 
			
		||||
  </section>
 | 
			
		||||
  <section angle="0">
 | 
			
		||||
    <row orientation="1">
 | 
			
		||||
      <key keycode="0" name="ABC123" oref="altline" />
 | 
			
		||||
      <key name="I149" oref="altline" />
 | 
			
		||||
      <key name="SPCE" oref="spaceline" />
 | 
			
		||||
      <key name="AB08" oref="outline2" />
 | 
			
		||||
      <key name="RTRN" oref="outline7" />
 | 
			
		||||
    </row>
 | 
			
		||||
  </section>
 | 
			
		||||
  <outline id="outline2" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="37.46341" y="0.000000"/>
 | 
			
		||||
    <point x="37.46341" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="altline" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="48.39024" y="0.000000"/>
 | 
			
		||||
    <point x="48.39024" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline4" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="59.31707" y="0.000000"/>
 | 
			
		||||
    <point x="59.31707" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline5" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="59.31707" y="0.000000"/>
 | 
			
		||||
    <point x="59.31707" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline6" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="68.68292" y="0.000000"/>
 | 
			
		||||
    <point x="68.68292" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline7" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="88.97561" y="0.000000"/>
 | 
			
		||||
    <point x="88.97561" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline8" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="88.97561" y="0.000000"/>
 | 
			
		||||
    <point x="88.97561" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline9" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="109.2682" y="0.000000"/>
 | 
			
		||||
    <point x="109.2682" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline10" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="37.46341" y="0.000000"/>
 | 
			
		||||
    <point x="37.46341" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="outline13" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="79.60975" y="0.000000"/>
 | 
			
		||||
    <point x="79.60975" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
  <outline id="spaceline" corner-radius="1.000000">
 | 
			
		||||
    <point x="0.000000" y="0.000000"/>
 | 
			
		||||
    <point x="150.5853" y="0.000000"/>
 | 
			
		||||
    <point x="150.5853" y="52.44877"/>
 | 
			
		||||
    <point x="0.000000" y="52.44877"/>
 | 
			
		||||
  </outline>
 | 
			
		||||
</geometry>
 | 
			
		||||
@ -90,11 +90,17 @@
 | 
			
		||||
	    longname="Telugu (Inscript)" language="te"/>
 | 
			
		||||
 | 
			
		||||
  <!-- Common keyboards -->
 | 
			
		||||
  <keyboard id="digits" name="digits"
 | 
			
		||||
	    geometry="digits" symbols="special/digits"
 | 
			
		||||
	    longname="Digits" language="all"/>
 | 
			
		||||
  <keyboard id="number" name="number"
 | 
			
		||||
	    geometry="number-keypad" symbols="special/number"
 | 
			
		||||
	    longname="Numeric keypad" language="all"/>
 | 
			
		||||
  <keyboard id="phone" name="phone"
 | 
			
		||||
	    geometry="number-keypad" symbols="special/number"
 | 
			
		||||
	    geometry="phone-keypad" symbols="special/phone"
 | 
			
		||||
	    longname="Phone keypad" language="all"/>
 | 
			
		||||
  <keyboard id="url" name="url"
 | 
			
		||||
	    geometry="url" symbols="special/url"
 | 
			
		||||
	    longname="Uniform Resource Locator" language="all"/>
 | 
			
		||||
 | 
			
		||||
</keyboards>
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										39
									
								
								data/keyboards/symbols/special/digits.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								data/keyboards/symbols/special/digits.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,39 @@
 | 
			
		||||
<?xml version='1.0' encoding='ASCII' standalone='yes'?>
 | 
			
		||||
<symbols version="0.90">
 | 
			
		||||
  <key name="AD01">
 | 
			
		||||
    <symbol label="1">1</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AD02">
 | 
			
		||||
    <symbol label="2">2</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AD03">
 | 
			
		||||
    <symbol label="3">3</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC01">
 | 
			
		||||
    <symbol label="4">4</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC02">
 | 
			
		||||
    <symbol label="5">5</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC03">
 | 
			
		||||
    <symbol label="6">6</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AB01">
 | 
			
		||||
    <symbol label="7">7</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AB02">
 | 
			
		||||
    <symbol label="8">8</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AB03">
 | 
			
		||||
    <symbol label="9">9</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AB04">
 | 
			
		||||
    <symbol label="0">0</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="RTRN">
 | 
			
		||||
    <symbol keyval="65293" icon="key-enter">Return</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="BKSP">
 | 
			
		||||
    <symbol keyval="65288" icon="edit-clear-symbolic">BackSpace</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
</symbols>
 | 
			
		||||
@ -10,10 +10,10 @@
 | 
			
		||||
    <symbol label="3">3</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AD04">
 | 
			
		||||
    <symbol label="(">parenleft</symbol>
 | 
			
		||||
    <symbol label=".">period</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AD05">
 | 
			
		||||
    <symbol label=")">parenright</symbol>
 | 
			
		||||
    <symbol label=",">comma</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC01">
 | 
			
		||||
    <symbol label="4">4</symbol>
 | 
			
		||||
@ -25,7 +25,7 @@
 | 
			
		||||
    <symbol label="6">6</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC04">
 | 
			
		||||
    <symbol label="#">numbersign</symbol>
 | 
			
		||||
    <symbol label="/">slash</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC05">
 | 
			
		||||
    <symbol label="*">asterisk</symbol>
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										60
									
								
								data/keyboards/symbols/special/phone.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								data/keyboards/symbols/special/phone.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,60 @@
 | 
			
		||||
<?xml version='1.0' encoding='ASCII' standalone='yes'?>
 | 
			
		||||
<symbols version="0.90">
 | 
			
		||||
  <key name="AD01">
 | 
			
		||||
    <symbol label="1">1</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AD02">
 | 
			
		||||
    <symbol label="2">2</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AD03">
 | 
			
		||||
    <symbol label="3">3</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AD04">
 | 
			
		||||
    <symbol label="(">parenleft</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AD05">
 | 
			
		||||
    <symbol label=")">parenright</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC01">
 | 
			
		||||
    <symbol label="4">4</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC02">
 | 
			
		||||
    <symbol label="5">5</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC03">
 | 
			
		||||
    <symbol label="6">6</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC04">
 | 
			
		||||
    <symbol label="#">numbersign</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC05">
 | 
			
		||||
    <symbol label="*">asterisk</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AB01">
 | 
			
		||||
    <symbol label="7">7</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AB02">
 | 
			
		||||
    <symbol label="8">8</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AB03">
 | 
			
		||||
    <symbol label="9">9</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AB04">
 | 
			
		||||
    <symbol label="+">plus</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AB05">
 | 
			
		||||
    <symbol label="-">minus</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AB06">
 | 
			
		||||
    <symbol label="0">0</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="RTRN">
 | 
			
		||||
    <symbol keyval="65293" icon="key-enter">Return</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="SPCE">
 | 
			
		||||
    <symbol label=" ">space</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="BKSP">
 | 
			
		||||
    <symbol keyval="65288" icon="edit-clear-symbolic">BackSpace</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
</symbols>
 | 
			
		||||
							
								
								
									
										231
									
								
								data/keyboards/symbols/special/url.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										231
									
								
								data/keyboards/symbols/special/url.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,231 @@
 | 
			
		||||
<?xml version='1.0' encoding='ASCII' standalone='yes'?>
 | 
			
		||||
<symbols version="0.90">
 | 
			
		||||
  <key name="AD01">
 | 
			
		||||
    <symbol label="q">q</symbol>
 | 
			
		||||
    <symbol label="Q">Q</symbol>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <symbol label="1">1</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AD02">
 | 
			
		||||
    <symbol label="w">w</symbol>
 | 
			
		||||
    <symbol label="W">W</symbol>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <symbol label="2">2</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AD03">
 | 
			
		||||
    <symbol label="e">e</symbol>
 | 
			
		||||
    <symbol label="E">E</symbol>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <symbol label="3">3</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AD04">
 | 
			
		||||
    <symbol label="r">r</symbol>
 | 
			
		||||
    <symbol label="R">R</symbol>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <symbol label="4">4</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AD05">
 | 
			
		||||
    <symbol label="t">t</symbol>
 | 
			
		||||
    <symbol label="T">T</symbol>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <symbol label="5">5</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AD06">
 | 
			
		||||
    <symbol label="y">y</symbol>
 | 
			
		||||
    <symbol label="Y">Y</symbol>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <symbol label="6">6</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AD07">
 | 
			
		||||
    <symbol label="u">u</symbol>
 | 
			
		||||
    <symbol label="U">U</symbol>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <symbol label="7">7</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AD08">
 | 
			
		||||
    <symbol label="i">i</symbol>
 | 
			
		||||
    <symbol label="I">I</symbol>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <symbol label="8">8</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AD09">
 | 
			
		||||
    <symbol label="o">o</symbol>
 | 
			
		||||
    <symbol label="O">O</symbol>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <symbol label="9">9</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AD10">
 | 
			
		||||
    <symbol label="p">p</symbol>
 | 
			
		||||
    <symbol label="P">P</symbol>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <symbol label="0">0</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC01">
 | 
			
		||||
    <symbol label="a">a</symbol>
 | 
			
		||||
    <symbol label="A">A</symbol>
 | 
			
		||||
    <symbol label="@">at</symbol>
 | 
			
		||||
    <symbol label="~">asciitilde</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC02">
 | 
			
		||||
    <symbol label="s">s</symbol>
 | 
			
		||||
    <symbol label="S">S</symbol>
 | 
			
		||||
    <symbol label="#">numbersign</symbol>
 | 
			
		||||
    <symbol label="®">U00AE</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC03">
 | 
			
		||||
    <symbol label="d">d</symbol>
 | 
			
		||||
    <symbol label="D">D</symbol>
 | 
			
		||||
    <symbol label="$">dollar</symbol>
 | 
			
		||||
    <symbol label="£">U00A3</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC04">
 | 
			
		||||
    <symbol label="f">f</symbol>
 | 
			
		||||
    <symbol label="F">F</symbol>
 | 
			
		||||
    <symbol label="%">percent</symbol>
 | 
			
		||||
    <symbol label="€">EuroSign</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC05">
 | 
			
		||||
    <symbol label="g">g</symbol>
 | 
			
		||||
    <symbol label="G">G</symbol>
 | 
			
		||||
    <symbol label="&">ampersand</symbol>
 | 
			
		||||
    <symbol label="¥">U00A5</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC06">
 | 
			
		||||
    <symbol label="h">h</symbol>
 | 
			
		||||
    <symbol label="H">H</symbol>
 | 
			
		||||
    <symbol label="-">minus</symbol>
 | 
			
		||||
    <symbol label="^">asciicircum</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC07">
 | 
			
		||||
    <symbol label="j">j</symbol>
 | 
			
		||||
    <symbol label="J">J</symbol>
 | 
			
		||||
    <symbol label="_">underscore</symbol>
 | 
			
		||||
    <symbol label="°">degree</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC08">
 | 
			
		||||
    <symbol label="k">k</symbol>
 | 
			
		||||
    <symbol label="K">K</symbol>
 | 
			
		||||
    <symbol label="+">plus</symbol>
 | 
			
		||||
    <symbol label="=">equal</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC09">
 | 
			
		||||
    <symbol label="l">l</symbol>
 | 
			
		||||
    <symbol label="L">L</symbol>
 | 
			
		||||
    <symbol label="(">parenleft</symbol>
 | 
			
		||||
    <symbol label="{">braceleft</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AC10">
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <symbol label=")">parenright</symbol>
 | 
			
		||||
    <symbol label="}">braceright</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="RTRN">
 | 
			
		||||
    <symbol keyval="65293" icon="key-enter">Return</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="LFSH">
 | 
			
		||||
    <keysym keyval="65505" icon="key-shift">Shift_L</keysym>
 | 
			
		||||
    <keysym keyval="65505" icon="key-shift">Shift_L</keysym>
 | 
			
		||||
    <keysym keyval="65505" label="123">Shift_L</keysym>
 | 
			
		||||
    <keysym keyval="65505" label="URL">Shift_L</keysym>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AB01">
 | 
			
		||||
    <symbol label="z">z</symbol>
 | 
			
		||||
    <symbol label="Z">Z</symbol>
 | 
			
		||||
    <symbol label=",">comma</symbol>
 | 
			
		||||
    <symbol label="\">backslash</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AB02">
 | 
			
		||||
    <symbol label="x">x</symbol>
 | 
			
		||||
    <symbol label="X">X</symbol>
 | 
			
		||||
    <symbol label=""">quotedbl</symbol>
 | 
			
		||||
    <symbol label="/">slash</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AB03">
 | 
			
		||||
    <symbol label="c">c</symbol>
 | 
			
		||||
    <symbol label="C">C</symbol>
 | 
			
		||||
    <symbol label="'">quoteright</symbol>
 | 
			
		||||
    <symbol label="<">less</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AB04">
 | 
			
		||||
    <symbol label="v">v</symbol>
 | 
			
		||||
    <symbol label="V">V</symbol>
 | 
			
		||||
    <symbol label=":">colon</symbol>
 | 
			
		||||
    <symbol label=">">greater</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AB05">
 | 
			
		||||
    <symbol label="b">b</symbol>
 | 
			
		||||
    <symbol label="B">B</symbol>
 | 
			
		||||
    <symbol label=";">semicolon</symbol>
 | 
			
		||||
    <symbol label="=">equal</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AB06">
 | 
			
		||||
    <symbol label="n">n</symbol>
 | 
			
		||||
    <symbol label="N">N</symbol>
 | 
			
		||||
    <symbol label="!">exclam</symbol>
 | 
			
		||||
    <symbol label="[">bracketleft</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AB07">
 | 
			
		||||
    <symbol label="m">m</symbol>
 | 
			
		||||
    <symbol label="M">M</symbol>
 | 
			
		||||
    <symbol label="?">question</symbol>
 | 
			
		||||
    <symbol label="]">bracketright</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AB08">
 | 
			
		||||
    <symbol label=".">period</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="ABC123">
 | 
			
		||||
    <symbol label="URL">show-url</symbol>
 | 
			
		||||
    <symbol label="URL">show-url</symbol>
 | 
			
		||||
    <symbol label="ABC">show-letters</symbol>
 | 
			
		||||
    <symbol label="ABC">show-letters</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="I149">
 | 
			
		||||
    <symbol label="☺" icon="keyboard-mode-symbolic" tooltip="Setup">preferences</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="SPCE">
 | 
			
		||||
    <symbol label=" ">space</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="BKSP">
 | 
			
		||||
    <symbol keyval="65288" icon="edit-clear-symbolic">BackSpace</symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
 | 
			
		||||
<!-- Extra URL mode buttons -->
 | 
			
		||||
  <key name="AE01">
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <text label="https">https</text>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AE02">
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <text label="://">://</text>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AE03">
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <text label="www.">www.</text>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AE04">
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <text label=".com">.com</text>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AE05">
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <text label=".org">.org</text>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
  <key name="AE06">
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
    <text label=".net">.net</text>
 | 
			
		||||
    <symbol label=""></symbol>
 | 
			
		||||
  </key>
 | 
			
		||||
 | 
			
		||||
</symbols>
 | 
			
		||||
@ -2,10 +2,19 @@
 | 
			
		||||
<gresources>
 | 
			
		||||
  <gresource prefix="/sm/puri/squeekboard">
 | 
			
		||||
   <file compressed="true">style.css</file>
 | 
			
		||||
 | 
			
		||||
<!-- Keyboard layouts -->
 | 
			
		||||
   <file compressed="true" preprocess="xml-stripblanks">keyboards/geometry/compact.xml</file>
 | 
			
		||||
   <file compressed="true" preprocess="xml-stripblanks">keyboards/geometry/extended.xml</file>
 | 
			
		||||
   <file compressed="true" preprocess="xml-stripblanks">keyboards/geometry/digits.xml</file>
 | 
			
		||||
   <file compressed="true" preprocess="xml-stripblanks">keyboards/geometry/number-keypad.xml</file>
 | 
			
		||||
   <file compressed="true" preprocess="xml-stripblanks">keyboards/geometry/phone-keypad.xml</file>
 | 
			
		||||
   <file compressed="true" preprocess="xml-stripblanks">keyboards/geometry/url.xml</file>
 | 
			
		||||
 | 
			
		||||
<!-- Keyboard definitions -->
 | 
			
		||||
   <file compressed="true" preprocess="xml-stripblanks">keyboards/keyboards.xml</file>
 | 
			
		||||
 | 
			
		||||
<!-- Natural language keyboards -->
 | 
			
		||||
   <file compressed="true" preprocess="xml-stripblanks">keyboards/symbols/ar.xml</file>
 | 
			
		||||
   <file compressed="true" preprocess="xml-stripblanks">keyboards/symbols/as-inscript.xml</file>
 | 
			
		||||
   <file compressed="true" preprocess="xml-stripblanks">keyboards/symbols/be.xml</file>
 | 
			
		||||
@ -35,7 +44,13 @@
 | 
			
		||||
   <file compressed="true" preprocess="xml-stripblanks">keyboards/symbols/ug.xml</file>
 | 
			
		||||
   <file compressed="true" preprocess="xml-stripblanks">keyboards/symbols/us.xml</file>
 | 
			
		||||
   <file compressed="true" preprocess="xml-stripblanks">keyboards/symbols/zh-bopomofo.xml</file>
 | 
			
		||||
 | 
			
		||||
<!-- Special purpose keyboards -->
 | 
			
		||||
   <file compressed="true" preprocess="xml-stripblanks">keyboards/symbols/special/digits.xml</file>
 | 
			
		||||
   <file compressed="true" preprocess="xml-stripblanks">keyboards/symbols/special/number.xml</file>
 | 
			
		||||
   <file compressed="true" preprocess="xml-stripblanks">keyboards/symbols/special/phone.xml</file>
 | 
			
		||||
   <file compressed="true" preprocess="xml-stripblanks">keyboards/symbols/special/url.xml</file>
 | 
			
		||||
 | 
			
		||||
   <file>icons/key-enter.svg</file>
 | 
			
		||||
   <file>icons/key-shift.svg</file>
 | 
			
		||||
   <file>icons/keyboard-mode-symbolic.svg</file>
 | 
			
		||||
 | 
			
		||||
@ -75,8 +75,10 @@ struct _EekKeyboardPrivate
 | 
			
		||||
    GList *locked_keys;
 | 
			
		||||
    GArray *outline_array;
 | 
			
		||||
 | 
			
		||||
    /* Map key names to key objects: */
 | 
			
		||||
    /* Map key names to key objects */
 | 
			
		||||
    GHashTable *names;
 | 
			
		||||
    /* Map characters to symbols and levels */
 | 
			
		||||
    GHashTable *character_map;
 | 
			
		||||
 | 
			
		||||
    /* modifiers dynamically assigned at run time */
 | 
			
		||||
    EekModifierType num_lock_mask;
 | 
			
		||||
@ -405,6 +407,7 @@ eek_keyboard_finalize (GObject *object)
 | 
			
		||||
                      (GDestroyNotify) eek_modifier_key_free);
 | 
			
		||||
 | 
			
		||||
    g_hash_table_destroy (priv->names);
 | 
			
		||||
    g_hash_table_destroy (priv->character_map);
 | 
			
		||||
 | 
			
		||||
    for (i = 0; i < priv->outline_array->len; i++) {
 | 
			
		||||
        EekOutline *outline = &g_array_index (priv->outline_array,
 | 
			
		||||
@ -533,6 +536,8 @@ eek_keyboard_init (EekKeyboard *self)
 | 
			
		||||
    self->priv->modifier_behavior = EEK_MODIFIER_BEHAVIOR_NONE;
 | 
			
		||||
    self->priv->outline_array = g_array_new (FALSE, TRUE, sizeof (EekOutline));
 | 
			
		||||
    self->priv->names = g_hash_table_new (g_str_hash, g_str_equal);
 | 
			
		||||
    self->priv->character_map = g_hash_table_new_full (g_str_hash, g_str_equal,
 | 
			
		||||
        NULL, g_free);
 | 
			
		||||
    eek_element_set_symbol_index (EEK_ELEMENT(self), 0, 0);
 | 
			
		||||
    self->scale = 1.0;
 | 
			
		||||
}
 | 
			
		||||
@ -845,7 +850,7 @@ eek_keyboard_get_keymap(EekKeyboard *keyboard)
 | 
			
		||||
 | 
			
		||||
        /* Get the symbols for all the levels defined for the key, then
 | 
			
		||||
           pad it out with the first symbol for all levels up to the fourth. */
 | 
			
		||||
        for (i = 0; i < matrix->num_levels; ++i)
 | 
			
		||||
        for (i = 0; (i < matrix->num_levels) && (i < 4); ++i)
 | 
			
		||||
            syms[i] = eek_symbol_matrix_get_symbol(matrix, 0, i);
 | 
			
		||||
 | 
			
		||||
        while (i < 4) {
 | 
			
		||||
@ -857,14 +862,12 @@ eek_keyboard_get_keymap(EekKeyboard *keyboard)
 | 
			
		||||
           Generate strings for each of these groups, where an empty group is
 | 
			
		||||
           treated specially. */
 | 
			
		||||
 | 
			
		||||
        gchar *groups[2];
 | 
			
		||||
        gchar *groups[2] = {NULL, NULL};
 | 
			
		||||
        for (i = 0, j = 0; i < 2; ++i, j += 2) {
 | 
			
		||||
            if (syms[j] && syms[j + 1])
 | 
			
		||||
                groups[i] = g_strjoin(", ", eek_symbol_get_name(syms[j]),
 | 
			
		||||
                                            eek_symbol_get_name(syms[j + 1]),
 | 
			
		||||
                                            NULL);
 | 
			
		||||
            else
 | 
			
		||||
                groups[i] = "";
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /* Append a key definition to the symbols section. */
 | 
			
		||||
@ -890,3 +893,29 @@ eek_keyboard_get_keymap(EekKeyboard *keyboard)
 | 
			
		||||
    g_free(symbols);
 | 
			
		||||
    return keymap;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
eek_keyboard_register_symbol (EekKeyboard *keyboard,
 | 
			
		||||
                              EekSymbol   *symbol,
 | 
			
		||||
                              EekKey      *key,
 | 
			
		||||
                              guint        level)
 | 
			
		||||
{
 | 
			
		||||
    const gchar *label = eek_symbol_get_label(symbol);
 | 
			
		||||
 | 
			
		||||
    if (label) {
 | 
			
		||||
        EekKeyPress *key_press = g_malloc0 (sizeof(EekKeyPress));
 | 
			
		||||
        key_press->key = key;
 | 
			
		||||
        key_press->level = level;
 | 
			
		||||
 | 
			
		||||
        g_hash_table_insert (keyboard->priv->character_map,
 | 
			
		||||
                             (gpointer)label,
 | 
			
		||||
                             key_press);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
EekKeyPress *
 | 
			
		||||
eek_keyboard_get_key_press (EekKeyboard *keyboard,
 | 
			
		||||
                         gchar       *ch)
 | 
			
		||||
{
 | 
			
		||||
    return g_hash_table_lookup (keyboard->priv->character_map, ch);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -124,6 +124,11 @@ struct _EekModifierKey {
 | 
			
		||||
};
 | 
			
		||||
typedef struct _EekModifierKey EekModifierKey;
 | 
			
		||||
 | 
			
		||||
struct _EekKeyPress {
 | 
			
		||||
    EekKey *key;
 | 
			
		||||
    guint level;
 | 
			
		||||
};
 | 
			
		||||
typedef struct _EekKeyPress EekKeyPress;
 | 
			
		||||
 | 
			
		||||
EekKeyboard        *eek_keyboard_new (EekboardContextService *manager,
 | 
			
		||||
                                      EekLayout          *layout,
 | 
			
		||||
@ -198,5 +203,15 @@ void eek_keyboard_release_key(EekKeyboard *keyboard, EekKey *key, guint32 timest
 | 
			
		||||
gchar *             eek_keyboard_get_keymap
 | 
			
		||||
                                     (EekKeyboard        *keyboard);
 | 
			
		||||
 | 
			
		||||
void                eek_keyboard_register_symbol
 | 
			
		||||
                                     (EekKeyboard        *keyboard,
 | 
			
		||||
                                      EekSymbol          *symbol,
 | 
			
		||||
                                      EekKey             *key,
 | 
			
		||||
                                      guint               level);
 | 
			
		||||
 | 
			
		||||
EekKeyPress *       eek_keyboard_get_key_press
 | 
			
		||||
                                     (EekKeyboard        *keyboard,
 | 
			
		||||
                                      gchar              *ch);
 | 
			
		||||
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
#endif  /* EEK_KEYBOARD_H */
 | 
			
		||||
 | 
			
		||||
@ -1048,7 +1048,8 @@ find_key_by_position_key_callback (EekElement *element,
 | 
			
		||||
 | 
			
		||||
    if (b1 == b2 && b2 == b3) {
 | 
			
		||||
        data->key = EEK_KEY(element);
 | 
			
		||||
        return 0;
 | 
			
		||||
        if (eek_key_has_label(data->key))
 | 
			
		||||
            return 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    b1 = sign (&data->point, &points[2], &points[3]) < 0.0;
 | 
			
		||||
@ -1057,7 +1058,8 @@ find_key_by_position_key_callback (EekElement *element,
 | 
			
		||||
 | 
			
		||||
    if (b1 == b2 && b2 == b3) {
 | 
			
		||||
        data->key = EEK_KEY(element);
 | 
			
		||||
        return 0;
 | 
			
		||||
        if (eek_key_has_label(data->key))
 | 
			
		||||
            return 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return -1;
 | 
			
		||||
 | 
			
		||||
@ -749,6 +749,8 @@ symbols_end_element_callback (GMarkupParseContext *pcontext,
 | 
			
		||||
 | 
			
		||||
        if (data->label) {
 | 
			
		||||
            eek_symbol_set_label (symbol, data->label);
 | 
			
		||||
            eek_keyboard_register_symbol (data->keyboard, symbol, data->key,
 | 
			
		||||
                                          g_slist_length (data->symbols));
 | 
			
		||||
            g_free (data->label);
 | 
			
		||||
            data->label = NULL;
 | 
			
		||||
        }
 | 
			
		||||
@ -929,6 +931,7 @@ eek_xml_layout_real_create_keyboard (EekboardContextService *manager,
 | 
			
		||||
        return NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* Arrange the sections in the original coordinate system. */
 | 
			
		||||
    eek_layout_place_sections(keyboard);
 | 
			
		||||
 | 
			
		||||
    /* Use pre-defined modifier mask here. */
 | 
			
		||||
 | 
			
		||||
@ -305,10 +305,20 @@ settings_update_layout(EekboardContextService *context)
 | 
			
		||||
    EekboardContextServicePrivate *priv = EEKBOARD_CONTEXT_SERVICE_GET_PRIVATE(context);
 | 
			
		||||
 | 
			
		||||
    switch (priv->purpose) {
 | 
			
		||||
    case ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_DIGITS:
 | 
			
		||||
    case ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_PIN:
 | 
			
		||||
        keyboard_layout = g_strdup("digits");
 | 
			
		||||
        break;
 | 
			
		||||
    case ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_NUMBER:
 | 
			
		||||
    case ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_PHONE:
 | 
			
		||||
        keyboard_layout = g_strdup("number");
 | 
			
		||||
        break;
 | 
			
		||||
    case ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_PHONE:
 | 
			
		||||
        keyboard_layout = g_strdup("phone");
 | 
			
		||||
        break;
 | 
			
		||||
    case ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_URL:
 | 
			
		||||
        keyboard_layout = g_strdup("url");
 | 
			
		||||
        break;
 | 
			
		||||
    case ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_NORMAL:
 | 
			
		||||
    default:
 | 
			
		||||
        ;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -84,14 +84,13 @@ update_modifier_info (SeatEmitter *client)
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
send_fake_key (SeatEmitter *emitter,
 | 
			
		||||
               EekKeyboard *keyboard,
 | 
			
		||||
               guint    level,
 | 
			
		||||
               guint    keycode,
 | 
			
		||||
               guint    keyboard_modifiers,
 | 
			
		||||
               gboolean pressed,
 | 
			
		||||
               uint32_t timestamp)
 | 
			
		||||
{
 | 
			
		||||
    uint32_t proto_modifiers = 0;
 | 
			
		||||
    guint level = eek_element_get_level(EEK_ELEMENT(keyboard));
 | 
			
		||||
    uint32_t group = (level / 2);
 | 
			
		||||
 | 
			
		||||
    if (keyboard_modifiers & EEK_SHIFT_MASK)
 | 
			
		||||
@ -102,6 +101,38 @@ send_fake_key (SeatEmitter *emitter,
 | 
			
		||||
    zwp_virtual_keyboard_v1_modifiers(emitter->virtual_keyboard, proto_modifiers, 0, 0, group);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
send_fake_text (SeatEmitter *emitter,
 | 
			
		||||
                EekKeyboard *keyboard,
 | 
			
		||||
                const gchar *text,
 | 
			
		||||
                uint32_t timestamp)
 | 
			
		||||
{
 | 
			
		||||
    gchar *ptr = (gchar *)text;
 | 
			
		||||
 | 
			
		||||
    while (*ptr) {
 | 
			
		||||
        gchar buf[7];
 | 
			
		||||
        gunichar c = g_utf8_get_char(ptr);
 | 
			
		||||
        int n = g_unichar_to_utf8(c, buf);
 | 
			
		||||
        *(buf + n) = 0;
 | 
			
		||||
 | 
			
		||||
        EekKeyPress *key_press = eek_keyboard_get_key_press(keyboard, buf);
 | 
			
		||||
 | 
			
		||||
        if (key_press) {
 | 
			
		||||
            EekKey *key = key_press->key;
 | 
			
		||||
 | 
			
		||||
            send_fake_key (emitter, key_press->level, eek_key_get_keycode(key),
 | 
			
		||||
                           (key_press->level % 2) == 1 ? EEK_SHIFT_MASK : 0,
 | 
			
		||||
                           1, timestamp);
 | 
			
		||||
 | 
			
		||||
            send_fake_key (emitter, key_press->level, eek_key_get_keycode(key),
 | 
			
		||||
                           (key_press->level % 2) == 1 ? EEK_SHIFT_MASK : 0,
 | 
			
		||||
                           0, timestamp);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ptr = g_utf8_find_next_char(ptr, NULL);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
emit_key_activated (EekboardContextService *manager,
 | 
			
		||||
                    EekKeyboard     *keyboard,
 | 
			
		||||
@ -142,5 +173,12 @@ emit_key_activated (EekboardContextService *manager,
 | 
			
		||||
    emitter.virtual_keyboard = manager->virtual_keyboard;
 | 
			
		||||
    emitter.keymap = keyboard->keymap;
 | 
			
		||||
    update_modifier_info (&emitter);
 | 
			
		||||
    send_fake_key (&emitter, keyboard, keycode, modifiers, pressed, timestamp);
 | 
			
		||||
 | 
			
		||||
    const gchar *text = (gchar *)eek_text_get_text(symbol);
 | 
			
		||||
    if (text && pressed) {
 | 
			
		||||
        send_fake_text (&emitter, keyboard, text, timestamp);
 | 
			
		||||
    } else {
 | 
			
		||||
        guint level = eek_element_get_level(EEK_ELEMENT(keyboard));
 | 
			
		||||
        send_fake_key (&emitter, level, keycode, modifiers, pressed, timestamp);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user